电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

瀏覽:5日期:2023-06-29 16:45:19
目錄1.什么是Ribbon1.1客戶端的負載均衡1.2服務器端的負載均衡1.3常見負載均衡算法2.Nacos使用Ribbon3.Ribbon負載均衡策略3.1常用負載均衡描述3.3修改默認的負載均衡策略--配置文件的方式3.4自定義負載均衡策略4.使用spring cloud loadbalancer替代ribbon1.什么是Ribbon

目前主流的負載均衡方案分為以下兩種:

(1)集中式負載均衡:在消費者和服務提供者中間使用獨立的代理方式進行負載,有硬件的(F5),軟件的Nginx

(2)客戶端事先拿到提供者請求連接集合,根據(jù)自己的請求情況做負載均衡,Ribbon就屬于客戶端自己做負載均衡。

Spring cloud Ribbon是基于Netflix Ribbon實現(xiàn)的一套客戶端的負載均衡工具,Ribbon客戶端提供一系列完善的配置,如超時、重試等。通過Load Balancer獲取到服務器提供的所有機器實例,Ribbon會自動基于某種規(guī)則(輪詢、隨機)去調(diào)用這些服務。Ribbon也可以實現(xiàn)自己的負載均衡算法。

1.1客戶端的負載均衡

例如spring cloud中的Ribbon,客戶端會有一個服務器地址列表,在發(fā)送請求前通過負載均衡算法選擇一個服務器,然后進行訪問,這是客戶端負載均衡,即在客戶端進行負載均衡算法分配。

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

1.2服務器端的負載均衡

例如通過Nginx進行負載均衡,先發(fā)送請求,然后通過負載均衡算法,在多個服務器之間選擇一個進行訪問;即在服務器端進行負載均衡算法分配。

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

1.3常見負載均衡算法

(1)隨機:通過隨機選擇服務進行執(zhí)行,一般這種方法使用較少

(2)輪詢:負載均衡默認實現(xiàn)方式,請求來之后排隊處理

(3)加權(quán)輪詢:通過對服務器性能的分型,給高配置、低負載的服務器分配更高的權(quán)重,均衡各個服務器的壓力

(4)地址Hash,通過客戶端地址請求地址的hash值取模映射進行調(diào)度,

(5)最小鏈接數(shù):即使請求均衡了,壓力不一定會均衡,最小鏈接數(shù)法就是根據(jù)服務器的情況,例如請求積壓數(shù)的參數(shù),將請求分配到當前壓力最小的服務器上

2.Nacos使用Ribbon

(1)Nacos disconvery中默認已經(jīng)引入了Ribbon,不需要單獨引入

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

(2)添加@LoadBalanced注解

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

(3)調(diào)用的時候使用服務器名稱替代ip+端口,即使用默認輪詢的負載均衡方式

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

3.Ribbon負載均衡策略

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

3.1常用負載均衡描述

①RandomRule:隨機選擇一個服務實例

②RoundRobinRule:輪詢負載均衡策略

③RetryTule:在輪詢的基礎上進行重試,一直重試的次數(shù)由服務連接的超時時間控制

④WeightedResponseTimeRule:一個服務的平均響應時間越短,則權(quán)重越大,那么改實例被選中執(zhí)行任務的概率也越大

⑤BestAvaliableRule:過濾掉失效的服務實例,順便找出并發(fā)最小的服務實例來使用

⑥ZoneAvoidanceRule:判斷所在的區(qū)域,選擇最近的服務調(diào)用

⑦NacosRule:按隨機與配置的權(quán)重進行選擇服務器

3.2修改默認的負載均衡策略--配置類的方式

①賦值一份消費端項目OrderNacos,重命名為OrderRibbon

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

刪除OrderRibbon中原先的OrderNacos.iml文件

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

修改OrderRibbon的pom.xml的ArtifactId值

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

把新添加的OrderRibbon添加到父項目的pom.xml的module中

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

刷新maven項目

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

②創(chuàng)建RibbonConfig配置類

使用@Configuration標識是配置類,使用@Bean注入到spring容器中,方法名必須叫iRule,否則無效。

/** * 重寫負載均衡配置類 */@Configurationpublic class RibbonConfig { //方法名一定要叫iRule @Bean public IRule iRule(){return new RandomRule(); }}

****注意此配置類不能放在@SpringBootApplication的注解@CompentScan掃描得到的地方,否則自定義的配置類就會被所有的RibbonClients共享,

springboot啟動類,沒有配置掃描范圍的話,默認掃描到與啟動類OrderApplication同目錄級別的文件,此處為qingyun包下的文件都會被掃描到。

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

配置的目錄如下:

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

③在啟動類中使用注解@RibbonClients加入配置的自定義負載均衡器,value里面可以配置多個負載均衡器,是個數(shù)組類型的值;調(diào)用服務創(chuàng)建的RestTemplate使用@LoadBalanced進行修飾。

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

啟動消費者,兩個不同端口的服務提供者,通過頁面訪問,查看負載均衡機制由之前默認的改為輪詢的方式

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

3.3修改默認的負載均衡策略--配置文件的方式

使用配置文件的方式設定負載均衡方式,具體到某個服務,格式:服務名.ribbon.NFLoadBalancerRuleClassName=服務方式

stock-service.ribbon.NFLoadBalancerRuleClassName=com.alibaba.cloud.nacos.ribbon.NacosRule

在nacos管理界面配置服務器的權(quán)重,權(quán)重越大,被選中的概率越大。

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

也可以在項目配置文件中設置

#設置服務的權(quán)重spring.cloud.nacos.discovery.weight=43.4自定義負載均衡策略

(1)定義一個類繼承AbstractLoadBalancerRule,重寫choose方法

/** * 自定義負載均衡策略 */public class CustomRule extends AbstractLoadBalancerRule { @Override public void initWithNiwsConfig(IClientConfig iClientConfig) { } @Override public Server choose(Object o) {ILoadBalancer loadBalancer = this.getLoadBalancer(); //獲取當前請求的實例集合List<Server> reachableServers = loadBalancer.getReachableServers(); //使用線程安全生成一個隨機數(shù)int i = ThreadLocalRandom.current().nextInt(reachableServers.size()); //獲取服務Server server = reachableServers.get(i); return server; }}

(2)在application.properties中添加配置信息,指向自定義的配置類

stock-service.ribbon.NFLoadBalancerRuleClassName=com.rule.CustomRule

(3)開啟ribbon饑餓加載

當沒有任何配置的情況下,第一次請求服務時,才會請求加載對應的服務實例

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

可以在配置文件application.properties中配置饑餓加載

#開啟ribbon饑餓加載ribbon.eager-load.enabled=true#饑餓加載是服務,多個使用逗號隔開ribbon.eager-load.clients=stock-service

啟動項目的時候,加載配置服務使用的負載均衡策略

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

4.使用spring cloud loadbalancer替代ribbon

(1)在pom.xml中引入nacos-discovery時,去除ribbon,此時項目依賴的包里面已經(jīng)移除ribbon

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

(2)pom.xml中添加loadbalancer依賴,前提是項目中已經(jīng)引入了spring cloud依賴(父maven已經(jīng)引入)

<!-- 添加loadbalancer依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-loadbalancer</artifactId> </dependency>

(3)創(chuàng)建RestTemplate時,需要加@LoadBalanced

//程序啟動時創(chuàng)建RestTemplate //使用注解LoadBalanced標識負載均衡,默認輪詢的方式 @Bean @LoadBalanced public RestTemplate restTemplate(RestTemplateBuilder builder){RestTemplate build = builder.build();return build; }

(4)application.properties中禁用ribbon

#禁用ribbonspring.cloud.loadbalancer.ribbon.enabled=false

(5)若是想自定義loadbalancer,與自定義ribbon類似的方式,使用@LoadBalancerClients配置到springboot啟動類中

Spring cloud alibaba之Ribbon負載均衡實現(xiàn)方案

到此這篇關(guān)于Spring cloud alibaba--Ribbon負載均衡的文章就介紹到這了,更多相關(guān)Spring cloud alibaba--Ribbon負載均衡內(nèi)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 板材品牌-中国胶合板行业十大品牌-环保板材-上海声达板材 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 细沙回收机-尾矿干排脱水筛设备-泥石分离机-建筑垃圾分拣机厂家-青州冠诚重工机械有限公司 | 包装盒厂家_纸盒印刷_礼品盒定制-济南恒印包装有限公司 | 济南品牌包装设计公司_济南VI标志设计公司_山东锐尚文化传播 | 废气处理设备-工业除尘器-RTO-RCO-蓄热式焚烧炉厂家-江苏天达环保设备有限公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司 | 剪刃_纵剪机刀片_分条机刀片-南京雷德机械有限公司 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 口信网(kousing.com) - 行业资讯_行业展会_行业培训_行业资料 | 钢托盘,钢制托盘,立库钢托盘,金属托盘制造商_南京飞天金属制品实业有限公司 | 激光内雕_led玻璃_发光玻璃_内雕玻璃_导光玻璃-石家庄明晨三维科技有限公司 激光内雕-内雕玻璃-发光玻璃 | 大通天成企业资质代办_承装修试电力设施许可证_增值电信业务经营许可证_无人机运营合格证_广播电视节目制作许可证 | 小程序开发公司_APP开发多少钱_软件开发定制_微信小程序制作_客户销售管理软件-济南小溪畅流网络科技有限公司 | 货车视频监控,油管家,货车油管家-淄博世纪锐行电子科技 | 发光字|标识设计|标牌制作|精神堡垒 - 江苏苏通广告有限公司 | 水冷式工业冷水机组_风冷式工业冷水机_水冷螺杆冷冻机组-深圳市普威机械设备有限公司 | 液压扳手-高品质液压扳手供应商 - 液压扳手, 液压扳手供应商, 德国进口液压拉马 | 污水提升器,污水提升泵,地下室排水,增压泵,雨水泵,智能供排水控制器-上海智流泵业有限公司 | 运动木地板_体育木地板_篮球馆木地板_舞台木地板-实木运动地板厂家 | 消防泵-XBD单级卧式/立式消防泵-上海塑泉泵阀(集团)有限公司 | 陕西高职单招-陕西高职分类考试网| 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 美国PARKER齿轮泵,美国PARKER柱塞泵,美国PARKER叶片泵,美国PARKER电磁阀,美国PARKER比例阀-上海维特锐实业发展有限公司二部 | ETFE膜结构_PTFE膜结构_空间钢结构_膜结构_张拉膜_浙江萬豪空间结构集团有限公司 | 滚珠丝杆升降机_螺旋升降机_丝杠升降机-德迈传动 | 【365公司转让网】公司求购|转让|资质买卖_股权转让交易平台 | 手术室净化厂家_成都实验室装修公司_无尘车间施工单位_洁净室工程建设团队-四川华锐16年行业经验 | 天空彩票天下彩,天空彩天空彩票免费资料,天空彩票与你同行开奖,天下彩正版资料大全 | 深圳网站建设-高端企业网站开发-定制网页设计制作公司 | 深圳法律咨询【24小时在线】深圳律师咨询免费 | 混合气体腐蚀试验箱_盐雾/硫化氢/气体腐蚀试验箱厂家-北京中科博达 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 隐形纱窗|防护纱窗|金刚网防盗纱窗|韦柏纱窗|上海青木装潢制品有限公司|纱窗国标起草单位 | 光泽度计_测量显微镜_苏州压力仪_苏州扭力板手维修-苏州日升精密仪器有限公司 | 气动|电动调节阀|球阀|蝶阀-自力式调节阀-上海渠工阀门管道工程有限公司 | 杭州翻译公司_驾照翻译_专业人工翻译-杭州以琳翻译有限公司官网 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 | 万博士范文网-您身边的范文参考网站Vanbs.com| 双吸泵,双吸泵厂家,OS双吸泵-山东博二泵业有限公司 |