1.Eureka:服务注册与发现
2.Ribbon:实现负载均衡,从一个服务的多台机器中选择一台
*通过Spring Cloud Ribbon的封装,我们在微服务架构中使用客户端负载均衡调用只需要如下两步:
- 服务提供者只需要启动多个服务实例并且注册到一个注册中心或是多个相关联的服务注册中心
- 服务消费者直接通过调用被@LoadBalanced注解修饰过的RestTemplate来实现面向服务的接口调用
3.Feign:基于动态代理机制,根据注解和选择的机器。拼接请求url地址,发送请求调用其他服务接口
*Fegin是和Ribbon以及Eureka紧密协作的
1)首先Ribbon会从Eureka Client里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口
2)然后Ribbon就可以使用默认的Round Robin算法,从中选择一台机器
3)Fegin就会针对这台机器,构造并发起请求
4.Hystrix:提供线程池,不同的服务走不同的线程池,实现不同服务调用的隔离,避免服务器雪崩
1)Hystrix具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能
2)什么是服务器雪崩: 主业务不依赖的某些辅助类服务变得不可靠进而导致主业务所调用的核心服务受牵连直至各个上游依赖者连同崩溃的现象
5.Zuul:网关管理。由Zuul网关转发请求给对应的服务
1)Spring Cloud Zuul通过与Spring Cloud Eureka进行整合,将自身注册为Eureka服务治理下的应用,同时从Eureka中获得了所有其他微服务的实例信息