电机控制器电路板布局布线参考指导(七)电流检测模块布局布线
     
 
Spring Cloud——LoadBalancer
 
  
 
 
一、负载均衡(LoadBalance)
 
负载均衡(Load Balance),简单的说就是将用户的请求分摊到多个服务上,从而使系统达到高可用性,常见的负载均衡有软件Nginx、LVS,硬件F5等。Spring Cloud LoadBalancer是由Spring Cloud官网提供的一个开源的、简单易用的客户端负载均衡器,它包含在Spring Cloud Commons中用来替换以前的Ribbon组件。想比较于Ribbon,Spring Cloud LoadBalancer不仅能够支持RestTemplate,还支持WebClient(WebClient是Spring Web Flux中提供的功能,可以实现响应式异步请求)
 
1.LoadBalancer本地负载均衡客户端 VS Nginx服务端负载均衡区别
 
Nginx是服务器负载均衡,客户端所有请求都会交给Nginx,然后由Nginx实现转发请求,即负载均衡是由服务端实现的。LoadBalancer本地负载均衡,在调用微服务接口时候,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。
 
 
二、LoadBalancer
 

 
LoadBalancer工作步骤如下: 
  - 第一步:先从
ConsulServer查询并拉取服务列表,知道了它有多个服务,每个服务实现是完全一样的,默认轮询调用谁都可以正常执行。 - 第二步:按照指定的负载均衡策略从
server取到的服务注册列表中由客户端自己选择一个地址,所以LoadBalancer是一个客户端的负载均衡器。 
 
 
1.Spring RestTemplate as a LoadBalancer Client
 
- 第一步,在服务调用方加入
LoadBalancer组件:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-loadbalancer</artifactId>
</dependency>
  - 第二步,赋予
RestTemplate负载均衡的能力:@Configuration
public class RestTemplateConfig {
    
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}
  
 
2.编码使用DiscoveryClient动态获取所有上线的服务列表
 
 
3.从默认的轮询,切换为随机算法
 
@Configuration
@LoadBalancerClient(
        
        value = "cloud-payment-service", configuration = RestTemplateConfig.class)
public class RestTemplateConfig {
    @Bean
    @LoadBalanced 
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
    @Bean
    ReactorLoadBalancer<ServiceInstance> randomLoadBalancer(Environment environment,
                                                            LoadBalancerClientFactory loadBalancerClientFactory) {
        String name = environment.getProperty(LoadBalancerClientFactory.PROPERTY_NAME);
        return new RandomLoadBalancer(loadBalancerClientFactory.getLazyProvider(name, ServiceInstanceListSupplier.class), name);
    }
}