动态感知Nacos服务地址和ribbon远程调用优雅上下线.pdf

动态感知Nacos服务地址和ribbon远程调用优雅上下线.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

动态感知Nacos服务地址和ribbon远程调⽤优雅

上下线

背景

远程调⽤⼀般都会⽤ribbon,尽管使⽤feign,还是⽤的ribbon做的负载均衡,远程调⽤。但是ribbon

会每隔30s刷新注册表信息,这样就会导致如果服务下线了,由于注册表没有及时更新,那远程调⽤就

会报错。

ribbon默认实现如下。

om.netflix.loadbalaner.PollingServerListUpdater这个类是ribbon更新注册表的

核⼼类。

nacos动态更新地址原理

Nacos客⼾端中有⼀个HostReactor类,它的功能是实现服务的动态更新,基本原理是:

•客⼾端发起时间订阅后,在HostReactor中有⼀个UpdateTask线程,每10s发送⼀次Pull请求,获

得服务端必威体育精装版的地址列表

•对于服务端,它和服务提供者的实例之间维持了⼼跳检测,⼀旦服务提供者出现异常,则会发送⼀

个Push消息给Nacos客⼾端,也就是服务端消费者

•服务消费者收到请求之后,使⽤HostReactor中提供的processServiceJSON解析消息,并更新本地

服务地址列表

改造ribbon默认更新策略

基于上⾯的理论,是不是可以监听nacos事件更新事件,如果有更新,就重新刷新下ribbon的注册表。

1.覆盖ServerListUpdater,⾃⼰定义⼀个NacosDynamicServerListUpdater代码如下;

1publilassNaosDynamiServerListUpdaterimplementsServerListUpdater{

2privatestatiLoggerlog=LoggerFatory.getLogger(NaosDynamiServerListUp

3

4privateCopyOnWriteArrayListLBUpdaterlbUpdaters=newCopyOnWriteArrayLis

5

6privateNamingServienamingServie;

7

8@Value(${ribbon.PollingServerListUpdater.initial-delay:1000})

9privatelonginitialDelay;

10@Value(${ribbon.PollingServerListUpdater.refresh-interval:30000})

11privatelongrefreshInterval;

12

13privateNaosDisoveryPropertiesproperties;

14

15publiNaosDynamiServerListUpdater(NamingServienamingServie,NaosDiso

16this.namingServie=namingServie;

17this.properties=properties;

18}

19

20@Override

21publivoidstart(UpdateAtionupdateAtion){

22NaosDynamiServerListUpdater.LBUpdaterlbUpdater=newNaosDynamiServ

23this.lbUpdaters.add(lbUpdater);

24lbUpdater.start();

25log.info(naosdslu-started:{},lbUpdater:{},PollingServerListUpdate

26newObjet[]{this,lbUpdater.getIdentity(),this.initialDelay,t

27}

28

29@Override

文档评论(0)

易油科技首席架构师 + 关注
实名认证
服务提供商

精通系统架构设计,能够设计可扩展、高效、安全的系统。 面对复杂问题时,能够运用创造性思维找到解决方案。 带领团队落地多个大型项目。

1亿VIP精品文档

相关文档