首页 > 其他分享 >KafkaConsumer实现多线程消费的一种实现思路——不考虑消息的顺序性问题基础

KafkaConsumer实现多线程消费的一种实现思路——不考虑消息的顺序性问题基础

时间:2022-10-17 15:02:06浏览次数:49  
标签:KafkaConsumer 实现 偏移量 线程 消息 提交 多线程

背景介绍

一种Kafka多线程消费的实现思路以及方案,此方案不考虑消息消费的顺序性问题,假定消息之间没有依赖关系。

这个项目是公司里面开发有个SDK的所谓”飞行窗口“特性产生的需求,主要是为了保证消费者拉取的消息可以异步交由线程池执行,同时又不触发线程池的拒绝策略。

目前我的组长使用了他自己的认为好的方案,这套实现基本没人用,想着不能浪费,所以就提供了出来啦,当然把有些敏感信息都摘掉了,测试什么的做的不是很完善,所以大家想用的话可以参考,不承担任何责任哈。

实现思路

基本实现是前端由一个单线程去执行循环poll拉取数据,然后异步发送到线程池去执行,同时在发送时提供一个最大执行窗口的信号量来控制提交;

所以分区提交的offset交由后台的一个单独提交线程去执行;

由于线程的乱序执行,同时,kafka消息偏移量的一维概念,所以目前能保证的是尽量不重复消费,同时只提交已经完成的最小偏移量,而不是最大,

所以提交线程里面维护了一个待提交偏移量的队列,每个偏移量简单的做了层包装,实现了一个小的状态机。

中间还包括Rebalance的处理,以及关闭时的优雅处理等。

基本的运行时架构如下图,设计上还是比较简单的。

 

 代码地址

https://github.com/MarshWinter/kafka-multithread-consume

 

标签:KafkaConsumer,实现,偏移量,线程,消息,提交,多线程
From: https://www.cnblogs.com/marshwinter/p/16799212.html

相关文章

  • 八 多线程
    八多线程​​八多线程​​​​1基本概念:程序、进程、线程​​​​2线程的创建和使用​​​​3线程的生命周期​​​​4线程的同步​​​​5线程的通信​​​​6JDK5......
  • 基于C++11实现线程池
    单任务队列线程池用现代的C++标准库(线程+锁+条件变量)实现一个单任务队列的线程池非常简单。基本的实现思路是:在线程池构造时初始化线程数,在析构时停止线程池。对外只需要......
  • 直播商城系统源码,实现最简单最基本的轮播图样式
    直播商城系统源码,实现最简单最基本的轮播图样式一、H5的布局可以使用自己的图片,需要注意路径​ <divclass="banner"><ulclass="imgList"><li><imgsrc="1.png"/></l......
  • 直播带货源码,HTML + jQuery 实现轮播图
    直播带货源码,HTML+jQuery实现轮播图HTML页面部分1、首先创建可视窗口添加6张图片,添加CSS样式 2、添加左右切换按钮,设置样式 3、添加图片导航器,设置样式,添加悬......
  • 成绩综合评估系统的设计与实现
    springbootmybatisplusmysqlmaven光年前端后台管理框架 ......
  • 多表关系-多对多关系实现以及一对一关系实现
    多对多关系实现如:学生和课程实现方式:多对多关系实现需要借助第三张中间表,中间表至少包含两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键    一对......
  • 【微信小程序】本地服务页面案例实现
    通过往期的学习,我们现在也可以进行简单的小程序页面的制作了。本期案例:本地服务页面实现:效果:配置窗口localLife.json:{"usingComponents":{},"navigationBarTitl......
  • 【30天30个小项目】纯css/html实现侧边导航栏
    css代码:*{margin:0px;padding:0px;}#box{position:absolute;height:300px;width:150px;background-color:antiquewhite;r......
  • 计算机视觉系列案例 | 基于YOLOv3及Sort算法实现目标跟踪
    随着计算机视觉技术的发展,基于视频的目标跟踪算法成为研究热点。目标跟踪技术通常依据视频中目标及背景的信息,对目标的形状、大小、位置、轨迹等运动状态进行预测。目标跟踪......
  • 经常被问到的react-router实现原理详解
    在单页面应用如日中天发展的过程中,备受关注的少了前端路由。而且还经常会被xxx面试官问到,什么是前端路由,它的原理的是什么,它是怎么实现,跳转不刷新页面的...一大堆为什么,......