Kafka 如何保证消息全局有序
全局顺序
就目前的应用范围来讲,可以列举出来的也就限于binlog
日志传输,如mysql binlog
日志传输要求全局的顺序,不能有任何的乱序。
方法1
全局使用一个生产者
全局使用一个消费者(并严格到一个消费线程)
全局使用一个分区(当然不同的表可以使用不同的分区或者topic实现隔离与扩展)
这种方法效率较低
方法二
比如
在1个topic
中,有3个partition
,那么如何保证数据的消费?
- 比如可以以
订单ID
作为key,然后取Hash,那么订单ID相同的一定会分到同一分区. - 同一分区的数据如果只有一个消费者单线程消费,那么一定也是有序的.
- 同一分区的数据如果有多个线程消费. 就需要写N个queue,将具有相同key的数据都存储在同一个queue,然后对于N个线程,每个线程分别消费一个queue即可。
总结
- 首先要看业务有没有
顺序消费
的需求 - 其次要考虑
顺序要求
与效率要求
之间的平衡
参考
kafka如何保证数据的顺序消费
Kafka 如何保证消息全局有序相关推荐
- Go语言如何操纵Kafka才能保证消息不丢?
背景 目前一些互联网公司会使用消息队列来做核心业务,因为是核心业务,所以对数据的最后一致性比较敏感,如果中间出现数据丢失,就会引来用户的投诉,年底绩效就变成325了.之前和几个朋友聊天,他们的公司都在 ...
- 硬核图解| Kafka 如何保证消息不丢失?
Kafka 消息框架,大家一定不陌生,很多人工作中都有接触.它的核心思路,通过一个高性能的MQ服务来连接生产和消费两个系统,达到系统间的解耦,有很强的扩展性. 你可能会有疑问,如果中间某一个环节断掉了 ...
- kafka怎么保证数据消费一次且仅消费一次?使用消息队列如何保证幂等性?
精确一次处理语义(exactly onece semantic–EOS),Kafka的EOS主要体现在3个方面: 1)幂等producer 保证单个分区的只会发送一次,不会出现重复消息 2)事务(tr ...
- java如何保证mq一定被消费_消费端如何保证消息队列MQ的有序消费
消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的有序性,显然这是在消息的生产端(Producer),但是往往在生产环境中有多个消息的消费端(Consumer) ...
- videojs如何获取请求消息_消息队列中,如何保证消息的顺序性?
点击?蓝色" 深入原理",关注并"设为星标" 技术干货,第一时间推送 消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的 ...
- 消息中间件(五)——如何保证消息的顺序性
当我们的系统中引入了MQ之后,不得不考虑的一个问题是如何保证消息的顺序性,这是一个至关重要的事情,如果顺序错乱了,就会导致数据的不一致. 比如:业务场景是这样的:我们需要根据mysql的binlog日 ...
- Kafka如何做到全局有序
全局有序? 业务: 1 2 3 5 消费: 1 5 2 3 1.一个topic 一个分区 3个 虽然保证全局有序,但是性能下降 生产(很多公司也在使用,或则没有吧太在意) 2.单分区有序,那么我们想方 ...
- 【消息队列】kafka是如何保证消息不被重复消费的
一.kafka自带的消费机制 kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offs ...
- kafka的消费顺序_Kafka如何保证消息的顺序性
1. 问题 比如说我们建了一个 topic,有三个 partition.生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到 ...
最新文章
- Linux日常运维--6
- 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
- 编码方式_机器学习中常用的编码方式
- 拉格朗日c语言实验报告,拉格朗日插值法C语言的实现(实验报告)(9页)-原创力文档...
- java NIO 资料总结
- Java中的类型推断和lambda表达式
- Python实现简单的记账本功能
- ConstraintLayout 学习笔记
- .NET Forms身份验证
- .Net培训个人总结笔记26
- 牛奶盒喷码字符识别(基于opencv)————(三)字符的识别
- eclipse 语言包在线更新地址
- 自己动手——快速搭建Java应用服务器
- ppt 插入柱状图及基础功能调整
- 第三方开发工具—PyCharm(安装、使用、汉化)超详细、图超多、注脚特多(Windows操作系统)
- 计算机时区找不到北京,电脑时区里为何没有标准北京时间
- 20160808某公司嵌入式面试总结(加个人答案)
- 图文一键生成短视频工具
- UDP组播开发测试实例
- 理解java中的happens-Before
热门文章
- 图相处理自学(一):数字图像基本概念
- bvp解算器是什么_中科院孙晓明:算法本身并没有善恶,看你想要的目标是什么...
- Python判断字符类型
- 计算机网络实验【静态路由】
- C语言在工业工程专业的应用,工业工程专业知识介绍
- uniapp 如何给搜索框设值_uni-app 顶部配置搜索框和左右图标
- python利用公式计算_从零开始用Python构造决策树(附公式、代码)
- 无法启动因为计算机丢失ac1st16,重装系统后cad2006打不开.提示因为计算机中丢失ac1st16.dll...
- 2017年杭州java面试题_2017年Java面试题整理
- 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥