概述
- 前言
- 什麼是服務註冊、服務發現
- 兩種服務註冊方式
- 兩種服務發現方式
- 常見的第三方註冊工具
- 後記
前言
好一陣子沒有更新了,有些小夥伴在後臺問我有沒有更新,看來大家還是挺喜歡看我的文章的嘛。主要是這段是間忙著複習演算法的一些東西,也不想隨便寫一篇繁衍。**如果我的文章對你有幫助,歡迎關注、點贊、轉發,這樣我會更有動力做原創分享。**OK,進入正題!
什麼是服務註冊、服務發現



服務註冊的兩種方式
服務註冊方式有以下兩種:
-
客戶端註冊 客戶端註冊即為:將服務註冊與服務登出的邏輯寫進程式碼裡面,當一個微服務啟動的時候,將資訊寫入註冊中心,當一個微服務下線的時候,登出相應的資訊。且,需要不同的程式語言實現相同的一套邏輯。對業務程式碼有一定的入侵。期間,註冊中心與各個微服務之間還需要保持心跳。
-
第三方註冊 第三方註冊由一個獨立的服務 Registrar 負責註冊與登出。當服務啟動後以某種方式通知Registrar,然後Registrar負責向註冊中心發起註冊工作。同時註冊中心要維護與服務之間的心跳,當服務不可用時,向註冊中心登出服務。
服務發現的兩種方式
- 客戶端發現 客戶端負責向註冊中心獲取相應的 ip 與 port ,多種語言需要實現同一套邏輯,有點冗餘的感覺。
- 服務端發現 由 API gateway 實現服務發現的功能,這樣一套語言便可輕鬆維護服務發現的功能。
常見的第三方註冊工具
registrator registrator 通過檢查容器線上或者停止執行狀態自動註冊和去註冊服務,它目前支援 etcd、consul、zookeeper 和 SkyDNS 2。連結傳送。它通常會和下面的工具配合使用,實現自動化服務註冊功能。
zookeeper zookeeper 起源於 Hadoop ,它非常成熟、穩定,有比較多的大公司在使用一個高效能、分散式應用程式協調服務,用於名稱服務、分散式鎖定、共享資源同步和分散式配置管理。
etcd etcd 是一個採用 HTTP 協議的健/值對儲存系統,它是一個分散式和功能層次配置系統,可用於構建服務發現系統。其很容易部署、安裝和使用,提供了可靠的資料持久化特性。它是安全的並且文件也十分齊全。它需要搭配一些第三方工具才可以提供服務發現功能。
consul Consul 是強一致性的資料儲存,使用 gossip 形成動態叢集。它提供分級鍵/值儲存方式,不僅可以儲存資料,而且可以用於註冊器件事各種任務,從傳送資料改變通知到執行健康檢查和自定義命令,具體如何取決於它們的輸出。consul web 介面,使用者可以檢視所有的服務和節點、監控健康檢查狀態以及通過切換資料中心讀取設定鍵/值對資料。

後記
下一篇文章將是實戰篇,主要是手把手編寫一個小型的微服務架構,將之前學到的東西實踐一下,不實踐其實是很難掌握到的,盡請期待。 個人的知識儲備總是有限的,如有錯誤的地方,還請大佬斧正。點選閱讀原文,連結到我的知乎,我會在知乎上對文章錯誤的地方進行修改。 本篇文章首發於公眾號「zone7」,關注公眾號獲取最新推文,後臺回覆【小白微服務】獲取原始碼。
參考文獻: 服務發現:Zookeeper vs etcd vs Consul 服務註冊與發現
