Nacos 1.0.0 功能預(yù)覽

本文來自于我的個人主頁:Nacos 1.0.0 功能預(yù)覽,轉(zhuǎn)載請保留鏈接 ;)

Nacos 1.0.0 是正式 GA 的版本爽彤,在架構(gòu)、功能和API設(shè)計上進行了全方位的重構(gòu)和升級,1.0.0版本標(biāo)志著Nacos的架構(gòu)已經(jīng)穩(wěn)定巨税,API列表最終確定。升級到1.0.0相比升級到其他版本途凫,需要額外的一些工作垢夹,本文專門介紹如何從Nacos 0.8.0以上版本升級到1.0.0 版本的所有步驟和細(xì)節(jié)。

重要提示

Nacos 1.0.0 服務(wù)端不兼容 0.8.0 以前的版本维费,如果您想升級到1.0.0果元,請先升級服務(wù)端到0.8.0版本促王。同樣的,Nacos 1.0.0 不兼容 0.8.0 以下版本的客戶端訪問而晒。

變更列表

naming 模塊

  • 注冊實例支持 ephemeral字段 #502,#677;
  • 去除了服務(wù)的健康檢查模式蝇狼;
  • 注冊實例支持 groupName字段 #269;
  • 去掉了/nacos/v1/ns/api/下的所有接口,轉(zhuǎn)移到其他URL #651;
  • 增加了Server狀態(tài)的設(shè)置 #744;
  • 增加Server運行模式的設(shè)置 #745;
  • 增加全局推送開關(guān) #634;
  • 支持啟動時數(shù)據(jù)預(yù)熱 #629;
  • 元數(shù)據(jù)編輯框優(yōu)化 #479;

config 模塊

  • 支持MySQL 8.0 #613;

其他

  • API完整列表開放倡怎,模型設(shè)計和架構(gòu)設(shè)計文檔發(fā)布迅耘;

變更詳情

注冊實例支持ephemeral字段

Nacos 在 1.0.0版本 instance級別增加了一個ephemeral字段,該字段表示注冊的實例是否是臨時實例還是持久化實例监署。如果是臨時實例颤专,則不會在 Nacos 服務(wù)端持久化存儲,需要通過上報心跳的方式進行包活钠乏,如果一段時間內(nèi)沒有上報心跳栖秕,則會被 Nacos 服務(wù)端摘除。在被摘除后如果又開始上報心跳晓避,則會重新將這個實例注冊簇捍。持久化實例則會持久化被 Nacos 服務(wù)端,此時即使注冊實例的客戶端進程不在俏拱,這個實例也不會從服務(wù)端刪除暑塑,只會將健康狀態(tài)設(shè)為不健康。

ephemeral字段

同一個服務(wù)下可以同時有臨時實例和持久化實例锅必,這意味著當(dāng)這服務(wù)的所有實例進程不在時事格,會有部分實例從服務(wù)上摘除,剩下的實例則會保留在服務(wù)下搞隐。

另一個需要注意的是分蓖,臨時實例和持久化實例,在特定的服務(wù)端進行模式下可能不允許進行注冊尔许,這和下面要講的第5個變更有關(guān)么鹤。

注意事項

  • 當(dāng)從老版本的 Nacos 升級到 Nacos 1.0.0 時,從磁盤加載的實例數(shù)據(jù)會被置為持久化實例味廊,而只存在于內(nèi)存里的實例數(shù)據(jù)將會丟失蒸甜。
  • 此時若老客戶端再連上 Nacos Server 進行實例注冊,會以當(dāng)前 Server 的運行模式來設(shè)置是否持久化實例余佛。
  • 若老客戶端只是在持續(xù)發(fā)送客戶端心跳柠新,那么在Server以AP模式運行時,如果實例存在辉巡,會自動進行注冊恨憎。

去除了服務(wù)的健康檢查模式

之前服務(wù)的健康檢查模式有三種:client、server 和none, 分別代表客戶端上報、服務(wù)端探測和取消健康檢查憔恳。在控制臺操作的位置如下所示:

健康檢查模式

在 Nacos 1.0.0 中將把這個配置去掉瓤荔,改為使用實例的ephemeral來判斷,ephemeraltrue對應(yīng)的是服務(wù)健康檢查模式中的 client 模式,為false對應(yīng)的是 server 模式钥组。

注冊實例支持groupName字段

客戶端注冊實例時输硝,可以在方法級別指定要注冊的分組名,這個分組名和服務(wù)名是對服務(wù)的一個二維的標(biāo)識程梦,二者共同定位一個服務(wù)点把。一個典型的使用分組的實例如下:

namingServer.registerInstance("nacos.test.1","group1",instance);

不指定分組的接口依然是支持的,此時會在服務(wù)端為這個服務(wù)分配一個默認(rèn)的分組:DEFAULT_GROUP屿附。

去掉了/nacos/v1/ns/api/下的所有接口郎逃,轉(zhuǎn)移到其他URL

為了讓 Nacos 的 API 分類更加合理,管理更加清晰挺份,原來在/nacos/v1/ns/api/下的接口都會轉(zhuǎn)移到相應(yīng)的其他URL下衣厘。Nacos 服務(wù)發(fā)現(xiàn)總體定義了 /instance,/service,/cluster,/health,/operator,/catalog,/raft 等 URL 目錄,后面所有的 openAPI 都會根據(jù)其類型放到相應(yīng)的 URL 下压恒。對用戶造成的影響是一些早期的版本客戶端可能無法在訪問 Nacos 服務(wù)端。

注意事項

  • 0.8.0及一下版本客戶端都有調(diào)用這個 URL 下的接口错邦,0.8.0 只依賴/nacos/v1/ns/api/hello 接口探赫,所以對0.8.0的兼容問題不大。
  • 多語言 SDK 和 DNS-F 需要檢查下調(diào)用的接口撬呢,及時升級伦吠。

增加了Server狀態(tài)的設(shè)置

Nacos 增加了對 Server 狀態(tài)的控制,所有的狀態(tài)都定義在com.alibaba.nacos.naming.cluster.ServerStatus類里魂拦。

Server狀態(tài)設(shè)置

各個狀態(tài)的含義介紹如下:

  • UP: Server 一切正常毛仪,讀寫請求都會被接受;
  • DOWN: Server 異常芯勘,所有請求會返回 HTTP 503 錯誤箱靴;
  • STARTING: Server 還在啟動中,所有請求返回 HTTP 503 錯誤荷愕;
  • STARTING:Server 還在啟動中衡怀,所有請求返回HTTP 503 錯誤;
  • PAUSED:Server 被人工暫停安疗,區(qū)別于 DOWN 可能是系統(tǒng)自己檢測到異常抛杨,然后設(shè)置 DOWN 狀態(tài),PAUSED 狀態(tài)表示當(dāng)前 Server 可能是沒問題的荐类,只是人工進行了干預(yù)怖现;
  • WRITE_ONLY: 只有非 GET 請求會被接受;
  • READ_ONLY: 只有 GET 請求會被接受玉罐;

用戶可以使用如下接口來修飾集群所有機器的狀態(tài)屈嗤,如果再加上debug=true參數(shù),則只修改當(dāng)前機器的狀態(tài)潘拨。

curl-X PUT
'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=overridenServerStatus&value=READ_ONLY'

同時這個狀態(tài)是會自適應(yīng)進行修改的,比如啟動時這個狀態(tài)為STARTING,等到數(shù)據(jù)裝載完畢恢共,則會自動將狀態(tài)置為 UP,在運行過程中战秋,如果檢測到系統(tǒng)異常如磁盤滿,則又會將狀態(tài)置為DOWN讨韭。不過自適應(yīng)的狀態(tài)值優(yōu)先級要低于使用接口設(shè)置的狀態(tài)值脂信,因此當(dāng)你想恢復(fù)自適應(yīng)的狀態(tài)調(diào)解的時候,記得將接口中overriddenServerStatus設(shè)置為空透硝。

增加Server運行模式的設(shè)置

Server的運行模式狰闪,是指 Nacos Server 可以運行在多種模式下,當(dāng)前支持三種模式:AP濒生、CP和 MIXED 埋泵。這里的運行模式,使用的是CAP理論里的C罪治、A和P概念丽声。基于CAP理論觉义,在分布式系統(tǒng)中雁社,數(shù)據(jù)的一致性、服務(wù)的可用性和網(wǎng)絡(luò)分區(qū)容忍性只能三者選二晒骇。一般來說分布式系統(tǒng)需要支持網(wǎng)絡(luò)分區(qū)容忍性霉撵,那么就只能在C和A里選擇一個作為系統(tǒng)支持的屬性。C 的準(zhǔn)確定義應(yīng)該是所有節(jié)點在同一時間看到的數(shù)據(jù)是一致的洪囤,而A的定義是所有的請求都會收到響應(yīng)徒坡。

Nacos 支持 AP 和 CP 模式的切換,這意味著 Nacos 同時支持兩者一致性協(xié)議瘤缩。這樣喇完,Nacos能夠以一個注冊中心管理這些生態(tài)的服務(wù)。不過在Nacos中剥啤,AP模式和CP模式的具體含義何暮,還需要再說明下。

AP模式為了服務(wù)的可能性而減弱了一致性铐殃,因此AP模式下只支持注冊臨時實例海洼。AP 模式是在網(wǎng)絡(luò)分區(qū)下也能夠注冊實例。在AP模式下也不能編輯服務(wù)的元數(shù)據(jù)等非實例級別的數(shù)據(jù)富腊,但是允許創(chuàng)建一個默認(rèn)配置的服務(wù)坏逢。同時注冊實例前不需要進行創(chuàng)建服務(wù)的操作,因為這種模式下,服務(wù)其實降級成一個簡單的字符創(chuàng)標(biāo)識是整,不在存儲任何屬性肖揣,會在注冊實例的時候自動創(chuàng)建。

CP模式下則支持注冊持久化實例浮入,此時則是以 Raft 協(xié)議為集群運行模式龙优,因此網(wǎng)絡(luò)分區(qū)下不能夠注冊實例,在網(wǎng)絡(luò)正常情況下事秀,可以編輯服務(wù)器別的配置彤断。改模式下注冊實例之前必須先注冊服務(wù),如果服務(wù)不存在易迹,則會返回錯誤宰衙。

MIXED 模式可能是一種比較讓人迷惑的模式,這種模式的設(shè)立主要是為了能夠同時支持臨時實例和持久化實例的注冊睹欲。這種模式下供炼,注冊實例之前必須創(chuàng)建服務(wù),在服務(wù)已經(jīng)存在的前提下窘疮,臨時實例可以在網(wǎng)絡(luò)分區(qū)的情況下進行注冊袋哼。

使用如下請求進行Server運行模式的設(shè)定:

curl -X PUT
'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP'

注意事項

  • 何時選擇使用何種模式?一般來說闸衫,如果需要在服務(wù)級別編輯或者存儲配置信息涛贯,那么 CP 是必須要使用的模式,如果不需要存儲服務(wù)級別的信息楚堤,且服務(wù)實例是通過nacos-client注冊,并能夠保持心跳上報含懊,那么就可以選擇AP模式身冬。當(dāng)前主流的服務(wù)如 Spring cloud 和 Dubbo 服務(wù),都適用于AP模式岔乔,而K8S服務(wù)和DNS服務(wù)酥筝,則適用于CP模式。AP模式的服務(wù)實例可以在CP模式下注冊雏门,例如Zookeeper,但是反過來不能嘿歌。
  • 切換運行模式,對原有數(shù)據(jù)不會影響茁影,但是會影響新數(shù)據(jù)的創(chuàng)建和老數(shù)據(jù)的更新和刪除宙帝。

增加全局推送開關(guān)

支持了全局推送開關(guān),可以打開或者關(guān)閉服務(wù)變更的推送募闲,調(diào)用接口如下:

curl -X PUT
'$NACOS_SERVER:8848/nacos/v1/ns/operator/switches?entry=pushEnabled&value=false'

關(guān)閉推送后步脓,客戶端依然會通過輪詢的方式來更新到數(shù)據(jù),只是更新的速度沒有推送那么快。

支持啟動時數(shù)據(jù)預(yù)熱

在老版本的Nacosz中靴患,只要Server啟動成功就會開始對外提供服務(wù)仍侥,此時服務(wù)的數(shù)據(jù)并不一定完全加載完成,這樣可能會導(dǎo)致客戶端接收到的數(shù)據(jù)并不完整鸳君。1.0.0增加了數(shù)據(jù)預(yù)熱的邏輯农渊,對于持久化數(shù)據(jù),則會等待所有數(shù)據(jù)從磁盤加載完成或颊,對于臨時實例這樣的非持久化數(shù)據(jù)砸紊,則會等待從其他Server拉取到完整數(shù)據(jù)。所有數(shù)據(jù)都準(zhǔn)備好后饭宾,才會將Server狀態(tài)置為UP批糟。

注意事項

  • 對于臨時實例的預(yù)熱,實現(xiàn)機制是Server在啟動時會從其他Server節(jié)點拉取數(shù)據(jù)看铆,拉取成功則啟動成功徽鼎,但是當(dāng)從老版本Server升級到1.0.0時,由于這個拉取全量數(shù)據(jù)的接口在老版本Server不存在弹惦,那么第一個升級的機器將無法拉到任何數(shù)據(jù)否淤,從而后面升級的機器也無法從第一個升級的機器拉取到數(shù)據(jù)。此時建議使用調(diào)用API將Server的運行狀態(tài)設(shè)置為WRITE_ONLY,允許客戶端數(shù)據(jù)逐步匯聚補償上來棠隐,但是阻止任何查詢的流量石抡,等集群數(shù)據(jù)準(zhǔn)備好以后,再將這個運行狀態(tài)清空助泽,集群自己調(diào)整運行狀態(tài)啰扛,然后就會提供完整服務(wù)。

元數(shù)據(jù)編輯框優(yōu)化

此前的元數(shù)據(jù)編輯框需要用戶按照指定格式來編輯嗡贺,容易出錯隐解,如下如所示:

元數(shù)據(jù)編輯框優(yōu)化1

1.0.0將會對服務(wù)頁面的元數(shù)據(jù)編輯框進行優(yōu)化,在調(diào)整編輯框大小的同時诫睬,增加語法高亮煞茫,方便用戶進行編輯和識別格式問題,一個大概的編輯框預(yù)覽圖如下:

元數(shù)據(jù)編輯框優(yōu)化2

支持MySQL 8.0

Nacos 1.0.0將支持MySQL 8.0 驅(qū)動摄凡。

API完整列表開發(fā)续徽,模型設(shè)計和架構(gòu)設(shè)計文檔發(fā)布

服務(wù)發(fā)現(xiàn)和配置管理的完整API列表會發(fā)布到官網(wǎng),同時對于Nacos的數(shù)據(jù)模型亲澡,集群模型钦扭,架構(gòu)設(shè)計及模塊設(shè)計等文檔也會發(fā)布。

除了上面提到的變更床绪,Nacos 1.0.0還進行了代碼的優(yōu)化和一些bug的修復(fù)土全,完整的變更列表可以參考:https://github.com/alibaba/nacos/issues?q=is%3Aopen+is%3Aissue+milestone%3A1.0.0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末捎琐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子裹匙,更是在濱河造成了極大的恐慌瑞凑,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件概页,死亡現(xiàn)場離奇詭異籽御,居然都是意外死亡,警方通過查閱死者的電腦和手機惰匙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進店門技掏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人项鬼,你說我怎么就攤上這事哑梳。” “怎么了绘盟?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵鸠真,是天一觀的道長。 經(jīng)常有香客問我龄毡,道長吠卷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任沦零,我火速辦了婚禮祭隔,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘路操。我一直安慰自己疾渴,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布屯仗。 她就那樣靜靜地躺著搞坝,像睡著了一般。 火紅的嫁衣襯著肌膚如雪祭钉。 梳的紋絲不亂的頭發(fā)上瞄沙,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天己沛,我揣著相機與錄音慌核,去河邊找鬼。 笑死申尼,一個胖子當(dāng)著我的面吹牛垮卓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播师幕,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼粟按,長吁一口氣:“原來是場噩夢啊……” “哼诬滩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起灭将,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤疼鸟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后庙曙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體空镜,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年捌朴,在試婚紗的時候發(fā)現(xiàn)自己被綠了吴攒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡砂蔽,死狀恐怖洼怔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情左驾,我是刑警寧澤镣隶,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站什荣,受9級特大地震影響矾缓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜稻爬,卻給世界環(huán)境...
    茶點故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一嗜闻、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧桅锄,春花似錦琉雳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至辫秧,卻和暖如春束倍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盟戏。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工绪妹, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人柿究。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓邮旷,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蝇摸。 傳聞我的和親對象是個殘疾皇子婶肩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,675評論 2 359