Spring Cloud中可以使用RestTemplate+Ribbon的解决方案来将负载均衡以代码的形式封装到客户端中。
通过查阅官方文档可以知道,只需要在程序的IoC容器中注入一个restTemplate的bean,并在这个Bean上加@LoadBalanced注解就开启了Ribbon的负载均衡功能:
@Configuration public class RibbonConfig { @Bean @LoadBalanced RestTemplate restTemplate() { return new RestTemplate(); } }
LoadBalancerClient是从Eureka Client中获取服务的注册信息的,并将这些服务注册信息缓存了一份。,在LoadBalancedClient调用choose方法的时候,更具负载均衡策略选择一个服务实例信息,从而进行了负载均衡。它也可以不从Eureka Client中获取注册列表信息,这时候就需要自己去维护一份服务注册列表信息,但通常都不会这样做:
stores: ribbon: listOfServers: baidu.com.google.com ribbon: eureka: enabled: false