sofastack/sofa-rpc-boot-projects

多注册中心

Opened this issue · 8 comments

Your question

是否可以支持多注册中心配置,并实现注册中心之间的平滑切换?

Your scenes

我的理解是 sofa-rpc 是支持多注册中心的, 但 sofa-rpc-boot-projects 在配置的时候能配置一个注册中心.

Your advice

  1. 需要改动ProviderConfigHelperRegistryConfigContainer 来实现同时注册多注册中心.
  2. 提供对外接口,动态增加/删除注册中心. 这样就可以通过监听配置变化来切换注册中心了

Environment

  • Starter version: 5.4.8
  • JVM version (e.g. java -version):
  • OS version (e.g. uname -a):
  • Maven version:
  • IDE version:

你说的多注册中心是怎么样个需求? 是说所有服务同时发到多个注册中心,还是说某个服务可以指定注册中心?

提供对外接口,动态增加/删除注册中心. 这样就可以通过监听配置变化来切换注册中心了 这个感觉没啥必要吧? 背景是什么?

所有服务同时发到多个注册中心.背景是:

  1. 我想要考虑灾备,在一个注册中心挂了的时候快速启用另一个
  2. zookeeper 从长远来看可能不能满足我们的需求,我们想要有一个平滑迁移的方案

看到了这个 issue : #65 , xml 配置是支持多注册中心了吧? 注解的方式现在可行吗?

1.这个感觉不是rpc应该做的,而是注册中心应该自己保证多活?类似这样,现在#65 中的是支持,某些服务同时发到A,B注册中心,但是没有做一个全局就是多个的功能。如果要做,那么配置上,可以配置为zk:/127.0.0.1;zk2:/127.0.0.2;consul://123213:111 ,切换这个功能太小众,目前可能不会考虑开放。
2.你们要迁移到哪种?是现有的还是自研的?

现状是我们使用 zookeeper, 后续用什么还没定, 应该不会自研. 我最终想实现的是注册中心的平滑升级.

这个平滑升级我理解,服务发布方把服务发布至多个服务注册中心,如 ZK + Consul,假如预期是 ZK -> Consul,服务订阅方逐步切换自己的 Registry 配置至 Consul 就可以了,用任一种发现的地址都是一样的就 OK。

我们想做的是框架统一做切换,用户没有感知,推着业务方一个一个改比较有难度 :(

@OrezzerO 那我觉得你们可能缺的不是注册中心平滑迁移的能力,而是统一配置中心。框架要做的是多实现多适配,减少使用者的工作量。你的需求是如何统一将注册中心从ZK切到其他中间件 ,我想这个应该是需要你们的配置中心统一下发一个sofaboot支持的注册中心配置,并做一次统一发布即可。

@antergone 我们有统一配置中心, 我的想法是做一次统一发布的成本太大了,想在框架层面解决这个问题.