SpringCloud的五大组件
- Eureka
- Ribbon
- Hystrix
- Zuul
- Config
一、Eureka
作用是实现服务治理,即服务注册与发现。
Eureka服务器相当于一个中介,负责管理、记录服务提供者的信息。服务调用者不需要自己寻找服务 ,而是把需求告诉Eureka
,然后Eureka会把符合你需求的服务告诉你。同时,服务提供方与Eureka之间通过 “心跳” 机制进行监控,当某个服务提供方出现问题,Eureka自然会把它从服务列表中剔除。
这就实现了服务的自动注册、发现、状态监控。
架构原理:
-
Eureka:就是服务注册中心(可以是一个集群),对外暴露自己的地址
-
提供者:启动后向Eureka注册自己信息(地址,提供什么服务)
-
消费者:向Eureka订阅服务,Eureka会将对应服务的所有提供者地址列表发送给消费者,并且定期更新
-
心跳(续约):提供者定期通过HTTP方式向Eureka刷新自己的状态
工作原理解析:
二、Ribbon
Spring Cloud Ribbon的作用是提供负载均衡策略,是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等。Ribbon内置可插拔、可定制的负载均衡组件。
三、Hystrix
Hystix是Netflflix开源的一个延迟和容错库,用于隔离访问远程服务,防止出现级联失败。
服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。
Hystrix为每个依赖服务调用分配一个小的线程池,如果线程池已满调用将被立即拒绝,默认不采用排队,加速失败判定时间。用户的请求将不再直接访问服务,而是通过线程池中的空闲线程来访问服务,如果线程池已满,或者请求超时,则会进行降级处理。
四、Zuul
Zuul具有api网关,路由,负载均衡等多种作用。相当于网络服务架构的大门,所有的网络请求都必须通过网关转到具体的服务。
主要功能:
- 路由:Zuul可以根据请求的URL路由到不同的服务实例或集群,使得客户端只需要知道网关的地址,而无需了解每个服务实例的具体地址。
- 过滤:Zuul可以对请求和响应进行各种过滤操作,如身份认证、安全验证、流量控制、日志记录等,从而保证请求的安全性和质量。
- 负载均衡:Zuul可以根据不同的负载均衡策略,将请求分发到不同的服务实例,从而提高系统的可用性和性能。
- 监控和统计:Zuul可以收集并展示各个服务实例的性能指标、错误率、请求量等数据,帮助运维人员及时发现和解决问题。
- 动态路由:Zuul可以根据服务实例的状态变化自动调整路由策略,从而实现高可用性和负载均衡。
五、Config
作用是提供的一个分布式配置管理工具,它的作用是集中管理微服务系统的配置文件,为微服务系统提供外部化的配置支持。
主要功能:
- 集中管理配置文件:Spring Cloud Config 可以将各个微服务系统的配置文件集中管理,实现配置文件的统一管理,便于维护和更新。
- 配置文件的版本控制:Spring Cloud Config 支持 Git、SVN、本地文件系统等多种配置存储方式,可以轻松实现配置文件的版本控制。
- 动态刷新配置:Spring Cloud Config 支持动态刷新配置,即在不重启应用的情况下,实时更新配置文件,保证配置文件的实时性和一致性。
- 安全性管理:Spring Cloud Config 提供了多种安全认证方式,如基于用户名和密码的认证、基于公钥和密钥的认证等,保证配置文件的安全性。
- 高可用性和可扩展性:Spring Cloud Config 支持多节点部署,通过服务注册和发现机制实现负载均衡和故障转移,保证了配置中心的高可用性和可扩展性。