微服務~Consul服務註冊與發現
服務發現是基於微服務架構的關鍵原則之一。嘗試配置每個客戶端或某種形式的約定可能非常困難,可以非常脆弱。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 四大特性
- Service Discovery (服務發現)
- Health Check (健康檢查)
- Multi Datacenter (多數據中心)
- Key/Value Storage
Consul相關知識點
Agent
- Agent 是一個守護進程
- 運行在Consul集群的每個成員上
- 有Client 和 Server 兩種模式
- 所有Agent都可以被調用DNS或者HTTP API,並負責檢查和維護同步
Client
- Client 將所有RPC請求轉發至Server
- Client 是相對無狀態的
- Client 唯一做的就是參與LAN Gossip Pool
- Client 只消耗少量的資源和少量的網絡帶寬
Server
- 參與 Raft quorum(一致性判斷)
- 響應RPC查詢請求
- 維護集群的狀態
- 轉發查詢到Leader 或 遠程數據中心
Datacenter數據中心
- 私有的
- 低延遲
- 高帶寬
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服務註冊與發現