admin管理员组

文章数量:1608020

在客户端负载均衡中,所有客户端节点都维护着自己要访问的服务端清单,而这些服务端的清单来自于服务注册中心(比如 Eureka)。在客户端负载均衡中也需要心跳去维护服务端清单的健康性,只是这个步骤需要与服务注册中心配合完成。

通过 Spring Cloud Ribbon 的封装,我们在微服务架构中使用客户端负载均衡调用只需要如下两步:

  • 服务提供者只需要启动多个服务实例并且注册到一个注册中心或是多个相关联的服务注册中心

  • 服务消费者直接通过调用被 @LoadBalanced 注解修饰过的 RestTemplate 来实现面向服务的接口调用

4. Hystrix(熔断保护器)

==================

熔断器,容错管理工具,旨在通过熔断机制控制服务和第三方库的节点,从而对延迟和故障提供更强大的容错能力。

提供线程池不同的服务走不同的线程池,实现了不同服务调用的隔离,避免了服务器雪崩的问题。

在微服务架构中,存在着那么多的服务单元,若一个单元出现故障,就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定。为了解决这样的问题,产生了断路器等一系列的服务保护机制

在分布式架构中,当某个服务单元发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,而不是长时间的等待。这样就不会使得线程因调用故障服务被长时间占用不释放,避免了故障在分布式系统中的蔓延

Hystrix 具备服务降级、服务熔断、线程和信号隔离、请求缓存、请求合并以及服务监控等强大功能

Hystrix 使用舱壁模式实现线程池的隔离,它会为每一个依赖服务创建一个独立的线程池,这样就算某个依赖服务出现延迟过高的情况,也只是对该依赖服务的调用产生影响,而不会拖慢其他的依赖服务

5. Feign(REST 转换器)

==================

基于动态代理机制,根据注解和选择的机器,拼接请求 url 地址,发起请求。Feign 的关键机制是使用了动态代理

  • 首先,对某个接口定义了 @FeignClient 注解,Feign 就会针对这个接口创建一个动态代理

  • 接着调用接口的时候,本质就是调用 Feign 创建的动态代理

  • Feign 的动态代理会根据在接口上的 @RequestMapping 等注解,来动态构造要请求的服务 Java 开源项目【ali1024.coding/public/P7/Java/git】 的地址

  • 针对这个地址,发起请求、解析响应

Feign 是和 Ribbon 以及 Eureka 紧密协作的

  • 首先 Ribbon 会从 Eureka Client 里获取到对应的服务注册表,也就知道了所有的服务都部署在了哪些机器上,在监听哪些端口

  • 然后 Ribbon 就可以使用默认的 Round Robin 算法,从中选择一台机器

  • Feign 就会针对这台机器,构造并发起请求

6. Config(分布式配置)

===========

本文标签: 架构最新CloudSpring