在上一篇笔记当中,已经成功使用了服务注册和发现。但是所有微服务还是处于单点的状态,我们也应该对微服务进行负载均衡,这是相当有必要的。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相关推荐

  1. SpringCloud系列五:Ribbon 负载均衡(Ribbon 基本使用、Ribbon 负载均衡、自定义 Ribbon 配置、禁用 Eureka 实现 Ribbon 调用)...

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.概念:Ribbon 负载均衡 2.具体内容 现在所有的服务已经通过了 Eureka 进行了注册,那么使用 Eureka 注册 ...

  2. J360-cloud SpringCloud系列二:服务发现Discovery Service

    2019独角兽企业重金招聘Python工程师标准>>> j360开源博客之 ----------------------------------------------------- ...

  3. SpringCloud系列——Zuul 动态路由

    前言 Zuul 是在Spring Cloud Netflix平台上提供动态路由,监控,弹性,安全等边缘服务的框架,是Netflix基于jvm的路由器和服务器端负载均衡器,相当于是设备和 Netflix ...

  4. JavaEE进阶知识学习-----SpringCloud(六)Ribbon负载均衡

    Ribbon负载均衡 Ribbon概述 Spring Cloude Ribbon是基于Netfilx Ribbon实现的一套客户端 负载均衡的工具,简单说,Ribbon是Netfilix发布的开源项目 ...

  5. SpringCloud系列研究---Eureka服务消费Feign

    转载自:https://www.cnblogs.com/chxuyuan/p/8358998.html SpringCloud系列研究---Eureka服务消费Feign 一.Feign简介 Feig ...

  6. 08、SpringCloud 系列:Nacos - 安装、启动

    SpringCloud 系列列表: 文章名 文章地址 01.Eureka - 集群.服务发现 https://blog.csdn.net/qq_46023503/article/details/128 ...

  7. Spring Cloud 系列之 Netflix Ribbon 负载均衡

    什么是 Ribbon Ribbon 是一个基于 HTTP 和 TCP 的 客服端负载均衡工具,它是基于 Netflix Ribbon 实现的. 它不像 Spring Cloud 服务注册中心.配置中心 ...

  8. SpringCloud系列博客父工程xml依赖

    SpringCloud系列博客父工程xml依赖 <?xml version="1.0" encoding="UTF-8"?><project ...

  9. SpringCloud系列之Nacos+Dubbo+Seata应用篇

    SpringCloud系列之Nacos+Dubbo+Seata应用篇 原文链接:https://www.cnblogs.com/chinaWu/p/13671620.html ---------- 源 ...

最新文章

  1. json qbytearray 串 转_如何通过QByteArray在JSON中存储QPixmap?
  2. docker容器管理 php,基于Docker的PHP开发环境
  3. 微信小程序 欢迎界面开发的实例详解
  4. Unity内置的三套消息发送机制的应用实例
  5. php接口异常,api接口异常怎么办
  6. RebatesMe:返利网站DDOS防护
  7. 数据库设计中的14个关键技巧
  8. 支付宝区块链授权专利212件 位居全球第一!
  9. oracle监听程序无法分配,oracleORA-12520:TNS:监听程序无法为请求的服务器类型找到可用的处理程序的问题...
  10. 多年前写的一个ASP.NET网站管理系统,到现在有些公司在用
  11. jquery中html()、text()、val()的区别与使用
  12. rabbitmq重装之后无法加入原有cluster的bug解析
  13. 《软件评测师教程》学习笔记-第一章:软件测试概述
  14. CSS 溢出overflow属性的使用
  15. 微信域名防封,微信网址域名防封的几种方法
  16. 游戏——Flappy Bird
  17. 网络爬虫(python项目)
  18. 碳减排量和碳配额的区别是什么?
  19. 如何学习自动化测试?一文4从个方面带你入门自动化测试【建议收藏】
  20. 艾永亮:打造超级产品,互联网公司的风水转到哪儿了?

热门文章

  1. 这个是小蜜蜂老师给出的蓝桥杯练习题目,我通过这个题目加深了对iic总线的理解和应用。
  2. 段错误需要使用的工具 nm objdump readelf
  3. 天池时间序列竞赛——AI助力精准气象和海洋预测学习笔记其一:赛题分析
  4. 携程PMO封面人物 | 关群 AUG Meetup
  5. Jmeter请求参数MD5加密
  6. 鸟哥的linux私房菜一书
  7. 开源发票识别_自由职业者和小型企业的前4种开源发票工具
  8. oracle数据库更换字符集(AL32UTF8--> ZHS16GBK)
  9. webview 禁止苹果自动下拉_苹果手机如何拥有百变铃声?酷狗铃声1分钟搞定!-时尚呼吸...
  10. 【Quartz】Quartz概述及入门实例