1、负载均衡的过程
2、具体的Ribbon负载过程
过程:首先通过RestTemplate发起请求,负载均衡拦截器拦截请求,拿到名称user-server("http://user-server/user/")后,将名称发送到动态服务拦截器,动态服务拦截器通过与eureka服务注册中心交互,拿到名称为user-server的客户端ip和端口,返回的是一个列表。然后是通过IRule规则类(轮询类),选择某个服务。然后再有RibbonLoadBanlancerClient修改请求地址,将请求的服务名称换为IP和端口在发送请求。
IRule接口的实现类:
3、IRule切换负载均衡的规则方式:
(1):第一种bean:第一种bean是全局配置(就是一个微服务1里面,会请求其他的微服务,这个请求的数目很多,微服务1请求其他每种不同的微服务有不同的负载均衡方式,如:轮询,随机等等。如果通过全局配置,那么所有的微服务都只能通过配置的这一种方式,不符合某些微服务的要求。)
(2):通过yml文件配置,每种请求服务通过自己的请求服务名称,在yml文件中配置自己独属的负载均衡规则。
(3):当同时存在 bean 中定义的负载均衡方法和 YML 文件中配置的负载均衡方法时,Spring Cloud 会优先使用 bean 中定义的负载均衡方法
4、Ribbon饥饿加载(程序启动的时候就加载)(默认是懒加载(第一次访问的时候加载))