kafka topic迁移方案及过程记录(待整理)

这篇具有很好参考价值的文章主要介绍了kafka topic迁移方案及过程记录(待整理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kafka的topic如果一开始没有做合理拆分,在业务不断膨胀的情况下,容易产生消息堆积,问题难以定位排查。以下是几种不同情况下做拆分或迁移的方案
一、发送者不变、topic不变、新增consumer group
二、新增发送者、从原topic拆出部分消息作为新topic、consumer group不变
三、新增发送者、从原topic拆出部分消息作为新topic、新增consumer group
四、新增发送者、从原topic拆出部分消息作为新topic、旧topic消息不变
这种场景是最混乱的,新旧topic同时存在,生产者也是分开的,意味着消息体无法保证完全一致(时间戳),同时产生两份消息,而上线期间新旧消费者也同时存在,需要避免重复消费和乱序消费。
这种场景,通常存在于一个topic多方在消费,而只新增新的一个topic希望拆分出某个服务下的独立topic和消费者。旧topic不能动。所以是不能停止旧生产者的。
我的思路是,新旧消费者一定要以某种方式区分开彼此必须消费对方不消费的key,为什么是key呢,因为key相同可以保证是同一状态序列的对象,比如同一个订单的key是相同的订单号,发到同一个partition从而避免消费顺序错乱。并且一段时间后新消费者自动消费全部消息,旧消费者不再消费任何消息,实现新服务上线的自动切换。
要实现这种思路,我的第一个想法就是使用时间戳区分。发送消息的时候携带订单创建时间时间戳。新旧消费者同时加一段逻辑,当时间戳为空或者小于上线后的某个时间点a,旧消费者消费消息。时间戳存在且大于等于a则旧消费者不消费、新消费者消费消息。时间点a是静态的,与机器时间无关。
细节是:旧消费逻辑加一个开关,如果开关开且大于a则旧消费者不消费。出现问题可以回滚开关
上线期间,先上线旧消费者,稳定消费后上线新消费者,新消费者无流量。如果新旧消费者在一个服务里也没有关系。此时是时间戳为空,旧消费者稳定消费消息。
再上线新生产者,新旧生产者如果在同一个服务也没关系。此时现象是由于时间点在a之前,因此只有创建时间小于a的数据,旧消费者稳定消费消息,新消费者丢弃消息。
当时间点大于a后,新消费者开始消费,新旧消费者同时有消息在消费。旧消费者仅消费订单创建时间小于a的消息,新消费者仅消费订单创建时间大于等于a的消息,旧消费者消费的消息新消费者绝不会消费,新消费者消费的消息旧消费者绝不会消费,数据是根据创建时间也即id(key)天然隔离的。
当创建时间小于a的消息完全终态后,旧消费者只丢弃消息,新消费者消费全部消息。旧消费者可以下线。
线上稳定运行后,新消费者可以去掉判断逻辑。
这种方案,需要可以在新旧消息体中添加创建时间字段,且数据必须具有创建时间这一属性。

序号 动作 状态
1 上线旧消费者,当创建时间时间戳为空或者小于上线后的某个时间点a,旧消费者消费消息 时间戳为空,旧消费者稳定消费
2 上线新消费者 旧消费者稳定消费消息,新消费者无流量
3 上线旧生产者,携带时间戳 旧消费者稳定消费消息,新消费者无流量
4 上线新生产者,携带时间戳 旧消费者稳定消费消息,新消费者丢弃消息
5 时间点a到来之前 旧消费者稳定消费消息,新消费者丢弃消息
6 时间点a之后 旧消费者仅消费订单创建时间小于a的订单,新消费者仅消费订单创建时间大于等于a的订单
7 创建时间小于a的订单消息全部消费完成后 旧消费者只丢弃消息,新消费者消费全部消息
8 旧消费者下线 新消费者稳定消费全部消息,旧topic稳定发送给其它需要旧消息的消费者
9 新消费者端去掉判断逻辑 新消费者稳定消费全部消息

五、新增发送者、旧发送者下线、新增topic文章来源地址https://www.toymoban.com/news/detail-615758.html

到了这里,关于kafka topic迁移方案及过程记录(待整理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 商城-学习整理-基础-分布式组件(三)

    搭建分布式的基本环境,主要是注册中心、配置中心、网关。 在分布式开发中,每一个微服务上线都应该将自己注册到注册中心,这样做的好处就是订单服务想要调用商品服务,可以去注册中心看一下,哪几个商品服务注册进来了,1号、2号,可以挑一个可用的商品服务去远

    2024年02月16日
    浏览(41)
  • 存储、计算、分布式存储篇(收集整理适合小白)

    存储分类 块存储 需要格式化,将文件直接保存到磁盘上 文件存储 应用程序通过调用操作系统将文件保存到块存储进行持久化 Object对象存储 基于对象的存储,也可以被称为云存储,在对象存储系统中,文件没有多层级的文件结构,而是以存储空间的概念,文件被拆分为多个

    2024年02月05日
    浏览(51)
  • 分布式配置中心Apollo中Namespace的类型整理

    Namespace类型有三种: 【1】私有类型 【2】公共类型 【3】关联类型(继承类型) 私有类型的Namespace具有private权限。例如上文提到的“application” Namespace就是私有类型。 1.介绍 公共类型的Namespace具有public权限。公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的

    2024年02月09日
    浏览(35)
  • 存储、计算、分布式虚拟化篇(收集整理适合小白)

    超融合 硬件资源的统一管理 虚拟化 计算机资源最大化利用 桌面云 虚拟机上的桌面 虚拟桌面资源池 用户使用的云桌面虚拟机 虚拟应用资源池 应用虚拟化的虚拟机 处理器虚拟化 将一个物理的CPU虚拟成多个逻辑CPU供虚拟机使用 超线程技术 将多线程处理器内部的逻辑内核模拟

    2024年01月16日
    浏览(50)
  • Kafka系列之:记录一次Kafka Topic分区扩容,但是下游flink消费者没有自动消费新的分区的解决方法

    生产环境Kafka集群压力大,Topic读写压力大,消费的lag比较大,因此通过扩容Topic的分区,增大Topic的读写性能 理论上下游消费者应该能够自动消费到新的分区,例如flume消费到了新的分区,但是实际情况是存在flink消费者没有消费到新的分区 出现无法消费topic新的分区这种情况

    2024年02月14日
    浏览(50)
  • 【大数据工具】Kafka伪分布式、分布式安装和Kafka-manager工具安装与使用

    Kafka 安装包下载地址:https://archive.apache.org/dist/kafka/ 1. Kafka 伪分布式安装 1. 上传并解压 Kafka 安装包 使用 FileZilla 或其他文件传输工具上传 Kafka 安装包: kafka_2.11-0.10.0.0.tgz 解压安装包 2. 编辑配置文件 3. 拷贝并修改配置文件 分别修改 server2.properties、server3.properties 4. 创建日志

    2024年02月14日
    浏览(45)
  • 存储、计算、分布式知识点思维导图(收集整理适合小白)

    IO技术 FC协议 光纤通道协议,为了解决I/O传输瓶颈对于整个存储系统带来的消极影响从而产生的光纤通道标准协议簇 iSCSI技术 一种专门为小型计算机系统设计的I/O技术又被成为小型计算机系统接口,通过网络由专门的服务器提供存储管理,已实现数据的远程存储,便于集中管

    2024年03月11日
    浏览(57)
  • 分布式消息服务kafka

    什么是消息中间件? 消息中间件是分布式系统中重要的组件,本质就是一个具有接收消息、存储消息、分发消息的队列,应用程序通过读写队列消息来通信。 例如:在淘宝购物时,订单系统处理完订单后,把订单消息发送到消息中间件中,由消息中间件将订单消息分发到下

    2024年02月01日
    浏览(43)
  • 【分布式技术】消息队列Kafka

    目录 一、Kafka概述 二、消息队列Kafka的好处 三、消息队列Kafka的两种模式 四、Kafka 1、Kafka 定义 2、Kafka 简介 3、Kafka 的特性 五、Kafka的系统架构 六、实操部署Kafka集群  步骤一:在每一个zookeeper节点上完成kafka部署 ​编辑 步骤二:传给其他节点 步骤三:启动3个节点 kafka管理

    2024年01月23日
    浏览(51)
  • 【分布式应用】kafka集群、Filebeat+Kafka+ELK搭建

    主要原因是由于在高并发环境下,同步请求来不及处理,请求往往会发生阻塞。比如大量的请求并发访问数据库,导致行锁表锁,最后请求线程会堆积过多,从而触发 too many connection 错误,引发雪崩效应。 我们使用消息队列,通过异步处理请求,从而缓解系统的压力。消息队

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包