精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊對Nacos Client服務發現源碼分析

開發 前端
本篇帶大家通過源碼層面分析一下Nacos Client的服務發現的路程,事實可能并不像你想象的那樣簡單。

[[416416]]

本文轉載自微信公眾號「程序新視界」,作者二師兄。轉載本文請聯系程序新視界公眾號。

學習不用那么功利,二師兄帶你從更高維度輕松閱讀源碼~

本篇帶大家通過源碼層面分析一下Nacos Client的服務發現的路程,事實可能并不像你想象的那樣簡單。

Nacos服務發現

直觀的看,Nacos客戶端的服務發現,就是封裝參數、調用服務端接口、獲得返回實例列表。

naocos

但細化這個流程,會發現不僅包括了通過NamingService獲取服務列表,在獲取服務列表的過程中還涉及到通信協議(Http or gRPC)、訂閱流程、故障轉移邏輯等。下面我們根據服務發現來捋一下相關的流程。

先說入口程序,依舊是在NamingTest中可以看到:

  1. NamingService namingService = NacosFactory.createNamingService(properties); 
  2. namingService.registerInstance("nacos.test.1", instance); 
  3.  
  4. ThreadUtils.sleep(5000L); 
  5. // 獲取實例列表 
  6. List<Instance> list = namingService.getAllInstances("nacos.test.1"); 

關于NamingService的實例化和基本功能,在服務注冊時已經講過,這里直接看獲取實例列表方法getAllInstances。該方法的參數就是服務的名稱。

經過一些列的重載方法調用,真正處理核心邏輯的方法如下:

  1. @Override 
  2. public List<Instance> getAllInstances(String serviceName, String groupName, List<String> clusters, 
  3.         boolean subscribe) throws NacosException { 
  4.     ServiceInfo serviceInfo; 
  5.     String clusterString = StringUtils.join(clusters, ","); 
  6.     // 是否訂閱模式 
  7.     if (subscribe) { 
  8.         // 先從客戶端緩存獲取服務信息 
  9.         serviceInfo = serviceInfoHolder.getServiceInfo(serviceName, groupName, clusterString); 
  10.         if (null == serviceInfo) { 
  11.             // 如果本地緩存不存在服務信息,則進行訂閱 
  12.             serviceInfo = clientProxy.subscribe(serviceName, groupName, clusterString); 
  13.         } 
  14.     } else { 
  15.         // 如果未訂閱服務信息,則直接從服務器進行查詢 
  16.         serviceInfo = clientProxy.queryInstancesOfService(serviceName, groupName, clusterString, 0, false); 
  17.     } 
  18.     // 從服務信息中獲去實例列表 
  19.     List<Instance> list; 
  20.     if (serviceInfo == null || CollectionUtils.isEmpty(list = serviceInfo.getHosts())) { 
  21.         return new ArrayList<Instance>(); 
  22.     } 
  23.     return list; 

首先看重載的getAllInstances方法,比入口方法多了幾個參數,這里不僅有服務名稱,還有分組名稱(groupName)、集群列表(clusters)、是否訂閱(subscribe)。

重載方法中的其他參數已經設置了默認值。比如,分組名稱默認為“DEFAULT_GROUP”、集群列表默認為空數組、是否訂閱默認為“訂閱”。

上述方法整理成流程圖如下:

naocos

上述流程的基本邏輯為:

如果是訂閱模式,則直接從本地緩存獲取服務信息(ServiceInfo),然后從中獲取實例列表,這是因為訂閱機制會自動同步服務器實例的變化到本地。如果本地緩存中沒有,那說明是首次調用,則進行訂閱,在訂閱完成后會獲得到服務信息。

如果是非訂閱模式,那就直接請求服務器端,獲得服務信息。

訂閱處理流程

在上述流程中,涉及到了訂閱邏輯,入口代碼為獲取實例列表中的如下方法:

  1. serviceInfo = clientProxy.subscribe(serviceName, groupName, clusterString); 

下面就來看看該方法內部是如何進行處理的。首先,這里的clientProxy是NamingClientProxy類的對象。對應的subscribe實現如下:

  1. @Override 
  2. public ServiceInfo subscribe(String serviceName, String groupName, String clusters) throws NacosException { 
  3.     String serviceNameWithGroup = NamingUtils.getGroupedName(serviceName, groupName); 
  4.     String serviceKey = ServiceInfo.getKey(serviceNameWithGroup, clusters); 
  5.     // 獲取緩存中的ServiceInfo 
  6.     ServiceInfo result = serviceInfoHolder.getServiceInfoMap().get(serviceKey); 
  7.     if (null == result) { 
  8.         // 如果為null,則進行訂閱邏輯處理,基于gRPC協議 
  9.         result = grpcClientProxy.subscribe(serviceName, groupName, clusters); 
  10.     } 
  11.     // 定時調度UpdateTask 
  12.     serviceInfoUpdateService.scheduleUpdateIfAbsent(serviceName, groupName, clusters); 
  13.     // ServiceInfo本地緩存處理 
  14.     serviceInfoHolder.processServiceInfo(result); 
  15.     return result; 

在上述代碼中,可以看到在獲取服務實例列表時(特別是首次),也進行了訂閱邏輯的拓展,基本流程圖如下:

naocos

上圖流程中可以看出,訂閱方法先通過代理類進行了本地緩存的判斷,如果本地緩存存在ServiceInfo信息,則直接返回。如果不存在,則默認采用gRPC協議進行訂閱,并返回ServiceInfo。

grpcClientProxy的subscribe訂閱方法就是直接向服務器發送了一個訂閱請求,并返回結果,就沒有做過多處理了。

訂閱完成之后,會通過ServiceInfoUpdateService開啟一個定時任務,這個定時任務主要的作用就是來定時同步服務器端的實例列表信息,并進行本地緩存更新等操作。

最后一步,ServiceInfo本地緩存處理。這里會將獲得的最新ServiceInfo與本地內存中的ServiceInfo進行比較,更新,發布變更時間,磁盤文件存儲等操作。其實,這一步的操作,在訂閱定時任務中也進行了處理。

關于訂閱細節和本地緩存處理,涉及內容較多,我們后面單獨拓展開講解。這里知道整體流程即可。

小結

本文主要梳理了Nacos客戶端服務發現的核心流程,包括:

第一,如果沒有開啟訂閱模式,則直接通過/instance/list接口(默認通過gRPC協議)獲取服務實例列表信息;

第二,如果開啟訂閱模式(默認開啟),則先會從本地緩存中獲取實例信息,如果不存在,則進行訂閱獲并獲取實例信息;

第三,在開啟訂閱時,會開啟定時任務,定時執行UpdateTask(獲取服務器實例信息、更新本地緩存、發布事件);

第四,在第二步獲得最新的實例信息之后,也會執行processServiceInfo方法來更新內存和本地實例緩存,并發布變更時間。

第五,至此,與第二步形成循環,每次獲取本地緩存,不存在則更新……

 

關于用來處理訂閱相關的UpdateTask和用來處理本地緩存的ServiceInfoHolder#processServiceInfo方法,我們后面文章繼續講解。

 

責任編輯:武曉燕 來源: 程序新視界
相關推薦

2021-07-12 08:00:21

Nacos 服務注冊源碼分析

2021-07-16 06:56:50

Nacos注冊源碼

2021-09-08 06:51:53

CountDownLa閉鎖源碼

2021-08-09 07:58:36

Nacos 服務注冊源碼分析

2021-05-18 20:22:00

Spring ClouNacos服務

2021-08-16 07:26:42

服務訂閱機制

2021-08-12 06:52:01

Nacos服務機制

2023-09-06 18:16:14

自動發現Zabbix網絡

2021-09-07 07:53:42

Semaphore 信號量源碼

2024-07-05 08:26:54

2010-02-06 13:28:31

Android源碼

2022-02-07 07:10:32

服務注冊功能

2022-02-09 07:03:01

SpringNacos服務注冊

2021-05-27 22:46:00

Nacos Clien版本Nacos

2022-05-08 17:53:38

Nacos服務端客戶端

2022-05-06 07:52:06

Nacos服務注冊

2021-04-18 07:33:20

項目Springboot Nacos

2022-09-28 11:34:27

用戶行為數據業務

2024-07-03 13:51:02

SQL毛刺數據庫

2023-11-02 20:05:17

KubernetesPod管理
點贊
收藏

51CTO技術棧公眾號

成人精品一区二区三区电影黑人| 久久众筹精品私拍模特| 亚洲第一页中文字幕| 日韩精品久久久毛片一区二区| www.5588.com毛片| 日韩制服诱惑| 91在线国产福利| 久久精品国产久精国产思思| 精品免费国产一区二区| 国模人体一区二区| 911精品美国片911久久久| 色综合久久九月婷婷色综合| 国产精品一 二 三| 登山的目的在线| jizzyou欧美16| 91美女蜜桃在线| 97在线免费观看| 亚洲高清无码久久| 99thz桃花论族在线播放| 懂色av一区二区在线播放| 久久国产色av| 绯色av蜜臀vs少妇| 久久青青色综合| 99视频在线精品| 欧美在线视频免费观看| 久久av无码精品人妻系列试探| 日韩影片中文字幕| 国产日韩视频一区二区三区| 国产成人av网址| 黑人巨大精品欧美| 黄瓜视频成人app免费| 日本一区二区免费在线| 国产精品一香蕉国产线看观看| 香蕉久久久久久久| 欧美黄色一级| 偷拍一区二区三区四区| 蜜桃狠狠色伊人亚洲综合网站| 国产女主播喷水视频在线观看| 日本道不卡免费一区| 在线成人av网站| 日韩视频在线观看视频| 国产91视频在线| 欧美三区不卡| 日韩精品一区二区三区四区| 久久视频免费在线| 成人无码一区二区三区| 91av精品| 欧美一级欧美三级在线观看| 久久久久久久久久久综合| 超碰福利在线观看| 重囗味另类老妇506070| 欧美日韩黄色一区二区| 亚洲一区二区三区涩| 国产精品久久久久久久久久久久久久久久久久| 91一区在线| 色欧美88888久久久久久影院| 日韩成人av网站| 亚洲综合精品国产一区二区三区| 国产精品精品国产一区二区| 日韩视频在线永久播放| 日韩精品一区在线视频| 黄色片在线免费看| 国产在线一区二区| 色综合五月天导航| 熟女丰满老熟女熟妇| 欧美黄色三级| 亚洲黄色性网站| 久久精品国产综合精品| 久久精品国产亚洲av麻豆蜜芽| 91精品秘密在线观看| 亚洲成人a**站| 国产精品亚洲二区在线观看| 国产在线激情| 成人天堂资源www在线| 国产99久久精品一区二区| 青青草华人在线视频| 一区二区日韩| 日本丶国产丶欧美色综合| 免费观看中文字幕| 日本午夜在线视频| 狠狠色综合播放一区二区| 欧美激情喷水视频| 五月婷婷欧美激情| 免费成人三级| 欧美精品tushy高清| 国产精品va无码一区二区| 中文日本在线观看| 99re在线精品| 7777精品久久久大香线蕉小说| 久久一区二区三区视频| 国产精品毛片一区二区在线看| 日韩av在线高清| 国产美女视频免费看| 在线免费三级电影网站| 亚洲精品免费一二三区| 牛人盗摄一区二区三区视频| 国产成人精品白浆久久69| 日韩黄色在线观看| 国语自产精品视频在免费| 日本爱爱小视频| 欧美精品色图| 日韩av一区二区在线| 亚洲第一天堂久久| 日本一区免费网站| 精品久久久中文| 久久久久久久9| 精品黄色免费中文电影在线播放| 久久久久久亚洲综合影院红桃| 鬼打鬼之黄金道士1992林正英| 亚洲天堂国产精品| 视频一区中文字幕国产| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲国产日韩一区无码精品久久久| 美女一区二区在线观看| 精品国内片67194| 北条麻妃亚洲一区| 色综合久久久| 欧美日韩在线播放一区| 国产真实乱子伦| 免费看男女www网站入口在线| 亚洲国产精品一区二区久久| 黄色成人在线免费观看| a视频在线观看| 亚洲你懂的在线视频| 在线免费观看成人网| 天堂地址在线www| 国产日产亚洲精品系列| 日本一区二区三区视频在线播放| 深夜福利在线看| 99久久精品99国产精品 | 国产精品亚洲欧美导航| 最近免费中文字幕大全免费版视频| 亚洲狼人精品一区二区三区| 久久久噜噜噜久久| 日本一区二区欧美| 国产精品视频久久一区| 欧美一级免费视频| 日本熟女毛茸茸| 久久久天天操| 国产精品久久久久久久久免费| 日韩中文字幕高清| 久久国产精品区| 91在线网站视频| 国产免费叼嘿网站免费| 国产一区二区三区久久久| 亚洲字幕在线观看| 韩国av永久免费| 91麻豆国产香蕉久久精品| 日本黑人久久| 淫片在线观看| 一区二区在线观看视频在线观看| 久操手机在线视频| 中文字幕成在线观看| 91久久奴性调教| 182午夜在线观看| 4438五月综合| 精品1区2区在线观看| 性欧美丰满熟妇xxxx性仙踪林| 中文有码一区| 久久精品中文字幕| 亚洲欧美在线观看视频| 男人添女荫道口女人有什么感觉| 黄色在线网站噜噜噜| 欧洲一区二区三区在线| 麻豆网站免费观看| 婷婷精品视频| 色噜噜狠狠色综合网图区| 青青草精品在线视频| 国产精品毛片一区二区三区| 国产精品精品国产| 精品久久久久中文慕人妻| 久久综合网色—综合色88| 亚洲精品在线免费| 国产深夜视频在线观看| 色噜噜狠狠色综合欧洲selulu| 国产三级日本三级在线播放| 亚洲91网站| 亚洲天堂免费观看| 青青草成人免费| 日av在线不卡| 精品国产一区二区三区四区vr| eeuss影院在线播放| 一区二区三区四区在线| 丁香婷婷激情网| av不卡一区二区| 色婷婷成人综合| 国产超碰人人爽人人做人人爱| 精品一区二区在线视频| 久久艳妇乳肉豪妇荡乳av| 午夜在线观看视频| 欧美日韩一区二区精品| 337p日本欧洲亚洲大胆张筱雨| 欧美一区电影| 17婷婷久久www| 精品久久国产视频| 中文字幕欧美一| 999香蕉视频| 欧美五码在线| 欧美激情伊人电影| 国产尤物在线观看| 国产女主播视频一区二区| 日韩小视频在线播放| 亚洲1区在线观看| 久久综合久久美利坚合众国| 国产精品传媒在线观看| 久久久青草青青国产亚洲免观| 日韩精品一区二区三区四| 999精品视频在线观看| 亚洲天堂影视av| 国产精品一区无码| xnxx国产精品| 国产特级黄色大片| 久久动漫网址| 午夜精品久久久久久久99黑人 | 欧美日韩黄色影视| 538精品视频| 天堂精品中文字幕在线| 久久精品人人做人人爽电影| 日本天码aⅴ片在线电影网站| 欧美一区二区在线播放| 女人18毛片毛片毛片毛片区二| 免费在线看成人av| 亚洲蜜桃av| 热久久久久久| 日韩在线观看免费高清| 91在线精品入口| 综合在线观看色| 杨幂一区二区国产精品| 影音先锋日韩在线| 91亚洲精品丁香在线观看| a视频在线免费看| 日韩欧美激情在线| 国产亚洲精品女人久久久久久| 国产69精品久久久久毛片 | 超碰人人cao| 欧美特黄一区| 国产尤物99| 欧美色网一区| 视频在线观看99| 国产精品毛片一区二区在线看舒淇| 国产精品短视频| 超碰在线资源站| 自拍偷拍欧美专区| 99在线看视频| 女人让男人操自己视频在线观看| 日韩精品在线观看网站| 69av视频在线观看| 国产精品区一区二区三区| 亚洲色图欧美自拍| 日韩午夜av在线| 日韩欧美视频一区二区| 少妇高潮一区二区三区99| 免费av一区二区| 欧美亚洲精品在线观看| 狠狠操狠狠色综合网| 一级性生活大片| 免费亚洲电影在线| 亚洲精品乱码久久久久久蜜桃91| 玖玖精品在线| 久久久久久国产精品美女| 欧美视频综合| 6080亚洲精品一区二区| 日韩欧美不卡视频| 国产精品久久久久久久久果冻传媒| 国产黄色一区二区三区| 中文一区在线| 中文字幕av导航| 久久综合社区| 国产精品视频一区国模私拍 | 欧美激情按摩在线| 日韩a级作爱片一二三区免费观看| 欧美日韩在线三区| 日本三级一区二区| 国产精品久久久久毛片软件| 精品无码av一区二区三区| 日韩成人精品在线观看| 奇米777四色影视在线看| 国产欧美日韩免费观看 | 国产一区二区三区免费在线| 91精品国产91久久| 毛片激情在线观看| 亚洲美女www午夜| 精品国产九九九| 欧美亚洲国产一区在线观看网站| 国产无遮挡又黄又爽又色| 亚洲欧洲色图综合| 免费在线观看污| 成人国产精品免费观看| 国产欧美一区二| 日韩精品色哟哟| 无码专区aaaaaa免费视频| 亚洲精品二区三区| 欧美日韩亚洲综合一区二区三区激情在线| 四虎地址8848精品| 日本中文字幕成人| 美女91在线| 美日韩在线视频| 波多野结衣在线网站| 日韩精品一区二区视频| 亚洲av综合色区无码一区爱av| 欧美日韩中文字幕精品| 久久久精品视频网站| 亚洲一卡二卡三卡四卡五卡| 乱h高h女3p含苞待放| 国产精品进线69影院| 一区二区三区四区免费| 久久久夜色精品亚洲| 一级国产黄色片| 99久久精品国产导航| 国产国语老龄妇女a片| 国产精品一二一区| 国产黄色一区二区三区| 韩国一区二区在线观看| 91 在线视频观看| 韩日欧美一区二区三区| 亚洲精品国产一区二区三区| 久久电影国产免费久久电影| 无限资源日本好片| 免费在线观看成人| 五月婷婷狠狠操| 久久久久久自在自线| 久久精品国产精品亚洲色婷婷| 一区二区日韩免费看| 精品久久一二三| 国产精品亚洲产品| 黄色片久久久久| 日日欢夜夜爽一区| 国产小视频精品| 精品一区二区免费看| www.亚洲自拍| 成人小视频免费在线观看| 波多野结衣视频播放| eeuss影院一区二区三区| 亚洲色图欧美日韩| 91小视频在线观看| 久久视频精品在线观看| 亚洲欧美在线观看| 欧美黄片一区二区三区| 亚洲国产成人91porn| 成人免费视频毛片| 欧美一a一片一级一片| 国产精品久久久久久久免费看 | 精品国产成人av在线免| 视频一区二区三区入口| 欧美性受xxxxxx黑人xyx性爽| 国产精品一二三区| 三级电影在线看| 亚洲欧洲一区二区在线播放| 69av视频在线| 精品成人国产在线观看男人呻吟| 日本天堂网在线| 欧美日韩色一区| 亚洲成人777777| 亚洲欧美在线播放| 蜜桃视频在线观看www社区| 欧美激情亚洲自拍| 午夜欧美巨大性欧美巨大| 成人性生交大片免费观看嘿嘿视频 | 国产午夜久久久| 欧美综合一区二区| 精品国产免费无码久久久| 亚洲欧美日韩久久久久久| 免费av网站在线观看| 欧美极品欧美精品欧美视频| 精品3atv在线视频| 91久久伊人青青碰碰婷婷| 久久97视频| 黑人巨大国产9丨视频| 亚洲国产一区二区精品专区| 免费看a级黄色片| 成人午夜视频福利| 国产精品国产三级国产专业不| 一区二区三区不卡在线观看 | 久久久久www| free性m.freesex欧美| 成人福利免费观看| 亚洲电影一级片| 狠狠精品干练久久久无码中文字幕 | 亚洲天堂网在线观看| 丝袜中文在线| 成人有码在线播放| 国内精品视频在线观看| 黄色一级视频在线播放| 九九国产精品视频| 成人黄色免费网址| 激情久久av一区av二区av三区| av官网在线观看| 深夜福利亚洲导航| 成人免费看视频网站| 国产麻豆一区二区三区在线观看| 国产精品99一区二区三| 成人黄色av片| 国产福利91精品| 久久国产波多野结衣| 在线亚洲一区观看| 欧美日本韩国一区二区| 午夜精品福利电影| 成人香蕉社区| 日韩精品一区二区在线视频| 国产精品综合网|