溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

.Net?Core服務(wù)治理Consul健康檢查方法是什么

發(fā)布時(shí)間:2022-01-06 14:29:24 來(lái)源:億速云 閱讀:92 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“.Net Core服務(wù)治理Consul健康檢查方法是什么”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“.Net Core服務(wù)治理Consul健康檢查方法是什么”吧!

健康檢查

經(jīng)過(guò)之前的操作,我的consul已經(jīng)支持自動(dòng)擴(kuò)展,并且調(diào)用也很靠譜。但是這里有個(gè)問(wèn)題,一旦服務(wù)列表里的某個(gè)服務(wù)掛了,consul并不知道,還是會(huì)把實(shí)際無(wú)效的地址返回給我,就算重啟consul容器也無(wú)法刷新到最新的狀態(tài)。所以,咱們要監(jiān)控服務(wù)可用性,主動(dòng)區(qū)分出不可用服務(wù),這種手段,就稱之為健康檢查。

進(jìn)入編碼環(huán)節(jié)。老規(guī)矩,還是進(jìn)入到之前我封裝好的注冊(cè)方法,在注冊(cè)時(shí)增加健康檢查的內(nèi)容:

client.Agent.ServiceRegister(new AgentServiceRegistration()
            {
                ID = $"server {ip}:{port}",
                Name = "shenzhen-ma",
                Address = ip,
                Port = int.Parse(port),
                Tags = new string[] { weight },
                Check = new AgentServiceCheck()
                {
                    Interval = TimeSpan.FromSeconds(10),//每隔10秒發(fā)起檢查
                    HTTP = $"http://{ip}:{port}/v1/client/base/index",//檢查請(qǐng)求地址
                    Timeout = TimeSpan.FromSeconds(5),//超時(shí)時(shí)長(zhǎng)5秒
                    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(10)//超過(guò)10秒還沒能連接到服務(wù),就開始注銷本服務(wù)
                }
            });

變色部分就是健康檢查的配置了。根據(jù)上面的配置,consul會(huì)周期性發(fā)起健康檢查,并且根據(jù)結(jié)果自動(dòng)移除不可用的服務(wù)。

這次我要嚴(yán)謹(jǐn)一些,用真實(shí)的遠(yuǎn)程服務(wù)器來(lái)模擬生產(chǎn)環(huán)境。手頭服務(wù)器太多,很多有項(xiàng)目在跑。仔細(xì)翻了翻,發(fā)現(xiàn)還有兩臺(tái)相對(duì)空閑的服務(wù)器,一臺(tái)是win server,另一臺(tái)centos,嘿嘿,正好。centos做consul服務(wù)器,win服務(wù)器用來(lái)做下游調(diào)用方。

先把consul搞起來(lái):

.Net?Core服務(wù)治理Consul健康檢查方法是什么

進(jìn)去訪問(wèn)下:

.Net?Core服務(wù)治理Consul健康檢查方法是什么

OK了,現(xiàn)在轉(zhuǎn)到另一臺(tái)服務(wù)器跑幾個(gè)客戶端。這里偷個(gè)懶,直接把可運(yùn)行文件拷貝過(guò)去,哈哈:

.Net?Core服務(wù)治理Consul健康檢查方法是什么

看下consul控制臺(tái):

.Net?Core服務(wù)治理Consul健康檢查方法是什么

還是熟悉的shenzhen-ma,兩個(gè)服務(wù)已經(jīng)穩(wěn)穩(wěn)的待在分組列表里了。注意我框起來(lái)的位置,它表示服務(wù)已經(jīng)通過(guò)了健康檢查。這時(shí)候我把5051這個(gè)程序關(guān)掉,再來(lái)看看:

.Net?Core服務(wù)治理Consul健康檢查方法是什么

5051狀態(tài)自動(dòng)更新成failing,而且沒過(guò)一會(huì)兒,它就會(huì)自動(dòng)移除。5050這時(shí)候去再去訪問(wèn),就訪問(wèn)不到5051了:

.Net?Core服務(wù)治理Consul健康檢查方法是什么

再然后偷偷把5051跑起來(lái),重新調(diào)用:

.Net?Core服務(wù)治理Consul健康檢查方法是什么

又可以訪問(wèn)了不是?

新實(shí)例啟動(dòng)自動(dòng)發(fā)現(xiàn),實(shí)例狀態(tài)異常自動(dòng)剔除,下端調(diào)用無(wú)需任何調(diào)整,舒坦。起碼我這個(gè)懶人覺得很舒服。

tips:新的服務(wù)默認(rèn)狀態(tài)是failing,注冊(cè)成功后會(huì)馬上發(fā)起一次檢查,成功后才會(huì)變更狀態(tài)。而且服務(wù)注銷沒有那么快,耗時(shí)一般都會(huì)比設(shè)置的時(shí)間長(zhǎng)。

感謝各位的閱讀,以上就是“.Net Core服務(wù)治理Consul健康檢查方法是什么”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì).Net Core服務(wù)治理Consul健康檢查方法是什么這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI