Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
微服务是可以独立部署、水平扩展、独立访问(或者有独立的数据库)的服务单元,springcloud就是这些微服务的大管家,采用了微服务这种架构之后,项目的数量会非常多,springcloud做为大管家需要管理好这些微服务,自然需要很多小弟来帮忙。
主要的小弟有:Spring Cloud Config、Spring Cloud Netflix(Eureka、Hystrix、Zuul、Archaius...)、Spring Cloud Bus、Spring Cloud Consul、Spring Cloud Security、Spring Cloud Stream、Spring Cloud Task、Spring Cloud Zookeeper等具体可参考官网。
Spring Cloud Eureka:
Spring Cloud Eureka是基于Spring Cloud Netflix微服务套件中的一部分,基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。
服务注册中心:Eureka提供的服务端,提供服务发现与注册的功能。
(1)失效剔除:默认每60秒将当前清单中超时90秒没有续约的服务剔除
(2)自我保护:Eureka Servce在运行期间,会统计失败的比例在15分钟之内是否低于85%,如果出现低于Eureak Servce会将当前注册的信息保护起来。
服务提供者:提供服务的应用,将自己注册到Eureka的服务端。
(1)在启动的收发送REST请求将自己注册到Eureak服务端
(2)在集群的情况下多个注册中心通过相互注册的形式来达到注册中心列表信息的一致。在注册到其中一台注册中心时由于多个注册中心已经相互注册,所以该注册中心会把消息转发给其他的注册中,达到信息的一致
(3)在注册完成之后默认每30秒像注册中心发送消息告诉注册中心我还活着别把我从注册中心列表剔除,如果90秒内都没收到心跳服务会把该服务从注册中心剔除。但是如果注册中心在短时间内丢失过多的服务时(因网络原因或者其他原因)会进入自我保护模式(不会注销任何服务),在网络故障恢复后service会自动退出自我保护模式。
服务消费者:消费者从服务注册中心获取服务列表,从而使消费者可以知道去何处调用其所需的服务。
(1)获取服务,在我们启动服务消费者的时候,它会发送一个REST请求到注册中,来获取已注册的服务清单。获取服务是消费者的基础,所以必须确保eureka.client.fetch-registry=true(默认就是true)服务清单默认30秒更新一次
(2)服务调用Ribbon默认采用轮询的方式进行调用,从而实现客户端的负载均衡
Spring Cloud Ribbon:
Spring Cloud Ribbon是一个基于HTTP和Tcp的客户端负载均衡工具,它基于Netflix Ribbon实现。
Spring Cloud Hystrix:
Spring Cloud Hystrix容错管理组件,实现断路器模式,帮助服务依赖出现的延迟和为故障提供强大的容错能力。具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能。
在Hystrix底层中大量使用了RxJava(观察者-订阅者模式)
Spring Cloud Feign
Spring Feign集成了Ribbon和Hystrix,它还提供了一种声明式的web服务客户端定义式
Spring Cloud Zuul
后续补上.....