分布式服務注冊和發現consul 簡要介紹


Consul是HashiCorp公司推出的開源工具,用於實現分布式系統的服務發現與配置。與其他分布式服務注冊與發現的方案,Consul的方案更"一站式",內置了服務注冊與發現框 架、分布一致性協議實現、健康檢查、Key/Value存儲、多數據中心方案,不再需要依賴其他工具(比如ZooKeeper等)。使用起來也較 為簡單。Consul用Golang實現,因此具有天然可移植性(支持Linux、windows和Mac OS X);安裝包僅包含一個可執行文件,方便部署,與Docker等輕量級容器可無縫配合。

Consul 的使用場景

  • docker 實例的注冊與配置共享
  • coreos 實例的注冊與配置共享
  • vitess 集群
  • SaaS 應用的配置共享
  • 與 confd 服務集成,動態生成 nginx 和 haproxy 配置文件

Consul 的優勢

  • 使用 Raft 算法來保證一致性, 比復雜的 Paxos 算法更直接. 相比較而言, zookeeper 采用的是 Paxos, 而 etcd 使用的則是 Raft.
  • 支持多數據中心,內外網的服務采用不同的端口進行監聽。 多數據中心集群可以避免單數據中心的單點故障,而其部署則需要考慮網絡延遲, 分片等情況等. zookeeper 和 etcd 均不提供多數據中心功能的支持.
  • 支持健康檢查. etcd 不提供此功能.
  • 支持 http 和 dns 協議接口. zookeeper 的集成較為復雜, etcd 只支持 http 協議.
  • 官方提供web管理界面, etcd 無此功能.

綜合比較, Consul 作為服務注冊和配置管理的新星, 比較值得關注和研究.

Consul 的角色

client: 客戶端, 無狀態, 將 HTTP 和 DNS 接口請求轉發給局域網內的服務端集群.
server: 服務端, 保存配置信息, 高可用集群, 在局域網內與本地客戶端通訊, 通過廣域網與其他數據中心通訊. 每個數據中心的 server 數量推薦為 3 個或是 5 個.

.NET 客戶端 https://github.com/PlayFab/consuldotnet/ ,Nuget https://www.nuget.org/packages/Consul/

具體文章參考https://playfab.com/blog/2015/05/19/porting-consul-go-api-c

Docker image with mono-complete and consul-agent: https://github.com/catwithboots/monoconsul

 

使用Apache Mesos和Consul實現服務的注冊發現

使用Terraform與Consul自動化現代數據中心

使用consul實現分布式服務注冊和發現

Consul環境搭建和測試

Docker 負載均衡與服務發現


免責聲明!

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



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