SpringCloud-Ribbon
创始人
2024-05-24 05:03:08
0

Spring Cloud Ribbon(负载均衡器)介绍及使用

        负载均衡
    目前主流的负载方案分为以下两种:
    1.集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如 Nginx)。
    2.客户端自己做负载均衡,根据自己的请求情况做负载,Ribbon 就属于客户端自己做负载。

        SpringCloudRibbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过SpringCloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。
    SpringCloudRibbon 虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在于每一个SpringCloud构建的微服务和基础设施中。因为微服务间的调用,API网关的请求转发等内容,实际上都是通过Ribbon实现的.
    (https://github.com/Netflix/ribbon)

Ribbon 模块
ribbon-loadbalancer    负载均衡模块,可独立使用,也可以和别的模块一起使用。
Ribbon                   内置的负载均衡算法都实现在其中。
ribbon-eureka        基于 Eureka 封装的模块,能够快速、方便地集成 Eureka。
ribbon-transport     基于 Netty 实现多协议的支持,比如 HTTP、Tcp、Udp 等。
ribbon-httpclient     基于 Apache HttpClient 封装的 REST 客户端,集成了负载均衡模块,可                                以直接在项目中使用来调用接口。
ribbon-example     Ribbon 使用代码示例,通过这些示例能够让你的学习事半功倍。
ribbon-core        一些比较核心且具有通用性的代码,客户端 API 的一些配置和其他 API 的                              定义。

Ribbon使用
    我们使用Ribbon 来实现一个最简单的负载均衡调用功能,接口就用使用Eureka编写服务提供者提供的/getName.do接口,需要启动两个服务一个是8081的端口,一个是8082的端口。 

        创建两个服务【普通的SpringBoot项目】 

org.springframework.bootspring-boot-starter-web
package com.wangxing.eurekaprovder.eurekaprovderdemo2.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/getName.do")public String getName() {return "网星软件1";}
}
server.port=8081

org.springframework.bootspring-boot-starter-web
package com.wangxing.eurekaprovder.eurekaprovderdemo2.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class UserController {@RequestMapping("/getName.do")public String getName() {return "网星软件2";}
}
server.port=8082

创建ribbonserver【普通的SpringBoot项目】

com.netflix.ribbonribbon2.2.5com.netflix.ribbonribbon-core2.2.5com.netflix.ribbonribbon-loadbalancer2.2.5io.reactivexrxjava1.0.10com.google.guavaguava28.2-androidcompile

 

package com.wangxing.ribbonserverdemo.ribbonserver;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class TestMain {public static void main(String[] args) {// 服务列表List serverList = Lists.newArrayList(new Server("localhost", 8081), new Server("localhost", 8082));// 构建负载实例ILoadBalancer loadBalancer = LoadBalancerBuilder.newBuilder().buildFixedServerListLoadBalancer(serverList);// 调用 5 次来测试效果for (int i = 0; i < 5; i++) {String result = LoadBalancerCommand.builder().withLoadBalancer(loadBalancer).build().submit(new ServerOperation() {public Observable call(Server server) {try {String addr = "http://" + server.getHost() + ":" + server.getPort() + "/getName.do";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);}  }
}

在 Spring Cloud 项目中集成 Ribbon 只需要在 pom.xml 中加入下面的依赖即可,其实也可以不用配置,因为 Eureka 中已经引用了Ribbon,代码如下所示。

    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...