主要用於有多個伺服器的情況下,伺服器啟動後回向註冊中心註冊。當有客戶端上線時,客戶端通過服務編號,從註冊中心得到此服務的所有伺服器列表,然後選擇效能最優的伺服器連線。
2.1服務發現的主要目的:
幫助客戶端發現效能良好的伺服器。
客戶端對伺服器的選擇可以實現:「負載均衡」。
服務發現支援伺服器的「熱插拔」。
2.2服務發現的核心是:註冊中心
2.3註冊中心的功能
1.伺服器註冊。
2.伺服器下線。
3.向客戶端提供服務列表。
2.4伺服器的功能
1.向註冊中心註冊
2.下線。
3.響應客戶端的服務效能檢測。
2.5客戶端的功能
1.向註冊中心請求伺服器列表。
2.定時重新整理伺服器列表。
3.和伺服器建立連線,檢測伺服器效能(心跳檢測)。
4.伺服器選擇。
3.1圖描述
3.2過程描述
1.當有伺服器啟動是時候,伺服器通過自己編寫的c-s框架和註冊中心通訊,並向註冊中心註冊。
2.註冊中心把連線到的伺服器放到map裡儲存起來。
3.當有客戶端請求服務連線時,客戶端根據服務編號向註冊中心發出請求。
4.註冊中心返回該服務編號對應的所有伺服器。
5.客戶端接收到伺服器列表後,把這個列表交給另乙個執行緒負責維護。
6.這個執行緒負責定時連線註冊中心,不斷重新整理伺服器列表。
7.同時這個執行緒負責伺服器效能的檢測,判斷最優伺服器。
8.然後客戶端和最優建立伺服器連線。
9.如果連線失敗,在和列表裡的下乙個伺服器建立連線。
注:這裡伺服器和註冊中心是長連線,其餘連線都是短連線。
內有詳細注釋
[github]
五 Prometheus 基於檔案的服務發現
略過prometheus的安裝 1 基於檔案的服務發現是僅僅略優於靜態配置的服務發現方式,它不依賴於任何平台或者第三方服務,因為也是最為簡單和通用的方式.1.1 檔案使用json和yaml 格式,它含有定義的target列表,以及可選的標籤資訊.1.2 下面第乙個配置,能夠將prometheus 預...
一 服務發現 基於雲應用程式中的服務發現
對於基於雲的應用和微服務來說,服務發現至關重要。它為應用團隊提供了一種快速對在執行環境中的服務數量進行水平伸縮的能力 其次,它有助於提高應用程式的彈性,減少個別服務不可用時對整個應用造成的損失。對比傳統服務發現 傳統的服務發現通常由dns和網路負載均衡器的組合來實現服務的發現。這種模型適用於在企業資...
11 基於consul的服務註冊與發現
springcloud提供的基於consul的服務發現 org.springframework.cloud groupid spring cloud starter consul discovery artifactid dependency actuator用於心跳檢查 org.springfra...