1.简介
SpringCloud将现在非常流行的一些技术整合到一起,实现了配置管理、服务发现、智能路由、负载均衡、熔断器、控制总线、集群状态等功能 。
2.Eureka注册中心
2.1原理图
Eureka:服务注册中心
服务提供者:启动后向Eureka注册自己的信息
客户端消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发给消费者并定期更新
心跳(续约):服务提供者定期通过HTTP方式向Eureka刷新自己的状态
2.2注册中心失效剔除和自我保护
失效剔除
服务注册中心在启动时会创建一个定时任务,默认每隔一段时间(默认60s)将当前清单中超时(默认90s)没有续约的服务剔除。
自我保护
当一个服务未按时进行心跳续约时,Eureka会统计最近15分钟心跳失败的服务实例的比例是否超过了85%,若超过该比例,Eureka会把当前实例的注册信息保护起来,不予剔除。
3.负载均衡Ribbon
Ribbon是Netflix发布的负载均衡器,为Ribbon配置服务提供者地址列表后,Ribbon就可基于负载均衡算法(如轮询、随机等)自动帮助服务消费者去请求。
4.Hystrix
服务器支持的线程和并发数有限,请求一直阻塞会导致服务器资源耗尽,从而导致所有其它服务不可用。Hystrix用于隔离访问远程服务,防止出现级联失败。
线程隔离
Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将立即拒绝,默认不采用排队。
服务降级
用户的请求故障时,不会被阻塞,至少可以看到一个执行结果
服务熔断
Closed:关闭状态,所有请求都正常访问
Open:熔断器打开,所有请求都会被降级,Hystrix会对请求情况计数,当一定时间内失败请求百分比达到阈值,则触发熔断,熔断器完全打开。默认失败比例阈值是50%,请求次数最少不低于20次
Half Open:半开状态,不是永久的,断路器打开后会进入休眠时间(默认5s)。随后断路器会自动进入半开状态。此时会释放部分请求通过,若这些请求都是健康的,则会关闭断路器,否则继续保持打开,再次进行休眠计时
5.Gateway网关
Gateway是一系列的过滤器,通过这些过滤器可以将客户端发送请求转发(路由)到对应的微服务。Gateway是加在整个微服务最前沿的防火墙和代理器,隐藏微服务结点IP端口信息,从而加强安全防护。
路由:由一个ID、一个目的URL、一组断言工厂、一组Filter组成,如果路由断言为真,说明请求URL和配置路由匹配。
断言:Gateway中的语言函数输入类型是ServerWebExchange,允许开发者去定义匹配来自于HTTP Request中的任何信息。
过滤器:分为Gateway Filter和Global Filter,会对请求和响应进行修改处理。
6.Config分布式配置中心
支持将配置文件放在配置服务的本地,也支持放在远程git仓库(Github、码云)。