【随笔记】SpringCloud
框架集合,拥有SpringBoot的开发便利性及庞大的用户基数。
组件
-
spring cloud netflix
NetFlix OSS 开源组件集合,包括Eureka、Hystrix、Ribbon、Feign、Zuul核心组件
-
Eureka :尤里卡,服务治理组件,包括注册中心,客户端的服务发现机制;
-
Hystrix:服务熔断器,实现了断路模式,提供服务出错及延迟发生的容错能力;
-
解决一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就持续等待呗调用者的响应,或者迟迟得不到响应;当更多的服务请求到这些资源就会导致堆积进而发成连锁的雪崩;
-
Hystrix断路器有三种模式:完全打开、半开、关闭 +完全打开:一段时间内达到一定的次数无法调用,并且多次重复尝试没有得到回复的响应,那么断路器完全打开,之后的请求不会到达该服务; 半开:短时间内只要有恢复的迹象,就会重新将少量请求发给该服务,如果正常响应请求,断路器就会关闭; 关闭:服务一直处于正常状态,hystrix就会关闭,服务正常调用;
-
-
Ribbon:负载均衡的服务调用组件,具有多种负载均衡调用模式;
-
Feign: 基于Ribbon和Hystrix的声明式服务调用组件;
-
Zuul:API网关组件,对所有配置的请求提供路由及过滤功能;
-
spring cloud bus
消息总线,使用轻量级消息代理链接分布式系统的所有节点,做到分布式系统中消息流转,也可能通过总线刷新集群中的服务配置。通常使用Kafka或者RabbitMQ来进行消息总线。 配合spring cloud config进行配置刷新,可以将多组服务实例的配置进行统一刷新;
-
spring cloud consul
服务治理组件
-
spring cloud security
安全工具包,可以配置在Zuul上,实现负载均衡器OAuth2客户端及登录认证;
-
spring cloud sleuth
应用的分布式请求链跟踪,支持Zipkin、HTace和基于日志(ELK)的跟踪;
-
sping cloud stream
轻量级时间驱动微服务框架,可以使用简单的声明式模型来发送及接受消息,主要使用Apache Kafka及RabbitMQ;
-
spring cloud Task
快速构建短暂、有限数据处理任务的微服务框架,用于向应用中添加功能性和非功能性的特性。
-
spring cloud Zookeeper
服务治理组件
-
srping cloud Gateway
API网关组件,对请求提供过滤和路由能力,主要用来替代Zuul网关;
-
spring cloud OpenFeign
基于Ribbon和Hystrix的声明式服务调用组件,可以动态的创建基于Spring MVC注解接口,实现服务调用;
-
spring cloud config
微服务分布式架构中,由于服务数量多,那么使用spring cloud config就可以进行分布式配置管理,可以支持配置本地,也可以远程Git仓库存放;
-
组件中有两种角色
-
server
-
client
-
Spring Cloud 与dubbo区别
-
Spring Cloud 是基于客户端发现的服务注册、Dubbo是基于服务端发现的服务注册;
-
客户端发现:代表应用技术(Eureka),客户端连接注册中心,注册中心拥有所有客户端的直接地址,中间不需要代理接入;弊端就是需要客户端去找到服务,选择服务;简单说当服务实例启动的时候,他的网络地址被注册到服务注册中心,当实例停止的时候,该地址从服务注册中心移除。服务实例的注册关系使用心跳定期刷新,客户端获得一个服务实例的列表,自己选择去访问那个实例;
-
服务端发现:代表(Zookeeper、Nginx、Kubernetes),服务之间通过代理连接,相互隐藏不可见;也就是说客户端通过负载均衡向服务发送请求,负载均衡器查询服务注册中心并路由每个请求到可用的服务实例;
-
共同点:服务实例需要向服务注册中心进行注册和注销。
-
-
服务调用方式,Spring Cloud 使用的是HTTP Rest API;Dubbo使用的是RPC框架;
-
注册中心的能力上,Spring Cloud使用的Eureka,Zookeeper,consul;Dubbo使用的是Zookerper;
-
框架能力集:Spring Cloud更加完善,例如Zuul, Hystrix等等。