<!--负载均衡是指将负载分摊到多个执行单元中,常见的负载均衡有两种方式,一种是独立进程单元,通过负载均衡策略将请求转发到不同的执行单元中,例如nginx
另外一种是将负载均衡逻辑以代码的形式封装到服务消费者的客户端,服务消费者维护一份服务提供者的信息列表,有了信息列表通过负载均衡策略分摊到多个服务
提供者,以此实现均衡负载。-->
<!--Ribbon是Netflix公司的开源负载均衡组件,属于上述第二种方式实现均衡负载。Ribbon实现负载均衡有两种方式,一种是和RestTempplate结合,一种是和Feign相结合
Feign声明式调用-->
/**
* 源码分析
* Ribbon负载均衡主要通过LoadBalancerClient来实现,LoadBalancerClient具体交给ILoadBalancer去处理,ILoadBalancer通过 配置IRule和IPing等,向
* Client每个10秒ping一次,进而检查是否需要更新注册列表信息,在得到注册列表信息之后再通过IRule策略进行均衡负载
*/
/**
*RestTemplate
* RestTemplate是spring resources中访问第三方RESTful api接口的网络请求框架
* RestTemplate是用来消费REST服务的,所以RestTemplate得主要方法都与REST的http协议的一些方法紧密联系,例如HEAD,GET,POST,PUT,DELETE,OPTIONS等
* RestTemplate使用很简单,他支持xml和json数据格式,默认实现序列化,可直接转化为java bean
*
*/
/**
* LoadBalancerClient简介
* 负载均衡的核心类LoadBalancerClient,LoadBalancerClient可以获取负载均衡的服务提供者的实例信息
* ServiceInstance instance = client.choose("Eureka-Client");
* instance.getServiceId()+"===="+instance.getHost()+"====="+instance.getPort();
* 负载均衡器LoadBalancerClient是从Eureka client获得服务注册列表信息,并将列表信息缓存一份,在LoadBalancerClient调用choose方法时,根据策略
* 选择一个服务,从而进行负载均衡。
* LoadBalancerClient也可以不通过client获取服务列表,这时需要自己维护一份服务注册列表信息
*/
/**
* Ribbon负载均衡的客户端为LoadBalancerClient。在spring cloud项目中,负载均衡器默认会从Eureka Client获取服务注册列表,并缓存一份,根据缓存的
* 服务注册列表信息,可以通过LoadBalancerClient来选择不同的服务实例,从而实现负载均衡,如果禁止Ribbon从Client获取注册列表信息,则需要自己去维
* 护一份注册列表信息。根据自己维护服务注册列表信息,Ribbon也可以实现均衡负载
*/
配置方法
/**
* 1.添加依赖spring-cloud-starter-ribbon
*
* 2.配置应用名称
*
* 3.配置服务注册地址
*
* 4.开启负载均衡
* 只需要在IOC容器中注入RestTemplate Bean,通过@LoadBalanced开启负载均衡
*
* 5.注入@Autowired
* private RestTemplate template;
* RestTemplate方法中uri只需要写服务名即可
*
*/