SpringCloud系列(3)---Netfilx-Ribbon
在上一篇笔记当中,已经成功使用了服务注册和发现。但是所有微服务还是处于单点的状态,我们也应该对微服务进行负载均衡,这是相当有必要的。SpringCloud 提供了Ribbon负载均衡器。它可以有助于控制HTTP和TCP客户端的访问行为。为Ribbon配置服务提供者地址后,Ribbon就可以基于负载均衡算法进行负载均衡。Ribbon默认提供了很多种负载均衡算法,轮询、随机等。Ribbon也可以使用自定义的负载均衡算法。
在SpringCloud中,当Ribbon于Eureka 配合使用时,Ribbon可以自动从Eureka Server 获得服务提供者的地址列表,并基于特定的负载均衡算法,请求其中一个服务提供者。
一、整合Ribbon到微服务
如果你的微服务在MAVEN上已经整合了eureka,就不需要添加ribbon的依赖配置了。如果你想单独使用ribbon你可以添加如下的maven依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-ribbon</artifactId> </dependency>
事实上非常简单,我们只需要在RestTemplate的bean当中,添加@LoadBalanced annotation即可:
@Bean @LoadBalanced public RestTemplate restTemplate(){return new RestTemplate(); }
然后然后开始测试,我们需要启动超过两个用户服务系统,从而观察会选择哪个节点。笔者已经启动了两个用户服务节点
我们在商品服务系统的测试controller当中,添加如下代码测试是否存在负载均衡:
@Autowired private LoadBalancerClient loadBalancerClient; @GetMapping("/testInstance") public String testInstance() {ServiceInstance serviceInstance = this.loadBalancerClient.choose("tony-mall-provider-user"); String hostAndPort = serviceInstance.getHost() + ":" + serviceInstance.getPort() + "[id:" + serviceInstance.getServiceId() + "]"; return hostAndPort; }
在几次测试当中发现是轮询的(只是估计):
192.168.28.100:8801[id:tony-mall-provider-user]
192.168.28.100:8801[id:tony-mall-provider-user]
在多次调用微服务的接口也是一样,发现每次调用SQL的服务器都是不同的,从而发现已经实现了负载均衡。
二、Ribbon的配置
从Spring Cloud Netfilx 1.2.0开始 已经提供使用配置方式定义Ribbon:
配置前缀为服务名称,如用户服务的名称就为:tony-mall-provider-user
例如:
tony-mall-provider-user.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule
事实上笔者目前的参考书上对配置部分讲解还是相对模糊,后续笔者将会继续参考其他书籍和官网文档,将会基础补充这一部分。
Ribbon可以脱离Eureka单独使用,但是这里我就不作演示了。
SpringCloud系列(3)---Netfilx-Ribbon相关推荐
- SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...
声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册 ...
- J360-cloud SpringCloud系列二:服务发现Discovery Service
2019独角兽企业重金招聘Python工程师标准>>> j360开源博客之 ----------------------------------------------------- ...
- SpringCloud系列——Zuul 动态路由
前言 Zuul 是在Spring Cloud Netflix平台上提供动态路由,监控,弹性,安全等边缘服务的框架,是Netflix基于jvm的路由器和服务器端负载均衡器,相当于是设备和 Netflix ...
- JavaEE进阶知识学习-----SpringCloud(六)Ribbon负载均衡
Ribbon负载均衡 Ribbon概述 Spring Cloude Ribbon是基于Netfilx Ribbon实现的一套客户端 负载均衡的工具,简单说,Ribbon是Netfilix发布的开源项目 ...
- SpringCloud系列研究---Eureka服务消费Feign
转载自:https://www.cnblogs.com/chxuyuan/p/8358998.html SpringCloud系列研究---Eureka服务消费Feign 一.Feign简介 Feig ...
- 08、SpringCloud 系列:Nacos - 安装、启动
SpringCloud 系列列表: 文章名 文章地址 01.Eureka - 集群.服务发现 https://blog.csdn.net/qq_46023503/article/details/128 ...
- Spring Cloud 系列之 Netflix Ribbon 负载均衡
什么是 Ribbon Ribbon 是一个基于 HTTP 和 TCP 的 客服端负载均衡工具,它是基于 Netflix Ribbon 实现的. 它不像 Spring Cloud 服务注册中心.配置中心 ...
- SpringCloud系列博客父工程xml依赖
SpringCloud系列博客父工程xml依赖 <?xml version="1.0" encoding="UTF-8"?><project ...
- SpringCloud系列之Nacos+Dubbo+Seata应用篇
SpringCloud系列之Nacos+Dubbo+Seata应用篇 原文链接:https://www.cnblogs.com/chinaWu/p/13671620.html ---------- 源 ...
最新文章
- json qbytearray 串 转_如何通过QByteArray在JSON中存储QPixmap?
- docker容器管理 php,基于Docker的PHP开发环境
- 微信小程序 欢迎界面开发的实例详解
- Unity内置的三套消息发送机制的应用实例
- php接口异常,api接口异常怎么办
- RebatesMe:返利网站DDOS防护
- 数据库设计中的14个关键技巧
- 支付宝区块链授权专利212件 位居全球第一!
- oracle监听程序无法分配,oracleORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序的问题...
- 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
- jquery中html()、text()、val()的区别与使用
- rabbitmq重装之后无法加入原有cluster的bug解析
- 《软件评测师教程》学习笔记-第一章:软件测试概述
- CSS 溢出overflow属性的使用
- 微信域名防封,微信网址域名防封的几种方法
- 游戏——Flappy Bird
- 网络爬虫(python项目)
- 碳减排量和碳配额的区别是什么?
- 如何学习自动化测试?一文4从个方面带你入门自动化测试【建议收藏】
- 艾永亮:打造超级产品,互联网公司的风水转到哪儿了?
热门文章
- 这个是小蜜蜂老师给出的蓝桥杯练习题目,我通过这个题目加深了对iic总线的理解和应用。
- 段错误需要使用的工具 nm objdump readelf
- 天池时间序列竞赛——AI助力精准气象和海洋预测学习笔记其一:赛题分析
- 携程PMO封面人物 | 关群 AUG Meetup
- Jmeter请求参数MD5加密
- 鸟哥的linux私房菜一书
- 开源发票识别_自由职业者和小型企业的前4种开源发票工具
- oracle数据库更换字符集(AL32UTF8--> ZHS16GBK)
- webview 禁止苹果自动下拉_苹果手机如何拥有百变铃声?酷狗铃声1分钟搞定!-时尚呼吸...
- 【Quartz】Quartz概述及入门实例