在分布式系統中,各個子系統都是多個例項存在,這個時候必須要引入乙個服務協調器,用於給呼叫方提供可用的呼叫提供者的命名訊息。
服務協調器,如zookeeper,etcd,eureka
他們必須要有的特性:
- 本身高可用,由多個服務節點構成,就算有些節點掛掉也不影響正常執行,避免了單點故障。
- 本身是乙個分布式,一致性的 k-v 儲存系統。提供方啟動的時候將自身配置資訊向協調器中進行註冊,提供方下線的時候向協調器進行反註冊。服務呼叫方只要watch對應的配置,當協調器有對應的配置進行更改,就會通知呼叫方。
- 提供心跳機制,如果方程式意外掛程式掉,沒有進行反註冊,協調器也會超時剔除不可用的提供方。
- 服務協調器本身不提供負載均衡服務,負載均衡由呼叫方根據自己設定的策略進行路由呼叫。
傳統的內建dns雖然有些相像的功能,但是並不能用於服務註冊與發現
沒有提供心跳機制,提供方掛了都無法知曉。
類似的還有nginx,多用於http反向**,提供負載均衡服務,並不能用於服務註冊與發現。
服務註冊與發現
背景 使用服務的客戶端可以採取客戶端發現 client side discovery 和服務端發現 server side discovery 兩種方式進行服務的發現,那麼我們如何做到這些呢?考慮因素 乙個服務的每個例項公開乙個遠端介面如http rest thrift等。解決方案 實現服務註冊,服...
服務發現與註冊
提供restful api或者其他的api的服務。為了完成一次請求,服務呼叫方需要知道服務例項的ip和埠。平台中的應用一般有多個例項,例項故障重啟和負載均衡都與服務發現有關。通過服務發現機制,可以透明的對多個例項進行訪問,並實現負載均衡。且應用的某個例項隨時可能故障,這時就需要動態配置服務呼叫方的路...
服務註冊與服務發現
應用場景 多台伺服器提供同乙個服務 是儲存服務名稱與ip和埠對應關係的伺服器 服務只會註冊ip,埠這些資訊,至於服務提供什麼介面,consul不管,需要消費者知道這些細節.安裝執行 consul agent dev 監控頁面 新建2個專案,分別提供兩個服務 給專案隨便新建乙個控制器提供健康檢查使用 ...