Zookeeper 服務註冊發現方案

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工具
大數據集群搭建基本配置說明

TAG:ZooKeeper | Hadoop | 分散式系統 |