溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Nacos心跳時間配置及服務快速上下線的方法是什么

發(fā)布時間:2023-03-16 10:28:19 來源:億速云 閱讀:139 作者:iii 欄目:開發(fā)技術

今天小編給大家分享一下Nacos心跳時間配置及服務快速上下線的方法是什么的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

    Nacos心跳時間配置及服務快速上下線

    Nacos默認心跳時間是30秒,不太滿足正式環(huán)境需要,需要調(diào)整心跳時間更短,讓線上服務上下線能快速感知。

    1.修改微服務的nacos的心跳配置時間

    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

    2.修改spring cloud的gateway的ribbion配置

    修改了步驟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心跳機制

    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è)資訊頻道。

    向AI問一下細節(jié)

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

    AI