一.概述
目前基于中间件uReplicator实现了kafka集群间的迁移复制,可以实现跨区、跨云的kafka集群间复制同步,也可以实现kafka集群的冷热互备架构;在实现集群间同步以后,需要解决一个很重要的问题:如何从主集群切换到备份集群?相应的前端可能需要有对应的Proxy或者LB,那么这里我们着重讨论后端两个集群间的切换策略。

二.步骤
要实现后端集群间的切换,最重要的就是要解决相关的应用在备份集群的开始消费位移问题。目前实现步骤如下:
主要思想可以参考这篇文章:http://www.dengshenyu.com/%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F/2017/12/23/kafka-data-mirror.html
当中提到的方案:
image.png 比较下来,的确这种方案的确更易于实现且效果较好。基于此思想的结局方案步骤如下:
1.周期性(每隔30s)保存源kafka集群的topic、group、对应partition的offset:
image.png

2.要切换时,往对应的服务(kafka-cluster-monitor自己写的服务,主要用来定时保存offset及提交offset至指定集群)发送下消息(调用下相应的api),写明要切换的源集群、目标集群、想要切换的时间(不写则默认当前时间)
image.png

3.a)服务会将源集群的所有topic和对应的consumer group上的位移信息commit到目标集群.

b)测试:在目标集群起个消费程序,将auto.offset.reset参数置为none(如果消费者组没有找到以前的偏移,则抛出异常)
正例:(消费组console-consumer-92161为源集群消费组)
image.png 结果:
image.png 反例:(消费组groupK不为源集群消费组)
image.png 结果:
image.png
4.利用前端proxy或者lb,将集群地址换到备用集群,原先消费组即可从指定的位移处继续消费。

最新文章

  1. C语言数据类型取值范围
  2. DIV+CSS实现左侧带三角形的提示框
  3. Java过滤器,SpringMVC拦截器之间的一顺序点关系
  4. 2015年百度之星初赛(1) --- F 矩形面积
  5. GCD三种队列
  6. prototype原型链继承
  7. bzoj3191
  8. ctags使用详解(转载)
  9. hdu 4750 Count The Pairs (2013南京网络赛)
  10. ecos的app机制
  11. 用redis的订阅发布解决了扫码支付实时响应的问题
  12. JdbcTemplate中queryForObject方法返回空结果或不正确结果数量的解决方法
  13. Java集合框架面试题目
  14. MySQLdb使用
  15. JavaScript 小工具
  16. c#中ofType的用法
  17. Kubernetes Pv & Pvc
  18. php7配置多线程
  19. 447. Add Strings
  20. android.os.NetworkOnMainThreadException的解决方案

热门文章

  1. 使用python3的base64编解码实现字符串的简易加密解密
  2. 项目管理 BUG管理 —— 禅
  3. H3C交换机配置ACL禁止vlan间互访
  4. .net core config读取
  5. AngularJS 页面计算
  6. MVC 身份验证和异常处理过滤器
  7. erp的核心代码,替代orm
  8. 【shell】编译脚本
  9. 生成view的描述字段列表
  10. visual studio 2017 添加MSDN