日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

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

來源: 責編: 時間:2024-04-11 09:04:05 241觀看
導讀問題描述前幾年我在做微服務部件升級時,將Dubbo的注冊中心從Zookeeper切換到Nacos。切換的原因是有2點:Zookeeper保障了CP,面對大量服務上下線時,吞吐量和響應有瓶頸。Nacos保障了AP,目前微服務的場景下,業界建議優先保障AP

m6W28資訊網——每日最新資訊28at.com

問題描述

前幾年我在做微服務部件升級時,將Dubbo的注冊中心從Zookeeper切換到Nacos。切換的原因是有2點:m6W28資訊網——每日最新資訊28at.com

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

切換完之后,奇怪的事情發生了,出現2個現象:m6W28資訊網——每日最新資訊28at.com

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

通過現象開始排查

出現這種問題時,剛開始有點抓瞎,但是我們只能從常規的手段一點點排查,急不來。通過表面的現象,我們來逐步分析。m6W28資訊網——每日最新資訊28at.com

現象一:微服務啟動很慢很慢,一直在打印大量的nacos請求日志。日志如下:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

現象二:JVM的線程數高達4000左右。線程情況如下:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

基于以上現象,我們只能初步判斷是nacos的問題(當然結論不是nacos的問題)。m6W28資訊網——每日最新資訊28at.com

我們先來猜測:可能由于某種原因,產生了大量的nacos線程,每個線程又在不停的發送http請求。m6W28資訊網——每日最新資訊28at.com

那接下來繼續分析Nacos。m6W28資訊網——每日最新資訊28at.com

分析Nacos

1.回顧Nacos原理

我們知道Nacos客戶端注冊和訂閱服務流程大概如下:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

所以,一般nacos-client有4個重要線程:m6W28資訊網——每日最新資訊28at.com

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

2.分析Nacos

根據以上線程的名稱和原理流程圖,我們可以在nacos源碼里找到對應的位置,代碼如下:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

翻看每個線程里執行的任務,確實能找到他們都在向nacos-server發送對應的的http的api請求:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

既然找到了創建線程和發起http調用的原因,那就繼續查看是哪里調用的init方法。m6W28資訊網——每日最新資訊28at.com

此時會自然想到dubbo了,因為dubbo采用nacos作為注冊中心,自然要依賴nacos-client創建出nacos注冊中心相關的類,然后從nacos注冊中心類中獲取到微服務的元數據信息。m6W28資訊網——每日最新資訊28at.com

Dubbo登場

在翻看Dubbo源碼之前,先回顧下Dubbo是怎樣基于 引用配置文件 或者 引用配置注解創建Proxy的,大致流程如下:m6W28資訊網——每日最新資訊28at.com

ReferenceAnnotationBeanPostProcessor#doGetInjectedBean

?m6W28資訊網——每日最新資訊28at.com

ReferenceAnnotationBeanPostProcessor#buildReferenceBeanIfAbsent

?m6W28資訊網——每日最新資訊28at.com

ReferenceBeanBuilder#build

?m6W28資訊網——每日最新資訊28at.com

ReferenceBean#afterPropertiesSet

?m6W28資訊網——每日最新資訊28at.com

ReferenceConfig#init

至此完成了referenceProxy的創建。m6W28資訊網——每日最新資訊28at.com

重點看ReferenceConfig#init方法,方法里有一行代碼:ref = createProxy(map);,順著這行代碼往里走,如下:m6W28資訊網——每日最新資訊28at.com

RegistryProtocol#refer

?m6W28資訊網——每日最新資訊28at.com

AbstractRegistryFactory#getRegistry

重點來了,重點來了,重點來了,核心代碼和注釋見下圖。m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

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

再次查看ReferenceConfig#init方法的源碼,確實是加入了timestamp參數:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

至此問題的原因已經找到了,接下來就是如何解決了。m6W28資訊網——每日最新資訊28at.com

解決方法

解決方法也很簡單,就是在Dubbo的NacosRegistryFactory類里面截掉timestamp參數。m6W28資訊網——每日最新資訊28at.com

遺憾的是,我當時發現了這個問題時,打算給Dubbo官方發issue的,發現已經有網友搶先一步發了issue,并且已經合并到2.7.9分支里了。m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

以下是解決方法的代碼截圖:m6W28資訊網——每日最新資訊28at.com

m6W28資訊網——每日最新資訊28at.com

兩個版本處理URL的結果如下:m6W28資訊網——每日最新資訊28at.com

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=17125458564892.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依賴包,問題得以解決。m6W28資訊網——每日最新資訊28at.com

有朋友會問:為啥不是引用2.7.9呢?因為我擔心2.7.9有其他問題,所以做個class替換,然后繼續用2.7.8是個較好的方式。m6W28資訊網——每日最新資訊28at.com

總結

本文主要梳理了Dubbo使用Nacos注冊中心的坑,同時也講述了,出現問題時,如何一步一步排查。透過現象結合源碼,逐步找到問題的真相。m6W28資訊網——每日最新資訊28at.com

當然在排查之前,就需要對Dubbo和Nacos有一定的了解。所以各位朋友,在平時還是要多積累,多深入原理,這樣遇到問題才能順利解決。m6W28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-82749-0.html深度剖析:Dubbo使用Nacos注冊中心的坑

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python實現適配器模式、裝飾器模式、代理模式

下一篇: 深入理解C/C++指針的算術運算

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
日韩一级精品视频在线观看| 国产偷国产偷亚洲高清97cao| 蜜臀av在线播放一区二区三区| 蜜臀av一级做a爰片久久| 欧美极品一区二区三区| 一本久久综合亚洲鲁鲁五月天| 日韩视频在线你懂得| 亚洲欧美影院| 这里只有精品视频| 亚洲精品久久久久久久久久久久久| 亚洲精品乱码久久久久久蜜桃麻豆| 一二三四社区欧美黄| 欧美在线影院| 欧美国产日韩一区二区在线观看| 国产精品xvideos88| 精品999网站| 中文国产一区| 亚洲午夜精品一区二区三区他趣| 日韩视频在线观看免费| 亚洲欧美999| 久久夜色撩人精品| 麻豆av福利av久久av| 欧美人体xx| 国产自产v一区二区三区c| 最近看过的日韩成人| 久久久精品国产一区二区三区| 欧美日本一道本| 亚洲国产电影| 欧美成人小视频| 国产精品videossex久久发布| 韩国av一区二区三区四区| 亚洲精品国产精品国自产观看| 一区二区三区免费网站| 欧美激情在线狂野欧美精品| 一本色道久久综合一区| 久久人91精品久久久久久不卡| 国产一区二区成人久久免费影院| 美女精品在线观看| 99国产精品99久久久久久粉嫩| 国产精品一区二区三区免费观看| 99国产精品视频免费观看| 狠狠色狠狠色综合| 亚洲一区3d动漫同人无遮挡| 久久综合亚洲社区| 一区二区三区福利| 国产精品白丝av嫩草影院| 久久久久一区二区三区| 久久久欧美一区二区| 亚洲天堂av电影| 国产精品99久久久久久人| 日韩一级黄色片| 亚洲一区二区三区在线观看视频| 亚洲性视频网站| 久久久久国内| 欧美另类极品videosbest最新版本| 欧美日韩成人激情| 免费av成人在线| 亚洲自拍三区| 亚洲一本大道在线| 一区二区三区福利| 亚洲欧美日韩国产成人精品影院| 亚洲一区二区成人| 亚洲你懂的在线视频| 亚洲一区二区三区视频| 在线观看国产成人av片| 欧美人与性动交α欧美精品济南到| 欧美午夜www高清视频| 亚洲激情影视| 老司机免费视频一区二区| 国产视频一区二区在线观看| 亚洲视频一区二区| 欧美日韩四区| 9色国产精品| 欧美人成在线| 一本色道久久综合亚洲91| 欧美日韩1234| 日韩午夜精品| 欧美日韩精品一区二区三区四区| 亚洲精品无人区| 欧美另类变人与禽xxxxx| 亚洲精品字幕| 欧美日韩日本视频| 亚洲一级影院| 国产美女精品| 久久精品导航| 尤物yw午夜国产精品视频明星| 亚洲国产高清自拍| 免费视频亚洲| 亚洲精品国产日韩| 欧美日韩亚洲一区二区三区在线| 一区二区欧美在线| 欧美日韩日本视频| 亚洲综合丁香| 国产综合久久久久久| 亚洲一区二区不卡免费| 国产精品久久久久9999| 亚洲欧美韩国| 国产自产2019最新不卡| 免播放器亚洲| 一本色道久久综合亚洲精品不卡 | 国产日产欧美a一级在线| 欧美中文字幕在线播放| 激情成人av| 欧美丰满高潮xxxx喷水动漫| 一本一本久久| 国产欧美精品| 久久尤物电影视频在线观看| 亚洲精品国产精品乱码不99| 欧美三区在线| 亚洲精选在线观看| 欧美日韩一区二区精品| 亚洲免费视频在线观看| 国内自拍一区| 欧美黄色片免费观看| 亚洲午夜精品网| 韩国三级在线一区| 欧美专区日韩专区| 1000部精品久久久久久久久| 欧美日韩爆操| 欧美一区亚洲一区| 最新国产乱人伦偷精品免费网站| 欧美视频在线观看一区| 久久精品国产亚洲aⅴ| 国产视频观看一区| 蜜臀久久久99精品久久久久久 | 亚洲天堂成人在线视频| 国产一区二区三区久久久久久久久| 奶水喷射视频一区| 亚洲在线成人精品| 樱桃国产成人精品视频| 欧美视频一区在线观看| 久久久久久97三级| 中文在线一区| 一区二区三区在线高清| 欧美午夜精品电影| 久久美女性网| 亚洲午夜在线观看视频在线| 在线日本高清免费不卡| 国产精品久久波多野结衣| 老巨人导航500精品| 国产精品99久久久久久久久久久久| 国产亚洲精品aa| 欧美日韩国产色视频| 久久精品国产成人| 中日韩在线视频| 亚洲激情黄色| 国产区日韩欧美| 欧美日韩一区二区三区在线观看免| 久久成人免费网| 正在播放亚洲| 最近看过的日韩成人| 欧美欧美天天天天操| 欧美一级理论片| 国产综合色一区二区三区| 欧美日韩国产三区| 久久综合伊人77777蜜臀| 亚洲一区尤物| 亚洲精品看片| 国产综合色产| 欧美高清视频在线播放| 欧美一区二区三区精品| 一区二区av在线| 亚洲国产精品v| 国内成人精品2018免费看| 国产精品国产三级国产aⅴ浪潮| 欧美国产免费| 狂野欧美一区| 久久久久久久久久久久久女国产乱| 亚洲小视频在线| 夜夜嗨av一区二区三区网站四季av| 亚洲第一二三四五区| 国产午夜精品美女视频明星a级| 欧美午夜电影在线| 欧美美女bbbb| 欧美精品 国产精品| 男人插女人欧美| 亚洲视频在线免费观看| 亚洲精品视频在线看| 伊人成人在线视频| 国产亚洲欧美一区二区三区| 国产精品三级久久久久久电影| 欧美日韩综合视频| 欧美日本免费一区二区三区| 欧美1区视频| 亚洲高清一二三区| 激情五月婷婷综合| 国产综合久久久久久鬼色| 国产日韩精品视频一区| 国产农村妇女精品一区二区| 国产精品一二三视频| 国产精品久久久久久一区二区三区 | 裸体歌舞表演一区二区| 久久女同互慰一区二区三区| 久久国产手机看片| 久久国产精品色婷婷| 久久xxxx| 在线亚洲一区| 一本色道久久综合亚洲精品高清| 日韩视频在线一区二区三区| 亚洲精品中文字幕有码专区| 99re6热在线精品视频播放速度| 亚洲裸体在线观看| 99成人精品| 一区二区欧美国产|