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学习.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值