基于uReplicator复制的kafka主备集群间的切换策略
一.概述
目前基于中间件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
当中提到的方案:
比较下来,的确这种方案的确更易于实现且效果较好。基于此思想的结局方案步骤如下:
1.周期性(每隔30s)保存源kafka集群的topic、group、对应partition的offset:
2.要切换时,往对应的服务(kafka-cluster-monitor自己写的服务,主要用来定时保存offset及提交offset至指定集群)发送下消息(调用下相应的api),写明要切换的源集群、目标集群、想要切换的时间(不写则默认当前时间)
3.a)服务会将源集群的所有topic和对应的consumer group上的位移信息commit到目标集群.
b)测试:在目标集群起个消费程序,将auto.offset.reset参数置为none(如果消费者组没有找到以前的偏移,则抛出异常)
正例:(消费组console-consumer-92161为源集群消费组)
结果:
反例:(消费组groupK不为源集群消费组)
结果:
4.利用前端proxy或者lb,将集群地址换到备用集群,原先消费组即可从指定的位移处继续消费。
最新文章
- C语言数据类型取值范围
- DIV+CSS实现左侧带三角形的提示框
- Java过滤器,SpringMVC拦截器之间的一顺序点关系
- 2015年百度之星初赛(1) --- F 矩形面积
- GCD三种队列
- prototype原型链继承
- bzoj3191
- ctags使用详解(转载)
- hdu 4750 Count The Pairs (2013南京网络赛)
- ecos的app机制
- 用redis的订阅发布解决了扫码支付实时响应的问题
- JdbcTemplate中queryForObject方法返回空结果或不正确结果数量的解决方法
- Java集合框架面试题目
- MySQLdb使用
- JavaScript 小工具
- c#中ofType的用法
- Kubernetes Pv &; Pvc
- php7配置多线程
- 447. Add Strings
- android.os.NetworkOnMainThreadException的解决方案