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