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

我們來回顧一下上一盤文章的微服務架構(gòu)圖,假如這個產(chǎn)品已經(jīng)在線上運行,有一天運營想搞一場促銷活動,那么我們相對應的【產(chǎn)品服務】可能就要新開啟三個微服務實例來支撐這場促銷活動。而與此同時,作為苦逼程序員的你就只有手動去 API gateway 中添加新增的這三個微服務實例的 ip 與port ,一個真正在線的微服務系統(tǒng)可能有成百上千微服務,難道也要一個一個去手動添加嗎?有沒有讓系統(tǒng)自動去實現(xiàn)這些操作的方法呢?答案當然是有的。且看,

如圖所示,當我們新添加一個微服務實例的時候,微服務就會將自己的 ip 與 port 發(fā)送到注冊中心,在注冊中心里面記錄起來。當 API gateway 需要訪問某些微服務的時候,就會去注冊中心取到相應的 ip 與 port。從而實現(xiàn)自動化操作。
以下是一個比較完整的服務注冊與服務發(fā)現(xiàn)的流程:

服務注冊的兩種方式
服務注冊方式有以下兩種:
客戶端注冊
客戶端注冊即為:將服務注冊與服務注銷的邏輯寫進代碼里面,當一個微服務啟動的時候,將信息寫入注冊中心,當一個微服務下線的時候,注銷相應的信息。且,需要不同的編程語言實現(xiàn)相同的一套邏輯。對業(yè)務代碼有一定的入侵。期間,注冊中心與各個微服務之間還需要保持心跳。第三方注冊
第三方注冊由一個獨立的服務 Registrar 負責注冊與注銷。當服務啟動后以某種方式通知Registrar,然后Registrar負責向注冊中心發(fā)起注冊工作。同時注冊中心要維護與服務之間的心跳,當服務不可用時,向注冊中心注銷服務。
服務發(fā)現(xiàn)的兩種方式
- 客戶端發(fā)現(xiàn)
客戶端負責向注冊中心獲取相應的 ip 與 port ,多種語言需要實現(xiàn)同一套邏輯,有點冗余的感覺。 - 服務端發(fā)現(xiàn)
由 API gateway 實現(xiàn)服務發(fā)現(xiàn)的功能,這樣一套語言便可輕松維護服務發(fā)現(xiàn)的功能。
常見的第三方注冊工具
registrator
registrator 通過檢查容器在線或者停止運行狀態(tài)自動注冊和去注冊服務,它目前支持 etcd、consul、zookeeper 和 SkyDNS 2。鏈接傳送。它通常會和下面的工具配合使用,實現(xiàn)自動化服務注冊功能。
zookeeper
zookeeper 起源于 Hadoop ,它非常成熟、穩(wěn)定,有比較多的大公司在使用一個高性能、分布式應用程序協(xié)調(diào)服務,用于名稱服務、分布式鎖定、共享資源同步和分布式配置管理。
etcd
etcd 是一個采用 HTTP 協(xié)議的健/值對存儲系統(tǒng),它是一個分布式和功能層次配置系統(tǒng),可用于構(gòu)建服務發(fā)現(xiàn)系統(tǒng)。其很容易部署、安裝和使用,提供了可靠的數(shù)據(jù)持久化特性。它是安全的并且文檔也十分齊全。它需要搭配一些第三方工具才可以提供服務發(fā)現(xiàn)功能。
consul
Consul 是強一致性的數(shù)據(jù)存儲,使用 gossip 形成動態(tài)集群。它提供分級鍵/值存儲方式,不僅可以存儲數(shù)據(jù),而且可以用于注冊器件事各種任務,從發(fā)送數(shù)據(jù)改變通知到運行健康檢查和自定義命令,具體如何取決于它們的輸出。consul web 界面,用戶可以查看所有的服務和節(jié)點、監(jiān)控健康檢查狀態(tài)以及通過切換數(shù)據(jù)中心讀取設置鍵/值對數(shù)據(jù)。

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