『互联网架构』软件架构-深入理解Ribbon(93)

栏目: Java · 发布时间: 4年前

内容简介:在国内dubbo还是使用比较多的,毕竟是阿里很早之前都开源的框架,但是dubbo的生态相对来说已经赶不上springclud了,springclud在国外应用的比较多,大家基本都是dubbo的,springclud这一系列初心就是说说最重要的知识点,有老铁联系我,说内容太简单了,想要多学点源码,多学点项目实战的应用。其实源码怎么说呢?我的建议先把springclud基础的知识点都掌握了,最好有个实战的项目应用,在去学源码。基础知识都不了解直接怼源码,这种学习方法绝对是有问题的。就像上节Eureka,只会说看

在国内dubbo还是使用比较多的,毕竟是阿里很早之前都开源的框架,但是dubbo的生态相对来说已经赶不上springclud了,springclud在国外应用的比较多,大家基本都是dubbo的,springclud这一系列初心就是说说最重要的知识点,有老铁联系我,说内容太简单了,想要多学点源码,多学点项目实战的应用。其实源码怎么说呢?我的建议先把springclud基础的知识点都掌握了,最好有个实战的项目应用,在去学源码。基础知识都不了解直接怼源码,这种学习方法绝对是有问题的。就像上节Eureka,只会说看源码的方法。看最核心的东西,不会全部看的。在工作中运用了,熟悉了在详细的根据核心的东西的思路来看源码。说了这么多,今天说说Ribbon。

源码:https://github.com/limingios/netFuture/tree/master/源码/『互联网架构』软件架构-深入理解Ribbon(93)/

『互联网架构』软件架构-深入理解Ribbon(93)

(一)Ribbon客户端负载均衡介绍及基本使用

  • 服务端的负载均衡

    > nginx本身就是服务,nginx做负载,就是服务端做负载均衡。dubbo就是服务端的负载均衡。

『互联网架构』软件架构-深入理解Ribbon(93)

  • 客户端侧负载均衡

    > 针对服务端的就是调用方,客户端。客户端的负载均衡

    > 一个order项目,一个user项目,order调用方里面有个小的模块,知道所有用户中心的服务列表。然后根据服务列表获取负载均衡。

『互联网架构』软件架构-深入理解Ribbon(93)

(二)Ribbon基本概念及使用

Ribbon是一个实现了客户端负载均衡的组件,Netflix(美国是一家在线影片租赁提供商,开源了很多比较牛X的技术)开源的,其主要功能是提供【客户端侧负载均衡】。

Ribbon客户端组件提供一系列完善的配置项,如连接超时,重试等配置。简单来说,Ribbon是一个客户端负载均衡器,我们可以在配置文件中列出负载均衡后面所有的机器,Ribbon会自动的帮助你基于某种规则(轮询,随机等)去连接这些机器,我们也可以使用自定义Ribbon实现自己的负载均衡算法。

『互联网架构』软件架构-深入理解Ribbon(93)

『互联网架构』软件架构-深入理解Ribbon(93)

(三)Eureka集成Ribbon架构图

之前说 eureka的时候,eureka有server和client,在下图中order和user都是client,eureka server是server端,order和user都注册到eureka的服务中心。在order中有ribbon。其实ribbon就是嵌入在client中的一个小组件。ribbon会到eureka server上获取到可用服务的列表,如user service的所有服务,拿到列表后基于自身的复杂均衡的策略,选一台user service的服务进行调用。也级㐊说ribbon正常的情况下是跟eureka在一起的。

『互联网架构』软件架构-深入理解Ribbon(93)

(四)Eureka集成Ribbon-回顾

  • 增加Ribbon依赖
  • 本来需要引入spring-cloud-starter-netflix-ribbon,但是由于spring-cloud-starter-netflix-eureka-client中,已经包含了ribbon的包了,所以实际上我们不需要显示的引入ribbon的包就可以直接使用它
  • 负载均衡代码

『互联网架构』软件架构-深入理解Ribbon(93)

  • 源码演示

    > 三个项目一个eurekaserver,一个order-consumber-berservice,一个order-provider-berservice,

『互联网架构』软件架构-深入理解Ribbon(93)

启动:eurekaserver,端口8761

『互联网架构』软件架构-深入理解Ribbon(93)

『互联网架构』软件架构-深入理解Ribbon(93)

启动:order-service,端口8011,eureka增加了一个服务

『互联网架构』软件架构-深入理解Ribbon(93)

『互联网架构』软件架构-深入理解Ribbon(93)

启动:user-service,端口8001,eureka增加了一个服务

『互联网架构』软件架构-深入理解Ribbon(93)

启动:user-service,端口8002,eureka增加了一个服务

『互联网架构』软件架构-深入理解Ribbon(93)

  • 访问order查看走向

    > http://localhost:8011/user/getIpAndPort 这个方法是order的方法

『互联网架构』软件架构-深入理解Ribbon(93)

发现每次刷新访问打印结果的端口都不一样:8001,8002。如果搞过nginx的会发现这不是轮询的策略啊,默认情况下ribbon的复杂均衡的策略是轮询的方式。

『互联网架构』软件架构-深入理解Ribbon(93)

『互联网架构』软件架构-深入理解Ribbon(93)

(五)使用Ribbon配置类实现指定微服务负载均衡策略

在spring cloud官方文档中是这样说的,如果要自定义Ribbon配置, 则需要把这个配置类放在@SpringBootApplication扫不到的包中(@ComponentScan),因为如果可以扫到自定义的Ribbon配置类的话,那么会对所有的Riboon都生效。

  • 配置步骤
  1. 独立新建包,并创建ribbon配置类,例如:com.tuling.cloud.config.
  2. RibbonConfiguration 创建一个空类ProviderUserConfiguration配置服务的ribbon负载均衡策略

见示例:05-ms-consumer-order-ribbon-customizing

『互联网架构』软件架构-深入理解Ribbon(93)

访问定制化策略的order,随机的。每次刷新都是随机的。

http://localhost:8010/user/getIpAndPort

『互联网架构』软件架构-深入理解Ribbon(93)

默认负载均衡策略与自定义负载均衡策略同时使用

1. 再启动两个用户微服务 serviceid和port不同

2. 请求microservice-user微服务,会使用自定义的CustomRibbonConfig 作为负载均衡策略(随机)

3. 请求microservice-user-2微服务,会使用默认的负载均衡策略(轮询)

  • 上边这种写死的方式很土鳖,使用Ribbon属性配置实现指定微服务负载均衡策略

    1.在订单微服务的application.yml中增加配置

    『互联网架构』软件架构-深入理解Ribbon(93)

2.见示例:05-ms-consumer-order-ribbon-customizing-properties

『互联网架构』软件架构-深入理解Ribbon(93)

3.Ribbon配置的优先级:属性配置 > JAVA配置>Netflix Ribbon默认配置

『互联网架构』软件架构-深入理解Ribbon(93)

(六)Ribbon脱离Eureka独立使用

到现在为止,我们看到的Ribbon负载均衡后的后端服务地址,是从EurekaServer中获取的可用微服务列表,那么现在如果我不需要使用Eureka,不从Eureka中获取微服务列表,而是Ribbon自己独立配置可用微服务列表,要如何来做呢?

  • 订单微服务application配置中增加

『互联网架构』软件架构-深入理解Ribbon(93)

  • .ribbon.listOfServers:可用微服务列表

    见示例: 05-ms-consumer-order-ribbon-without-eureka

『互联网架构』软件架构-深入理解Ribbon(93)

PS:Load Balance负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法。像nginx可以使用负载均衡分配流量,ribbon为客户端提供负载均衡,dubbo服务调用里的负载均衡等等,很多地方都使用到了负载均衡。

>>原创文章,欢迎转载。转载请注明:转载自,谢谢!>>原文链接地址:上一篇:

已是最新文章


以上所述就是小编给大家介绍的《『互联网架构』软件架构-深入理解Ribbon(93)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

我看电商2(双色)

我看电商2(双色)

黄若 / 电子工业出版社 / 2016-6 / 39.00元

《我看电商2》是行业畅销书《我看电商》的续集。 《我看电商》自出版以来,连续印刷14 次,受到业界人士和广大读者的高度好评。《我看电商2》承续作者一贯的风格,以行业观察、经验分享为出发点,重点分析了过去一年中国电商界的最新动态与趋势,包括双11点评、京东关闭拍拍、上市公司私有化等。 电子商务是我国近年来发展最快的新兴行业之一,作者作为这个行业的长老级领军人物,善于思考,长于实操。《我看......一起来看看 《我看电商2(双色)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具