Nacos服务端流程图
?
-
Nacos的注冊(cè)表結(jié)構(gòu)是什么樣的?
-
答:Nacos是多級(jí)存儲(chǔ)模型,最外層通過namespace來實(shí)現(xiàn)環(huán)境隔離,然后是group分組,分組下就是服務(wù),一個(gè)服務(wù)有可以分為不同的集群,集群中包含多個(gè)實(shí)例。因此其注冊(cè)表結(jié)構(gòu)為一個(gè)Map,類型是:
Map<String, Map<String, Service>>,
外層key是namespace_id,內(nèi)層key是group+serviceName.
Service內(nèi)部維護(hù)一個(gè)Map,結(jié)構(gòu)是:Map<String,Cluster>,key是clusterName,值是集群信息
Cluster內(nèi)部維護(hù)一個(gè)Set集合,元素是Instance類型,代表集群中的多個(gè)實(shí)例。
-
-
Nacos如何保證并發(fā)寫的安全性?
-
答:首先,在注冊(cè)實(shí)例時(shí),會(huì)對(duì)service加鎖,不同service之間本身就不存在并發(fā)寫問題,互不影響。相同service時(shí)通過鎖來互斥。并且,在更新實(shí)例列表時(shí),是基于異步的線程池來完成,而線程池的線程數(shù)量為1.
-
-
Nacos如何避免并發(fā)讀寫的沖突?
-
答:Nacos在更新實(shí)例列表時(shí),會(huì)采用CopyOnWrite技術(shù),首先將Old實(shí)例列表拷貝一份,然后更新拷貝的實(shí)例列表,再用更新后的實(shí)例列表來覆蓋舊的實(shí)例列表。
-
-
Nacos如何應(yīng)對(duì)阿里內(nèi)部數(shù)十萬服務(wù)的并發(fā)寫請(qǐng)求?
-
答:Nacos內(nèi)部會(huì)將服務(wù)注冊(cè)的任務(wù)放入阻塞隊(duì)列,采用線程池異步來完成實(shí)例更新,從而提高并發(fā)寫能力。
-
總結(jié)
以上是生活随笔為你收集整理的Nacos服务端流程图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Nacos源码集群数据同步
- 下一篇: Nacos如何避免并发读写冲突问题?