您好,登錄后才能下訂單哦!
今天小編給大家分享一下Nacos心跳時間配置及服務快速上下線的方法是什么的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Nacos默認心跳時間是30秒,不太滿足正式環(huán)境需要,需要調(diào)整心跳時間更短,讓線上服務上下線能快速感知。
preserved.heart.beat.interval: 1000 #該實例在客戶端上報心跳的間隔時間。(單位:毫秒) preserved.heart.beat.timeout: 3000 #該實例在不發(fā)送心跳后,從健康到不健康的時間。(單位:毫秒) preserved.ip.delete.timeout: 3000 #該實例在不發(fā)送心跳后,被nacos下掉該實例的時間。(單位:毫秒)
如我的一個微服務tower-system的配置如下
spring: cloud: nacos: discovery: server-addr: 127.0.0.1:8848 metadata: preserved.heart.beat.interval: 1000 preserved.heart.beat.timeout: 3000 preserved.ip.delete.timeout: 3000
修改了步驟1中的配置后,nacos的控制臺,能保證微服務3秒內(nèi)能快速響應上下線,但我們的訪問是通過gateway統(tǒng)一訪問的,gateway集成了ribbion的負載均衡功能,其默認是定時一定的時間間隔去nacos拉取最新的服務實例數(shù)據(jù)到本地緩存,因此,僅僅修改nacos的配置,還是不能保證能及時的進行服務上下線,需要設置ribbon.ServerListRefreshInterval,增加拉取nacos中最新服務實例的頻率,如下`
#ribbon config,Interval to refresh the server list from the source ribbon: ServerListRefreshInterval: 3000
步驟1可能需要花3秒中更新實例,步驟2定時拉取nacos最新實例需要最快3秒,因此加起來,可能需要花費最多6秒,能使最新的服務生效
Nacos內(nèi)部注冊的服務分為兩大類:
臨時實例(默認)
持久化實例
可以通過.yml中設置ephemeral屬性來確定服務為臨時或永久。
例如:
spring: cloud: nacos: discovery: # 定義nacos運行的路徑 server-addr: localhost:8848 # ephemeral 設置當前項目啟動時注冊到nacos的類型true(默認):臨時實例false:永久化實例 ephemeral: true
臨時實例和永久實力的區(qū)別:
默認情況下,啟動服務后,每隔5秒會向nacos發(fā)送一個"心跳包",這個心跳包中包含了當前服務的基本信息
Nacos收到這個"心跳包"如果發(fā)現(xiàn)這個服務的信息不在注冊列表中,就進行注冊,如果這個服務的信息在注冊列表中就表明這個服務還是健康的
如果Nacos15秒內(nèi)沒接收到某個服務的心跳包,Nacos會將這個服務標記為不健康的狀態(tài)
如果30秒內(nèi)沒有接收到這個服務的心跳包,Nacos會將這個服務從注冊列表中剔除
這些時間都是可以通過配置修改的
持久化實例啟動時向nacos注冊,nacos會對這個實例進行持久化處理
心跳包的規(guī)則和臨時實例一致,只是不會將該服務從列表中剔除
一般情況下,我們創(chuàng)建的服務都是臨時實例。
只有項目的主干業(yè)務才會設置為永久實例。
以上就是“Nacos心跳時間配置及服務快速上下線的方法是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。