基于nacos談?wù)勏到y(tǒng)平滑上下線方案

基于nacos系統(tǒng)平滑上下線方案

所謂平滑上下線簡(jiǎn)單說(shuō)就是系統(tǒng)發(fā)版升級(jí)過(guò)程對(duì)用戶無(wú)感知呜叫,不至于等到夜深人靜的時(shí)候偷偷去搞空繁,某些請(qǐng)求時(shí)間可以長(zhǎng)點(diǎn),但不能失敗朱庆。

一盛泡、系統(tǒng)架構(gòu)介紹

? ? Springboot2.1.5 +springcloudGreentich.SR1 +naocs2.1.4

二、備選方案

? ? 方案一

? ? 基于naocs提供的SDK接口進(jìn)行服務(wù)的注銷(xiāo)|注冊(cè)

? ? 在對(duì)應(yīng)服務(wù)中新增注銷(xiāo)服務(wù)的接口代碼如下:

系統(tǒng)升級(jí)步驟:? ?

a娱颊、在系統(tǒng)升級(jí)前先調(diào)用注銷(xiāo)接口將目標(biāo)服務(wù)實(shí)例注銷(xiāo)傲诵,服務(wù)實(shí)例列表中將會(huì)刪除該實(shí)例

b、注銷(xiāo)之后將這個(gè)實(shí)例服務(wù)進(jìn)行打包部署

c箱硕、部署后拴竹,調(diào)用服務(wù)注冊(cè)接口將該服務(wù)重新注冊(cè)

d、重復(fù)a剧罩、b栓拜、c完成服務(wù)的平滑升級(jí)過(guò)程

缺點(diǎn):

需要開(kāi)發(fā)人員手動(dòng)增加服務(wù)注銷(xiāo)|注冊(cè)的接口

存在時(shí)間窗口,服務(wù)實(shí)例狀態(tài)變化感知不實(shí)時(shí)

方案二

基于nacos的console上下線功能

? 系統(tǒng)升級(jí)步驟:?

a斑响、在系統(tǒng)升級(jí)前先在nacos的console管理臺(tái)將對(duì)應(yīng)實(shí)例的服務(wù)下線

b菱属、服務(wù)下線之后钳榨,請(qǐng)求不會(huì)再分發(fā)到這個(gè)實(shí)例上來(lái)舰罚,對(duì)服務(wù)進(jìn)行打包部署

c、啟動(dòng)之后薛耻,服務(wù)上線完成服務(wù)的平滑升級(jí)過(guò)程

d营罢、重復(fù)a、b饼齿、c完成服務(wù)的平滑升級(jí)過(guò)程

缺點(diǎn):

服務(wù)實(shí)例依然存在饲漾,只是負(fù)載均衡器進(jìn)行了過(guò)濾,通過(guò)實(shí)例IP還是可以訪問(wèn)得到

存在時(shí)間窗口缕溉,服務(wù)實(shí)例狀態(tài)變化感知不實(shí)時(shí)

兩者有個(gè)共同的缺點(diǎn)-存在時(shí)間窗口問(wèn)題

這個(gè)是由于ribbon緩存機(jī)制造成的考传,它維護(hù)本地一份服務(wù)列表信息,需要本地輪詢证鸥,或心跳機(jī)制服務(wù)端推送來(lái)更新服務(wù)列表

解決方案僚楞,將spring.cloud.nacos.discovery.watch-delay=xx參數(shù)設(shè)置到一個(gè)合適的大小,可以縮短這個(gè)窗口期

方案三

我們知道nacos實(shí)現(xiàn)了服務(wù)權(quán)重的功能枉层,可以在控制臺(tái)自由編輯泉褐,且實(shí)時(shí)生效,基于此誕生第三種方案

?系統(tǒng)升級(jí)步驟

a鸟蜡、升級(jí)前先將目標(biāo)服務(wù)的權(quán)重調(diào)節(jié)至0膜赃,這時(shí)流量將會(huì)被截?cái)啵?qǐng)求不會(huì)分發(fā)到該實(shí)例上來(lái)

b揉忘、進(jìn)行打包部署

c跳座、部署后將該實(shí)例權(quán)重調(diào)節(jié)至合適值端铛,完成系統(tǒng)平滑升級(jí)過(guò)程

d、重復(fù)a疲眷、b沦补、c完成服務(wù)的平滑升級(jí)過(guò)程

優(yōu)點(diǎn):

沒(méi)有前面兩種方案的時(shí)間窗口問(wèn)題

三、方案選擇

綜上所述咪橙,采用方案三實(shí)現(xiàn)系統(tǒng)平滑上下線能力

四夕膀、效果測(cè)試

有兩個(gè)要求:

1)ServiceA下線一臺(tái)實(shí)例后,gatewat網(wǎng)關(guān)的調(diào)用不能失敗?

2)ServiceB下線一臺(tái)實(shí)例后美侦,ServiceA的Feign調(diào)用不能失敗?

啟動(dòng)三個(gè)服務(wù)分別是

gateway? ? ? 8001

demo-service1? ? 8785? ? ? ? 權(quán)重 1

demo-service2? ? ? 8786? ? ? 權(quán)重 1

測(cè)試連接http://網(wǎng)關(guān)IP:8001/unicorn-demo-service/demo/info

模擬服務(wù)升級(jí)的過(guò)程

1产舞、首先將demo-service1的權(quán)重設(shè)置為0

此時(shí)再訪問(wèn)測(cè)試連接,發(fā)現(xiàn)不在接受請(qǐng)求菠剩,所有的請(qǐng)求處理都分發(fā)給了demo-service2

2易猫、對(duì)服務(wù)進(jìn)行升級(jí),重新部署具壮,并啟動(dòng)完成

3准颓、將demo-service1的權(quán)重設(shè)置為1,此時(shí)再訪問(wèn)測(cè)試連接,發(fā)現(xiàn)該實(shí)例接受到請(qǐng)求棺妓,并且是升級(jí)之后的邏輯

4攘已、重復(fù)1、2怜跑、3样勃,對(duì)demo-service2做同樣的處理,再次訪問(wèn)測(cè)試連接性芬,發(fā)現(xiàn)兩臺(tái)實(shí)例均接受請(qǐng)求峡眶,并且達(dá)到升級(jí)后的效果

5、完成平滑升級(jí)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末植锉,一起剝皮案震驚了整個(gè)濱河市辫樱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌俊庇,老刑警劉巖狮暑,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異暇赤,居然都是意外死亡心例,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)鞋囊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)止后,“玉大人,你說(shuō)我怎么就攤上這事∫胫辏” “怎么了瓜喇?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)歉糜。 經(jīng)常有香客問(wèn)我乘寒,道長(zhǎng),這世上最難降的妖魔是什么匪补? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任伞辛,我火速辦了婚禮,結(jié)果婚禮上夯缺,老公的妹妹穿的比我還像新娘蚤氏。我一直安慰自己,他們只是感情好踊兜,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布竿滨。 她就那樣靜靜地躺著,像睡著了一般捏境。 火紅的嫁衣襯著肌膚如雪于游。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天垫言,我揣著相機(jī)與錄音贰剥,去河邊找鬼。 笑死骏掀,一個(gè)胖子當(dāng)著我的面吹牛鸠澈,可吹牛的內(nèi)容都是我干的柱告。 我是一名探鬼主播截驮,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼际度!你這毒婦竟也來(lái)了葵袭?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤乖菱,失蹤者是張志新(化名)和其女友劉穎坡锡,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窒所,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹉勒,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了吵取。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片禽额。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出脯倒,到底是詐尸還是另有隱情实辑,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布藻丢,位于F島的核電站剪撬,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏悠反。R本人自食惡果不足惜残黑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斋否。 院中可真熱鬧萍摊,春花似錦、人聲如沸如叼。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春干像,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背警医。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工乌妒, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人追葡。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓腺律,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親宜肉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子匀钧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容