SpringCloud成神之路(二)------Ribbon

简单介绍下Ribbon

Ribbon是Netflix发布的负载均衡器,默认提供很多负载均衡的算法,在Spring Cloud的体系中主要的作用是对服务的消费(从注册中心中获取服务器的信息,之后经过负载均衡的算法去调用相应的服务器)

Ribbon 的工作方式

这里写图片描述
该方法通过RESTful进行请求,简单点讲就是使用了一个拦截器,在调用RestTemplate的时候拦截url进行解析完成服务的调用.
这里写图片描述

为服务消费者整合Ribbon

为服务添加如下配置

@Configuration
public class MyConfig {
    @Bean
    @LoadBalanced
    public RestTemplate loadTemplate() {
        return new RestTemplate();
    }

    @Primary
    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

@LoadBalanced该注解表示在加载RestTemplate的时候引入LoadBalance的加载

  • Ribbon就是通过RESTful对服务进行调用,经过LoadBalanced加工之后
    @Autowired
    @LoadBalanced
    private RestTemplate restTemplate;
    @Autowired
    DiscoveryClient discoveryClient;



    @GetMapping("consumer")
    public String dc() {
        return restTemplate.getForObject("http://eureka-client/dc", String.class);
    }
  • Ribbon在实现REST请求的时候加了一层连接器,将内部的服务名解析了出来.

开始测试

  • 启动两个Eureka-Client(负载均衡)两个Eureka-Server(高可用注册中心)启动一个Ribbon消费者
    这里写图片描述
  • 请求接口检测负载均衡的效果
    这里写图片描述
    这里写图片描述
    如果两次请求出现1 和 2 来回切换则表示负载均衡配置成功.

自定义ribbon配置

回来啦,由于业务需求研究了下ribbon的自定义配置
这里写图片描述
上文主要说的是,通过更改配置文件可以完成自定义的ribbon配置
这里写图片描述
这里简单的讲了下配置的规则
以此是,项目名称,ribbon,使用的规则,再加上使用的规则的详细的类名称.
这里写图片描述
查看ribbon的源码可以发现ribbon已经提供了很多默认的规则,这里我们可以测试下:使用randomrule(随机分配)ribbon默认的负载方式是轮询,这里我们将负载方式改成随机.来看一下效果

eureka-client:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

在项目的配置文件下添加上文内容来更改ribbon的负载方式.
启动eureka-server,eureka-client(两台,测试轮询)服务.
这里写图片描述
测试结果正常出现随机去访问两台机器那就代表更改ribbon的负载方式成功.

更多配置有待更新

这里就先这样吧我也是醉了,这个基本书上怎么讲的都是Ribbon的源码啊…………需要的时候再看吧.

猜你喜欢

转载自blog.csdn.net/qq_19663899/article/details/80057157
今日推荐