服務發現是指使用乙個註冊中心來記錄分布式系統中的全部服務的資訊,以便其他服務能夠快速的找到這些已註冊的服務。
從客戶端角度來看,註冊中心起到的作用包含兩個:
(1)伺服器熱插拔
但是,要仔細思考乙個問題?客戶端的數量本來就是大量存在的,隨時都有可能上線和下線,讓註冊中心和客戶端之間保持長連線是否合理?我覺得是不合理的,也是沒有這個必要。
綜上考慮,註冊中心可以和客戶端之間進行「邏輯」上的長連線,也就是當客戶端在註冊中心獲取伺服器時,把客戶端的ip位址以及需要的伺服器型別存放到乙個**中。而當選擇乙個合適的伺服器分配給客戶端的時候,再將該伺服器工作的客戶端加到乙個對應的列表中。當某個伺服器宕機了,就給噶伺服器工作過的客戶端列表中的所有客戶端告知該伺服器已經不工作了,下次再有請求就找別的伺服器服務。
(3)容錯機制
「容錯機制」的意思是在客戶端向伺服器傳送請求的過程中,該伺服器突然宕機,就立刻切換到另乙個伺服器繼續請求,不會影響請求的正常傳送,是所謂的「容錯」。
(4)負載均衡
1、註冊中心還起到統計的作用,記錄所有伺服器的狀態(伺服器收到的請求次數,做出的響應次數,以及響應速度等等),以便給客戶端推薦最合適的伺服器。
2、伺服器每隔一段時間給註冊中心報告自身的狀況,註冊中心面對得到的資料和當前所有情況甚至之前的得到情況進行比較,還是推薦給客戶端最合適的伺服器。
3、軟負載均衡:註冊中心不統計伺服器的狀況,不參與客戶端對伺服器的選擇,真正的負載均衡由客戶端實現,設定每一次可供選擇的伺服器,或者直接用隨機選擇的方法匹配到伺服器。但是存在的問題是,多個客戶端有可能同時隨機到相同的伺服器(也可以通過函式隨機來設定它的隨機優先順序)。(當然這並不是絕對均衡),還可以另外開闢乙個執行緒,每隔一段時間客戶端向伺服器隨便傳送一條訊息,計算出該伺服器的響應效率,這樣客戶端可以實時的掌握伺服器的效率高低,在傳送真正的請求時就向那個效率高的伺服器傳送。
服務發現系統etcd介紹
一 概述 etcd是乙個高可用的鍵值儲存系統,主要用於共享配置和服務發現。etcd是由coreos開發並維護的,靈感來自於 zookeeper 和 doozer,它使用go語言編寫,並通過raft一致性演算法處理日誌複製以保證強一致性。raft是乙個新的一致性演算法,適用於分布式系統的日誌複製,ra...
服務發現系統etcd介紹
一 概述 etcd是乙個高可用的鍵值儲存系統,主要用於共享配置和服務發現。etcd是由coreos開發並維護的,靈感來自於 zookeeper 和 doozer,它使用go語言編寫,並通過raft一致性演算法處理日誌複製以保證強一致性。raft是乙個新的一致性演算法,適用於分布式系統的日誌複製,ra...
Prometheus之服務發現介紹
對於中大型的系統環境或具有較強動態性的雲計算環境來說,靜態配置顯然難以使用 因此,prometheus為此專門設計了一組服務發現機制,以便於能夠基於服務註冊中自動發現 檢測 分類可被監控的各target,以及更新發生了變動的target 配置標籤會在抓取的生命週期中被重複利用以生成其它標籤,例如,指...