SpringCloud升級之途2020.0.x版-21.SpringCloudLoadBalancer介绍插图

系列产品商品编号具体地址:https://Github.com/HashZhang/Spring-cloud-scaffold/tree/master/spring-cloud-iiford

大伙儿运用 Spring Cloud 官方网网详细介绍的 Spring Cloud LoadBalancer 作为大家的手机上手机客户端负载均衡设备

Spring Cloud LoadBalancer状况

Spring Cloud LoadBalancer是一个app客户端负载均衡设备,相近Ribbon,但是由于Ribbon早就进到维修保养方法,并且Ribbon 2并不与Ribbon 1相互之间兼容,因而 Spring Cloud套餐内容在Spring Cloud Commons新新项目中,再加上了Spring cloud Loadbalancer作为新的负载均衡设备,并且做了向前兼容,即便你的工程项目中再度用 Spring Cloud NETflix 休闲服(包括Ribbon,Eureka,Zuul,Hystrix这种)使你的项目中有这类借助,你还是能够运用简约的配备,把ribbon换为Spring Cloud LoadBalancer。

负载均衡设备在哪里运用?

Spring Cloud 中内部微服务架构构架开启默认 是 http 规定,重要依据下面三种 API:

  • RestTemplate:同歩 http API

  • WebClient:进程响应式网站 http API

  • 三方app客户端封裝,例如 openfeign

倘若最新项目中加入了 spring-cloud-loadbalancer 的借助并且配备打开了,那么会自主在对应的 Bean 中加上负载均衡设备的特性。

  • 对于 RestTemplate,会自动对所有 @LoadBalanced 注解装饰设计的 RestTemplate Bean 提高 Interceptor 从而再添加了负载均衡设备的特性。

  • 对于 WebClient,会自主创建 reactorLoadBalancerExchangeFilterFunction,我们可以依据加上ReactorLoadBalancerExchangeFilterFunction会加上负载均衡设备的特性。

  • 对于三方app客户端,一般无需大伙儿额外配备什么。

这类使用的案例,会在我们系列升级完最后的检验一部分看到。

Spring Cloud LoadBalancer 结构详细介绍

产品系列之前的信息大伙儿提到了 NamedContextFactory,Spring Cloud LoadBalancer 这里也是运用了这类体系创建了不一样分布式架构运用不一样的 Spring Cloud LoadBalancer 配备。相关重要进行是 @LoadBalancerClient@LoadBalancerClients 这两个注解,以及 NamedContextFactory.Specification 的进行 LoadBalancerClientSpecificationNamedContextFactory 的进行 LoadBalancerClientFactory。如下图所表明:

SpringCloud升級之途2020.0.x版-21.SpringCloudLoadBalancer介绍插图1

  1. 可以 依据 loadbalancer.client.name 这一特性得到现如今要搭建的 Bean 是哪个分布式架构的

  2. 可以 掌握默认 配备是 LoadBalancerClientConfiguration,再查看它里面的源代码我们可以掌握重要校准两个 Bean:

    1. ReactorLoadBalancer,负载均衡设备,因为有 @ConditionalOnMissingBean 因而 可以被拆换,这就是我们的扩展点

    2. ServiceInstanceSupplier,给与实例信息的 Supplier,因为有 @ConditionalOnMissingBean 因而 可以被拆换,这就是我们的扩展点

  3. Specification 为 LoadBalancerSpecification,再分析其开启可以 掌握,可以依据 @LoadBalancerClient@LoadBalancerClientsLoadBalancerClientConfiguration 的基础上额外特殊配备。