Zookeeper 服務註冊發現方案
08-24
Zookeeper 服務註冊發現方案
配置中心服務註冊發現方案
背景
配置中心football-server服務目前運行在線上環境提供給內部第三方服務調用。為保證配置中心的服務的可用性,於是決定對配置中心服務端配置進行改造,加入服務註冊發現功能。
服務治理中心選型
- Consul
- Eureka
- Zookeeper
- etcd
單純考慮服務治理Eureka應該是目前最合適的選型,Eureka提供了完整的Service Registry和Service Discovery實現,並且在經受了Netflix自己的生產環境考驗,相對使用起來省心。
目前公司線上環境對Eureka的支持力度不夠,Zookeeper是一個比較好的替代方案,遂決定使用Zookeeper作為服務治理中心。
架構演變
Before Architecture
New Architecture
新增服務meta-server
meta-server作為對football-client提供service發現的唯一介面。
- Q: 為什麼不讓football-client直接訪問Zookeeper。
- A: fooball-client作為一個lib提供給其他服務使用,應該盡量少的依賴其他的庫,如何直接和Zookeeper相連,那麼和服務發現相關的邏輯就必須耦合在football-client的代碼裡面。如果第三方服務自身也需要和Zookeeper有交互,那麼可能會存在版本或者連接衝突問題。為避免複雜應該使football-client的代碼更純粹
- Q: football-client如何獲取到football-Service的服務地址
- A: football-client只需要使用HttpClient訪問meta-server提供的Restful介面。
- Q: 如果meta-server掛掉了怎麼辦?
- A: 目前meta-server只提供一個服務,這也是我們抽取meta-server的主要意義,等後面擴展使用Nginx作為負載,多個meta-server Instance運行就能保證高可用了。
football-server 新增功能
football-server需增加啟動向Zookeeper提交服務信息,定時和Zookeeper保持服務心跳。
football-client lib新增功能
fooball-client需新增加定時調用meta-server獲取football-server的服務地址,並將服務地址緩存起來,暫定每隔5分鐘刷新一次。
全新服務上線問題
服務上線需考慮到新的服務會修改football-client的代碼,目前有線上項目使用的football-client的Jar包還是老版本,要保證舊服務依舊可以正常運行。
Reference
Zookie zookie.
Apollo Apollo. Zookeeper Zookeeper學習.推薦閱讀:
※大數據基礎教程—hadoop生態圈Hbase完全分散式的搭建
※centos7 hadoop 單機模式安裝配置
※Hadoop的了解
※第三章:安裝VMTools工具
※大數據集群搭建基本配置說明