1. 程式人生 > >微服務~Consul服務註冊與發現

微服務~Consul服務註冊與發現

erlang 中心 repr src 微服務 一個 png proc 集群

服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。Consul通過HTTP API和DNS提供服務發現服務。Spring Cloud Consul利用HTTP API進行服務註冊和發現。這不會阻止非Spring雲應用程序利用DNS界面。Consul代理服務器在通過八卦協議進行通信的群集中運行,並使用筏式協議協議。

文章參考:

https://www.jianshu.com/p/28c6bd590ca0

http://blog.csdn.net/y435242634/article/details/78639663

Consul 四大特性

  1. Service Discovery (服務發現)
  2. Health Check (健康檢查)
  3. Multi Datacenter (多數據中心)
  4. Key/Value Storage

Consul相關知識點

Agent

  1. Agent 是一個守護進程
  2. 運行在Consul集群的每個成員上
  3. 有Client 和 Server 兩種模式
  4. 所有Agent都可以被調用DNS或者HTTP API,並負責檢查和維護同步

Client

  1. Client 將所有RPC請求轉發至Server
  2. Client 是相對無狀態的
  3. Client 唯一做的就是參與LAN Gossip Pool
  4. Client 只消耗少量的資源和少量的網絡帶寬

Server

  1. 參與 Raft quorum(一致性判斷)
  2. 響應RPC查詢請求
  3. 維護集群的狀態
  4. 轉發查詢到Leader 或 遠程數據中心

Datacenter數據中心

  1. 私有的
  2. 低延遲
  3. 高帶寬

Consensus (一致性)

Consul 使用consensus protocol 來提供CAP(一致性,高可用,分區容錯性)

Gossip

一種協議: 用來保證 最終一致性 , 即: 無法保證在某個時刻, 所有節點狀態一致, 但可以保證”最終”一致

啟動Consul

Consul安裝之後,代理必須運行。 代理可以在服務器或客戶端模式下運行。 每個數據中心都必須至少有一臺服務器,但推薦使用3臺或5臺服務器。 一個單一的服務器部署是非常不推薦的,因為在故障情況下數據丟失是不可避免, 所有其他代理以客戶端模式運行。 客戶端是一個非常輕量級的進程,它註冊服務,運行健康檢查,並將查詢轉發給服務器。 代理程序必須在集群中的每個節點上運行。

下面介紹幾個命令:

consul agent -dev  以開發模式啟動代理,不會持久化信息

consul members  查看集群成員

註冊服務

服務可以通過提供服務定義或通過對HTTP API進行適當的調用來註冊。
服務定義是註冊服務最常用的方式,所以我們將在這一步中使用這種方法。 我們將建立在上一步中介紹的代理配置。
首先,為Consul配置創建一個目錄。 Consul將所有配置文件加載到配置目錄中,因此Unix系統上的一個通用約定是將目錄命名為/etc/consul.d(.d後綴意味著“該目錄包含一組配置文件”)。

建立服務配置目錄:mkdir /etc/consul.d
添加文件:echo ‘{"service": {"name": "web", "tags": ["rails"], "port": 80}}‘ | sudo tee /etc/consul.d/web.json 重啟:consul agent -dev -config-dir=/etc/consul.d

加入集群

將新節點添加到集群:consul join 192.168.100.101(其中101這個節點是master)

顯示成員:consul members

查看UI管理頁面

http://localhost:8500

技術分享圖片

待續...

微服務~Consul服務註冊與發現