Zookeeper 配置中心服务发现设计方案

配置中心服务注册发现方案

背景

配置中心football-server服务目前运行在线上环境提供给内部第三方服务调用。为保证配置中心的服务的可用性,于是决定对配置中心服务端配置进行改造,加入服务注册发现功能。

服务治理中心选型

  • Consul
  • Eureka
  • Zookeeper
  • etcd
    Zookeeper 配置中心服务发现设计方案_第1张图片
    单纯考虑服务治理Eureka应该是目前最合适的选型,Eureka提供了完整的Service Registry和Service Discovery实现,并且在经受了Netflix自己的生产环境考验,相对使用起来省心。
    目前公司线上环境对Eureka的支持力度不够,Zookeeper是一个比较好的替代方案,遂决定使用Zookeeper作为服务治理中心。

架构演变

Before Architecture
Zookeeper 配置中心服务发现设计方案_第2张图片
New Architecture
Zookeeper 配置中心服务发现设计方案_第3张图片

新增服务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学习.

你可能感兴趣的:(Spring)