天天看點

consul的搭建與微服務發現(一)consul的介紹consul的搭建與微服務發現(一)consul的介紹

consul的搭建與微服務發現(一)consul的介紹

目錄

consul的搭建與微服務發現(一)

1.什麼是consul

2.與zookeeper做對比

3.Consul内幕

4.consul架構

1.什麼是consul

Consul是一個用來實作分布式系統的服務發現與配置的開源工具。他主要由多個組成部分:

  • 服務發現:用戶端通過Consul提供服務,類似于API,MySQL,或者其他用戶端可以使用Consul發現服務的提供者。使用類似DNS或者HTTP,應用程式和可以很輕松的發現他們依賴的服務。
  • 檢查健康:Consul用戶端可以提供與給定服務相關的健康檢查(Web伺服器傳回200 ok)或者本地節點(“記憶體使用率低于90%”)。這些資訊可以監控叢集的運作情況,并且使通路遠離不健康的主機元件。
  • 鍵值對存儲:應用程式可以使用Cousul的層級鍵值對。
  • 多資料中心:Consul有開箱及用的多資料中心。

2.與zookeeper做對比

  • 開發語言方面,zookeeper采用java開發,安裝的時候需要部署java環境;consul采用golang開發,所有依賴都編譯到了可執行程式中,即插即用。
  • 部署方面,zookeeper一般部署奇數個節點友善做簡單多數的選舉機制。consul部署的時候分server節點和client節點(通過不同的啟動參數區分),server節點做leader選舉和資料一緻性維護,client節點部署在服務機器上,作為服務程式通路consul的接口。
  • 一緻性協定方面,zookeeper使用自定義的zab協定,consul的一緻性協定采用更流行的Raft。
  • zookeeper不支援多資料中心,consul可以跨機房支援多資料中心部署,有效避免了單資料中心故障不能通路的情況。
  • 連結方式上,zookeeper client api和伺服器保持長連接配接,需要服務程式自行管理和維護連結有效性,服務程式注冊回調函數處理zookeeper事件,并自己維護在zookeeper上建立的目錄結構有效性(如臨時節點維護);consul 采用DNS或者http擷取服務資訊,沒有主動通知,需要自己輪訓擷取。
  • 工具方面,zookeeper自帶一個cli_mt工具,可以通過指令行登入zookeeper伺服器,手動管理目錄結構。consul自帶一個Web UI管理系統, 可以通過參數啟動并在浏覽器中直接檢視資訊。

3.Consul内幕

術語

  • 代理(agent):代理是Consul叢集上每個成員的守護程序,它是由consul agent開始運作。代理能夠以用戶端或伺服器模式運作。由于所有節點都必須運作代理,是以将節點引用為用戶端或伺服器更為簡單,但還有其他執行個體的代理。所有代理可以運作DNS或HTTP接口,并負責運作檢查和保持服務同步。
  • 用戶端:用戶端可以将所有RPC請求轉發到伺服器的代理。用戶端是相對無狀态的。用戶端執行的唯一背景活動是LANgossip池。它消耗最小的資源開銷和少量的網絡帶寬。
  • 伺服器端:伺服器端是具有擴充的功能的代理,它主要參與維護叢集狀态,響應RPC查詢,與其他資料中心交換WAN gossip ,以及向上級或遠端資料中心轉發查詢。
  • 資料中心:雖然資料中心的定義似乎很明顯,但仍有一些細微的細節必須考慮。我們将一個資料中心定義為一個私有、低延遲和高帶寬的網絡環境。這不包括通過公共網際網路的通信,但是為了我們的目的,單個EC2區域内的多個可用區域将被視為單個資料中心的一部分
  • Gossip:consul是建立在serf之上的,它提供了一個完整的gossip協定,用在很多地方。Serf提供了成員,故障檢測和事件廣播。Gossip的節點到節點之間的通信使用了UDP協定。
  • LAN Gossip:指在同一區域網路或資料中心的節點上的LAN Gossip池。
  • WAN Gossip:指包含伺服器的WAN Gossip池,這些伺服器在不同的資料中心,通過網絡進行通信。
  • 一緻性協定采用 Raft 算法,用來保證服務的高可用.
  • 成員管理和消息廣播 采用GOSSIP協定,支援ACL通路控制。

ACL技術在路由器中被廣泛采用,它是一種基于包過濾的流控制技術。控制清單通過把源位址、目的位址及端口号作為資料包檢查的基本元素,并可以規定符合條件的資料包是否允許通過。

gossip就是p2p協定。他主要要做的事情是,去中心化。 

這個協定就是模拟人類中傳播謠言的行為而來。首先要傳播謠言就要有種子節點。種子節點每秒都會随機向其他節點發送自己所擁有的節點清單,以及需要傳播的消息。任何新加入的節點,就在這種傳播方式下很快地被全網所知道。

什麼是服務注冊?

一個服務将其位置資訊在“中心注冊節點”注冊的過程。該服務一般會将它的主機IP位址以及端口号進行注冊,有時也會有服務通路的認證資訊,使用協定,版本号,以及關于環境的一些細節資訊。

4.consul架構

consul的搭建與微服務發現(一)consul的介紹consul的搭建與微服務發現(一)consul的介紹