国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

深度剖析:Dubbo使用Nacos注冊中心的坑

開發
本文主要梳理了Dubbo使用Nacos注冊中心的坑,同時也講述了,出現問題時,如何一步一步排查。

問題描述

前幾年我在做微服務部件升級時,將Dubbo的注冊中心從Zookeeper切換到Nacos。切換的原因是有2點:

  • Zookeeper保障了CP,面對大量服務上下線時,吞吐量和響應有瓶頸。Nacos保障了AP,目前微服務的場景下,業界建議優先保障AP,這樣有較好的吞吐量和較快的響應。
  • 本著能少用部件就少用,盡量減少故障點的原則。Nacos既可以做注冊中心也可以做配置中心,所以二合一,只采用一個部件。

切換完之后,奇怪的事情發生了,出現2個現象:

  • 有些微服務啟動很慢很慢,甚至長達15分鐘的時間都無法成功啟動,一直在打印大量的nacos請求日志。但是有些微服務啟動又較快。
  • 通過VisualVM查看JVM的線程情況,發現有的微服務居然高達4000左右的線程數。但是沒切換之前只有幾百的線程數。啟動了大量的線程,導致CPU飆升不少,同時服務啟動也慢。

通過現象開始排查

出現這種問題時,剛開始有點抓瞎,但是我們只能從常規的手段一點點排查,急不來。通過表面的現象,我們來逐步分析。

現象一:微服務啟動很慢很慢,一直在打印大量的nacos請求日志。日志如下:

現象二:JVM的線程數高達4000左右。線程情況如下:

基于以上現象,我們只能初步判斷是nacos的問題(當然結論不是nacos的問題)。

我們先來猜測:可能由于某種原因,產生了大量的nacos線程,每個線程又在不停的發送http請求。

那接下來繼續分析Nacos。

分析Nacos

1.回顧Nacos原理

我們知道Nacos客戶端注冊和訂閱服務流程大概如下:

所以,一般nacos-client有4個重要線程:

  • 定時從nacos-server拉取服務的線程
  • 維持心跳的線程
  • 監聽服務變更的線程
  • 推送本服務變更信息的線程

2.分析Nacos

根據以上線程的名稱和原理流程圖,我們可以在nacos源碼里找到對應的位置,代碼如下:

翻看每個線程里執行的任務,確實能找到他們都在向nacos-server發送對應的的http的api請求:

既然找到了創建線程和發起http調用的原因,那就繼續查看是哪里調用的init方法。

此時會自然想到dubbo了,因為dubbo采用nacos作為注冊中心,自然要依賴nacos-client創建出nacos注冊中心相關的類,然后從nacos注冊中心類中獲取到微服務的元數據信息。

Dubbo登場

在翻看Dubbo源碼之前,先回顧下Dubbo是怎樣基于 引用配置文件 或者 引用配置注解創建Proxy的,大致流程如下:

ReferenceAnnotationBeanPostProcessor#doGetInjectedBean

?

ReferenceAnnotationBeanPostProcessor#buildReferenceBeanIfAbsent

?

ReferenceBeanBuilder#build

?

ReferenceBean#afterPropertiesSet

?

ReferenceConfig#init

至此完成了referenceProxy的創建。

重點看ReferenceConfig#init方法,方法里有一行代碼:ref = createProxy(map);,順著這行代碼往里走,如下:

RegistryProtocol#refer

?

AbstractRegistryFactory#getRegistry

重點來了,重點來了,重點來了,核心代碼和注釋見下圖。

總之是:因為在上面ReferenceConfig#init方法里引入了timestamp參數,同時又因為NacosRegistryFactory又自己實現了一套createRegistryCacheKey方法,這個方法里沒有截掉timestamp參數,所有就會導致從緩存里取不到注冊中心信息,所有就會不停的去創建,從而又創建了更多的線程,從而發送了很多http請求。

再次查看ReferenceConfig#init方法的源碼,確實是加入了timestamp參數:

至此問題的原因已經找到了,接下來就是如何解決了。

解決方法

解決方法也很簡單,就是在Dubbo的NacosRegistryFactory類里面截掉timestamp參數。

遺憾的是,我當時發現了這個問題時,打算給Dubbo官方發issue的,發現已經有網友搶先一步發了issue,并且已經合并到2.7.9分支里了。

以下是解決方法的代碼截圖:

兩個版本處理URL的結果如下:

2.7.8版本:
nacos://10.20.1.13:8848,10.20.1.14:8848,10.20.1.15:8848/org.apache.dubbo.registry.RegistryService?application=ehome-cloud&application.version=1.0&dubbo=2.0.2&interface=org.apache.dubbo.registry.RegistryService&namespace=dev-jzj&owner=ehome-cloud-owner&pid=21335&qos.enable=false&release=2.7.8×tamp=1712545856489

2.7.9版本:
nacos://10.20.1.13:8848,10.20.1.14:8848,10.20.1.15:8848/org.apache.dubbo.registry.RegistryService?namespace=dev-jzj

這個問題是在dubbo的2.7.8版本出現的,最后通過將2.7.9的修復class替換了2.7.8的NacosRegistryFactoryclass類,然后重新打了dubbo依賴包,問題得以解決。

有朋友會問:為啥不是引用2.7.9呢?因為我擔心2.7.9有其他問題,所以做個class替換,然后繼續用2.7.8是個較好的方式。

總結

本文主要梳理了Dubbo使用Nacos注冊中心的坑,同時也講述了,出現問題時,如何一步一步排查。透過現象結合源碼,逐步找到問題的真相。

當然在排查之前,就需要對Dubbo和Nacos有一定的了解。所以各位朋友,在平時還是要多積累,多深入原理,這樣遇到問題才能順利解決。

責任編輯:趙寧寧 來源: 不焦躁程序員
相關推薦

2021-08-04 11:54:25

Nacos注冊中心設計

2023-03-01 08:15:10

NginxNacos

2023-10-30 09:35:01

注冊中心微服務

2023-01-30 22:43:39

DubboZooKeeper

2022-02-10 20:09:24

Dubbo源碼Provider

2022-08-30 22:12:19

Nacos組件服務注冊

2023-02-26 00:00:00

2020-06-29 07:58:18

ZooKeeperConsul 注冊中心

2023-07-18 08:28:58

注冊中心下線Nacos

2023-06-13 08:25:14

注冊中心Nacos上線

2023-09-12 07:10:13

Nacos架構

2023-04-26 08:19:48

Nacos高可用開發

2010-03-02 09:42:42

Android平臺

2023-01-05 07:55:59

Zookeeper服務注冊

2009-09-01 16:14:11

C#泛型

2010-09-25 15:21:29

2024-08-06 09:08:59

2022-04-27 20:02:22

Dubbo注冊中心開發

2021-08-02 07:35:19

Nacos配置中心namespace

2025-05-08 09:31:06

點贊
收藏

51CTO技術棧公眾號

精品一区免费| a视频在线免费看| 欧美精品中文| 1000精品久久久久久久久| 国产免费一区二区三区在线观看| 日本福利片高清在线观看| 久久国产综合精品| 成人春色激情网| 精品国产亚洲一区二区三区在线| 色一情一乱一乱一91av| 久草在在线视频| 精品影视av免费| 你懂的一区二区| 激情中国色综合| 色婷婷综合在线| 免费的很黄很污的视频网站| 日韩黄色片在线观看| 国产精品久久久久久久久久新婚| 欧美伦理91| 欧美精品成人一区二区三区四区| 国产bdsm| 久久先锋影音av| 国产又粗又大又爽的视频| 亚洲性图久久| 国产精品嫩草影院久久久| 台湾天天综合人成在线| 亚洲成人1234| 亚洲天天影视| 福利一区福利二区微拍刺激| 激情丁香婷婷| 91蜜桃婷婷狠狠久久综合9色| 视频一区国产精品| 日韩天堂av| 成人在线视频电影| 久久中文字幕二区| 国产精品成人品| 久久激情av| 久久全国免费视频| 动漫一区二区三区| 中文字幕日韩电影| 亚洲wwww| 这里只有精品在线播放| 欧美91看片特黄aaaa| 亚洲福利视频网站| 成人影欧美片| 欧美一级久久久| 99自拍视频在线观看| 欧美一卡2卡3卡4卡| 18+视频在线观看| 欧美成人精品3d动漫h| 尤物yw193can在线观看| 欧美不卡在线视频| 日本欧美不卡| 欧美大荫蒂xxx| 亚洲va久久| 国产精品网红直播| 国内精品福利| 涩涩日韩在线| 国产成人精品免费看| 日本三级免费网站| 自拍偷拍亚洲综合| 欧洲天堂在线观看| 日韩一级高清毛片| 性欧美1819sex性高清| 久久全球大尺度高清视频| 欧美成人精品一区二区三区在线看| 91精品视频一区| 久久久蜜桃一区二区人| 亚洲国产一二三精品无码| 美女胸又www又黄的网站| 狠狠综合久久av一区二区蜜桃 | 777午夜精品电影免费看| 一区在线影院| 国产欧美精品一区二区三区| 久草精品在线观看| 久久精品久久久久久国产 免费| 日韩久久99| 45www国产精品网站| 国产韩日影视精品| 欧美日韩一区综合| 成人高清视频在线观看| av三级影院| 欧美日韩小视频| videos性欧美另类高清| 性欧美长视频免费观看不卡| 欧美天天在线| 久久av高潮av| 亚洲一区在线观看免费观看电影高清 | 亚洲高清在线观看一区| 国产.精品.日韩.另类.中文.在线.播放| 欧美性大战久久久久xxx| 玉足女爽爽91| av免费网站在线| 久久精品久久久久久| 久久91精品| 宅男噜噜99国产精品观看免费| 国产精品护士白丝一区av| 日本高清在线观看wwwww色| 亚洲天堂av在线免费观看| 亚洲欧美日本伦理| 亚洲视频欧美在线| 亚洲综合激情小说| 午夜欧美激情| 成人免费网站在线看| 激情另类小说区图片区视频区| 国产熟人av一二三区| 91精品国产色综合久久久蜜香臀| 777av视频| 亚洲综合色网站| 国外男同性恋在线看| 欧美精品日韩一本| 51精品国产| 国产午夜精品久久久| 欧美黄色视屏| 亚洲一区中文字幕| 丁香婷婷综合激情五月色| 精品91一区二区三区| 性高湖久久久久久久久| 妺妺窝人体色www在线观看| 中文字幕欧美日韩一区| 一级视频在线免费观看| 精品少妇一区二区三区免费观看 | 中文字幕精品在线播放| 国产三级一区二区| 免费网站成人| 日韩av电影免费观看高清| 国产黑丝在线一区二区三区| 深夜福利在线看| 九色成人免费视频| 免费人成网站在线观看欧美高清| 一区二区三区高清在线视频| 久久五月情影视| 激情五月婷婷综合| 亚洲欧美视频一区二区| 亚洲男人资源| 九九热99久久久国产盗摄| 亚洲影视在线| 一二三区在线观看| 97精品欧美一区二区三区| 成人av在线影院| 直接在线观看的三级网址| 99超碰麻豆| 亚洲成av人综合在线观看| 国产亚洲成av人片在线观黄桃| 黄色片免费在线观看视频| 欧美四级电影在线观看| 激情婷婷综合| 欧美伦理片在线观看| 久久不射电影网| 成人教育av在线| 成人免费无遮挡| 亚洲欧美日韩精品久久久| 欧美一区二区在线不卡| 最新成人av网站| 在线观看免费黄色| 亚洲va国产va天堂va久久| 亚洲无线码一区二区三区| 极品束缚调教一区二区网站| 男女视频一区二区三区| 美女少妇精品视频| 久久久五月婷婷| 欧美重口另类videos人妖| 91精品国产吴梦梦| 四虎永久国产精品| 97视频国产在线| 日韩在线观看免费高清| 欧美一区二区在线视频| 国产欧美日韩视频在线观看| 成人欧美一区二区三区小说| 久久69国产一区二区蜜臀| 亚洲福利免费| 91精品国产自产在线观看永久∴| 欧美99久久| 亚洲黄色在线视频| 国产91在线播放| 成人动漫h在线观看| 亚洲精品观看| 99精品国产视频| 日韩大陆欧美高清视频区| 久久综合狠狠综合久久综青草| 国产区欧美区日韩区| 亚洲乱码国产一区三区| www.欧美黄色| 在线国产小视频| www免费视频观看在线| 男人天堂久久久| 99re66热这里只有精品8| 日韩一级淫片| 红桃成人av在线播放| 精品一区二区免费| 欧美日韩成人综合| 免费在线一区二区| 91网址在线播放| 福利在线播放| 欧美顶级毛片在线播放| 麻豆精品在线播放| 美女网站在线免费欧美精品| 亚洲精品视频免费观看| 日韩av在线网| 一区二区三区在线观看www|