美文网首页
Ribbon 客户端负载均衡

Ribbon 客户端负载均衡

作者: 磨飞 | 来源:发表于2019-11-01 23:12 被阅读0次
写在前面:最好的文档是官网和源码。

一般来说负载均衡,分俩种。一种属于集中式负载均衡,在服务器和客户端之间提供独立的代理实现负载,有硬件的(如F5),也有软件的(Nginx);一种属于客户端负载均衡,客户端自己根据请求做负载,其实Ribbon就是Netflix开源的一种客户端负载均衡的工具。

Ribbon主要模块

  • ribbon-balancer:负载均衡模块,可独立使用。内置的负载均衡算法都在里面,其实也可以自己实现IRule,自定义负载均衡策略
  • ribbon-eureka:集成Eureka的包
  • ribbon-core:核心包。
  • ribbon-httpclient: 基于 Apache HttpClient 封装的REST客户端,集成了 ribbon-balancer 模块。
  • ribbon-transport:基于Netty实现多协议的支持,比如:Http,Tcp,Udp等。
  • ribbon-example:Ribbon代码的使用示例。

Ribbon的单独使用

  • maven依赖
<dependency>
      <groupId>com.netflix.ribbon</groupId>
      <artifactId>ribbon</artifactId>
      <version>2.2.5</version>
</dependency>
<dependency>
      <groupId>com.netflix.ribbon</groupId>
      <artifactId>ribbon-core</artifactId>
      <version>2.2.5</version>
</dependency>
<dependency>
      <groupId>com.netflix.ribbon</groupId>
      <artifactId>ribbon-loadbalancer</artifactId>
      <version>2.2.5</version>
</dependency>
<dependency>
      <groupId>io.reactivex</groupId>
      <artifactId>rxjava</artifactId>
      <version>1.0.10</version>
</dependency>
  • main函数
public class RibbonTest {
    public static void main(String[] args) {
        // 服务列表
        List<Server> serverList = Arrays.asList(new Server("localhost", 8081), new Server("localhost", 8083));
        // 构建负载实例
        BaseLoadBalancer loadBalancer = LoadBalancerBuilder.newBuilder().buildFixedServerListLoadBalancer(serverList);
//      loadBalancer.setRule(new RoundRobinRule());
        loadBalancer.setRule(new RandomRule());
        // 调用5次来测试效果
        for (int i = 0; i < 5; i++) {
            String result = LoadBalancerCommand.<String>builder().withLoadBalancer(loadBalancer).build()
                    .submit(new ServerOperation<String>() {
                        public Observable<String> call(Server server) {
                            try {
                                String addr = "http://" + server.getHost() + ":" + server.getPort() + "/house/data?name=";
                                System.out.println("调用地址:" + addr);
                                URL url = new URL(addr);
                                HttpURLConnection conn = (HttpURLConnection) url.openConnection();
                                conn.setRequestMethod("GET");
                                conn.connect();
                                InputStream in = conn.getInputStream();
                                byte[] data = new byte[in.available()];
                                in.read(data);
                                return Observable.just(new String(data));
                            } catch (Exception e) {
                                return Observable.error(e);
                            }
                        }
                    }).toBlocking().first();
            System.out.println("调用结果:" + result);
        }

    }

}
  • 直接运行就行啦。
调用地址:http://localhost:8081/house/data?name=
调用结果:Test
调用地址:http://localhost:8083/house/data?name=
调用结果:Test
调用地址:http://localhost:8081/house/data?name=
调用结果:Test
调用地址:http://localhost:8081/house/data?name=
调用结果:Test
调用地址:http://localhost:8081/house/data?name=
调用结果:Test

Ribbon整合Spring Cloud

其实上一章 Eureka 注册中心已经整合了Ribbon了,此次不再赘述。

参考资料

  1. Spring Cloud微服务:入门、实战与进阶-第4章 客户端负载均衡Ribbon
  2. springcloud.cc

相关文章

  • spring cloud6负载均衡

    一、负载均衡负载均衡不仅仅是ribbon,还包括zuul1,客户端的负载均衡:ribbon负载均衡作为客户端应用的...

  • Ribbon负载均衡服务调用

    SpringCloud Ribbon是Netfix Ribbon实现的一套客户端 负载均衡的工具。 (负载均衡...

  • Spring Cloud Ribbon

    Spring Cloud Ribbon 客户端负载均衡组件Ribbon 负载均衡就是当client端发送请求得时候...

  • 微服务 四:客户端负载均衡器

    客户端负载均衡简介 关于客户端负载均衡在“LB与服务发现”章节已做过介绍 4.2.Ribbon简介 Ribbon是...

  • Spring Cloud Ribbon源码分析

    客户端负载均衡 学习spring cloud ribbon的时候不得不提到客户端负载均衡。在客户端负载均衡中,所有...

  • Spring Cloud Ribbon

    概念 Ribbon是一个机遇Http和Tcp的客户端负载均衡工具。基于Netflix Ribbon实现。 负载均衡...

  • SpringCloud-Ribbon负载均衡

    Ribbon是SpringCloud提供的关于客户端负载均衡组件。 负载均衡 负载均衡设备可以分为硬件负载和软件负...

  • ribbon

    1.Ribbon 2.客户端负载均衡 3.服务端的负载均衡 4.负载均衡算法

  • Spring Cloud Ribbon 深入学习

    通过添加注释@LoanBalanced就开启了客户端负载均衡 Ribbon客户端负载均衡原理 对于一个客户端负载均...

  • 客户端负载均衡:Spring Cloud Ribbon

    Spring Cloud Ribbon属于客户端负载均衡,服务端负载均衡和客户端负载均衡最大的不同点在于服务清单所...

网友评论

      本文标题:Ribbon 客户端负载均衡

      本文链接:https://www.haomeiwen.com/subject/jwiqbctx.html