SpringCloud(七)服務注冊之Consul的簡介和原理


Consul

何為Consul?

Consul 是由 HashiCorp 公司推出的開源軟件,用於實現分布式系統的服務發現與配置。與其他分布式服務注冊與發現的方案,Consul 的方案更“一站式”,內置了服務注冊與發現框 架、分布一致性協議實現、健康檢查、Key/Value 存儲、多數據中心方案,不再需要依賴其他工具(比如 ZooKeeper 等),使用起來也較為簡單。

Consul 用 Golang 實現,因此具有天然可移植性(支持 Linux、windows 和 Mac OS X ),它的安裝包僅包含一個可執行文件,方便部署,與 Docker 等輕量級容器可無縫配合。

consul與Eureka的區別‘

1 Consul強一致性(CP)

Eureka保證高可用和最終一致性

開發語言和使用:

eureka就是一個servlet程序,跑在servlet容器中

Consul是Go語言的編寫而成,安裝啟動即可

Consul不同於Eureka其需要單獨安裝

Consul安裝

1 去官網下載對應的Consul

https://www.consul.io/downloads.html

2 使用cmd進入Consul安裝目錄

輸入

 #以開發者模式快速啟動
 consul agent -dev -client=0.0.0.0

 

 

 

3 進入到管理后台界面

http://ip地址:8500

名詞解釋:

Client : Consul 的 Client模式,就是客戶端模式。是 Consul 節點的一種模式,這種模式下,所有注冊到當前節點的服務會被轉發到 Server,本身是不持久化這些信息。 Server :Consul 的 Server 模式,表明這個 Consul 是個 Server ,這種模式下,功能和 Client 都一樣,唯一不同的是,它會把所有的信息持久化的本地,這樣遇到故障,信息是可以被保留的。 Server-Leader: Server 是它們的老大,它和其它 Server 不一樣的一點是,它需要負責同步注冊的信息給其它的 Server ,同時也要負責各個節點的健康監測。 raft: Server 節點之間的數據一致性保證協議使用的是 raft,而 zookeeper 用的 paxos,etcd采用的也是raft 服務發現協議:Consul 采用 http 和 DNS 協議,etcd 只支持 http 。 服務注冊:Consul 支持兩種方式實現服務注冊,一種是通過 Consul 的服務注冊 Http API,由服務自己調用 API 實現注冊,另一種方式是通過 json 格式的配置文件實現注冊,將需要注冊的服務以 json 格式的配置文件給出。Consul 官方建議使用第二種方式。

Consul服務發現原理:

1、部署集群。首先需要有一個正常的Consul集群,有Server,有Leader。這里在服務器Server1、Server2、Server3上分別部署了Consul Server。

2、選舉Leader節點。假設他們選舉了Server2上的 Consul Server 節點為Leader。這些服務器上最好只部署Consul程序,以盡量維護Consul Server的穩定。

3、注冊服務。然后在服務器Server4和Server5上通過Consul Client分別注冊Service A、B、C,這里每個Service 分別部署在了兩個服務器上,這樣可以避免Service的單點問題。服務注冊到Consul可以通過 HTTP API(8500 端口)的方式,也可以通過 Consul 配置文件的方式。

4、Consul client轉發注冊消息。Consul Client 可以認為是無狀態的,它將注冊信息通過RPC轉發到Consul Server,服務信息保存在Server的各個節點中,並且通過Raft實現了強一致性。

5、服務發起通信請求。最后在服務器Server6中Program D需要訪問Service B,這時候Program D首先訪問本機Consul Client提供的HTTP API,本機Client會將請求轉發到 Consul Server。

6、Consul Server查詢到Service B當前的信息返回,最終Program D拿到了Service B的所有部署的IP和端口,然后就可以選擇Service B的其中一個部署並向其發起請求了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM