微服务开发

第一天 d:

Ribbon负载均衡:

 Ribbon的工作流程是什么呢?

按照一下图中运行:

1.先发送了请求到RibbonLoadBalancedClient中。

2.再痛过获取到的url中的地址id,传送到了DynamicServerListLoadBalanced中。

3.这时 Eureka server 获取到了请求。

4.这时也会返回到服务对象,返回到了DynamicServerListLoadBalanced。

5.这时,返回的服务负载回到了IRule中,从而进行了负载均衡,选择出了其中之一的服务接口

6.选出了其中之一的服务接口,回到了 RibbonLoadBalancedClient。

7.这是就会把url进行了修改从而变了一个地址。

8.最后对那个地址进行了发送请求。

在Ribbon负载均衡的规则,是IRule。那么它是有哪些规则呢?

在这里面RandomRule:是一个随机规则,而ZoneAvoidanceRule:是一个默认值规则。(因为在ClientConfigEnableRoundRule 中有轮询规则) 

 这里有比较详细的几个规则。

所以如何修改负载均衡的规则:

这里有两个方法:

1.在application中注入一个IRule的Bean。(是在消费端的application),这是一种全局部署。

@Bean
public IRule RandomRule(){
     return new RandomRule();
}

2.在消费端的application.yml 也加入了新的配置。

userservice:#提供端的服务名
   ribbon:
       NFLoadBalancerRuleClassName:com.netflix.loadbalancer.RandomRlue #负载均衡

 第二种方法是可以用于特定服务的,不同于第一种的全局部署。

接下来,介绍一下饥俄加载:

因为在Ribbon中采用的是懒加载,所以在第一次访问LoadBalanceClient,从而导致第一次的请求时间会很长,而饥俄加载则会在项目启动时,进行预热,降低第一次访问的时间消耗。

所以以下的饥饿加载可以解决这个问题。

ribbon:
   eager-load:
      enable:true #饥饿加载
        clients:userservice #对于指定的服务进行饥饿加载。
这一节主要是关于Ribbon的,可能在日常较小的项目中,用不太上,但在大公司的网站上有着较多的用处。