微服務之服務註冊發現

# 介紹


服務註冊就是維護一個登記簿,它管理系統內所有的服務地址。當新的服務啓動後,它會向登記 簿交待自己的地址信息。服務的依賴方直接向登記簿要 Service Provider 地址就行了。當下用於服 務註冊的工具非常多 ZooKeeper,Consul,Etcd, 還有 Netflix 家的 eureka 等。服務註冊有兩 形式:客戶端註冊和第三方註冊。

# 客戶端註冊(zookeeper)


客戶端註冊是服務自身要負責註冊和註銷的工作,當服務啓動後向註冊中心註冊自身,當服務下線是註銷自己。期間還需要和註冊中心保持心跳,心跳不一定客戶端來做,也可以由註冊中心負責(這個過程叫探活)。這種方式的缺點是註冊工作與服務耦合在一起,不同語言都要實現一 套註冊邏輯。

# 第三方註冊(獨立的服務Registrar)


是有一個獨立的服務Registrar負責註冊和註銷,當服務啓動時以某種方式通知Registrar,然後Registrer負責向註冊中心發起註冊工作,同時註冊中心要維護與服務之間的心跳,當服務不可用時,向註冊中心註銷服務。這種方式的缺點是 Registrar 必須是一個高可用的系統,否則註冊 工作沒法進展。

# 客戶端發現

客戶端發現是指客戶端負責查詢可用服務地址,以及負載均衡的工作。這種方式很方便也可直接,一旦發現某個服務不可用可以立即切換到另一個服務。缺點是:多個語言時需要重複編程。

# 服務端發現


服務端發現需要額外的Router服務,請求先到Router服務,然後由Router服務複製查詢可用服務和負載均衡。缺點是:要保證Router的高可用。