利用事件監(jiān)聽(tīng)接口
源碼總結(jié):
? ? nacos是一個(gè)由spring boot web編寫(xiě)的消息服務(wù)中間件,暴露了一些指定接口來(lái),通過(guò)調(diào)用我們的指定接口來(lái)完成服務(wù)的注冊(cè)等功能
這里首先展示nacos主要流程
核心Controller 方法
通過(guò)請(qǐng)求類(lèi)型來(lái)完成實(shí)例的增刪改查
通過(guò)雙層Map的方式存放所有注冊(cè)的實(shí)例信息 其中主要使用到定時(shí)線(xiàn)程池啟動(dòng)后5秒后每隔5秒開(kāi)始檢測(cè)服務(wù)是否下線(xiàn)等等邏輯,nacos默認(rèn)注冊(cè)臨時(shí)節(jié)點(diǎn)
兩個(gè)方法:一個(gè)生產(chǎn)臨時(shí)節(jié)點(diǎn)一個(gè)生產(chǎn)持久化節(jié)點(diǎn)
雙層Map負(fù)責(zé)存儲(chǔ)服務(wù)實(shí)例數(shù)據(jù) 部署一個(gè)Nacos可以同時(shí)支持眾多環(huán)境的服務(wù)注冊(cè)功能 可以用map最外層的Key來(lái)區(qū)別?
nacos為了防止服務(wù)注冊(cè)時(shí)多重讀寫(xiě) 用到了單線(xiàn)程,copyOnWrite思想寫(xiě)副本 ,修改和讀數(shù)據(jù)分開(kāi) ,提高高并發(fā)性,對(duì)實(shí)時(shí)性有一些妥協(xié),但是影響不大
優(yōu)雅的雙層鎖代碼設(shè)計(jì) 不得不說(shuō)閱讀nacos的源碼是一種享受