全局顺序就目前的应用范围来讲,可以列举出来的也就限于binlog日志传输,如mysql binlog日志传输要求全局的顺序,不能有任何的乱序。

方法1

全局使用一个生产者
全局使用一个消费者(并严格到一个消费线程)
全局使用一个分区(当然不同的表可以使用不同的分区或者topic实现隔离与扩展)

这种方法效率较低

方法二

比如
在1个topic中,有3个partition,那么如何保证数据的消费?

  • 比如可以以订单ID作为key,然后取Hash,那么订单ID相同的一定会分到同一分区.
  • 同一分区的数据如果只有一个消费者单线程消费,那么一定也是有序的.
  • 同一分区的数据如果有多个线程消费. 就需要写N个queue,将具有相同key的数据都存储在同一个queue,然后对于N个线程,每个线程分别消费一个queue即可。

总结

  • 首先要看业务有没有顺序消费的需求
  • 其次要考虑顺序要求效率要求之间的平衡

参考

kafka如何保证数据的顺序消费

Kafka 如何保证消息全局有序相关推荐

  1. Go语言如何操纵Kafka才能保证消息不丢?

    背景 目前一些互联网公司会使用消息队列来做核心业务,因为是核心业务,所以对数据的最后一致性比较敏感,如果中间出现数据丢失,就会引来用户的投诉,年底绩效就变成325了.之前和几个朋友聊天,他们的公司都在 ...

  2. 硬核图解| Kafka 如何保证消息不丢失?

    Kafka 消息框架,大家一定不陌生,很多人工作中都有接触.它的核心思路,通过一个高性能的MQ服务来连接生产和消费两个系统,达到系统间的解耦,有很强的扩展性. 你可能会有疑问,如果中间某一个环节断掉了 ...

  3. kafka怎么保证数据消费一次且仅消费一次?使用消息队列如何保证幂等性?

    精确一次处理语义(exactly onece semantic–EOS),Kafka的EOS主要体现在3个方面: 1)幂等producer 保证单个分区的只会发送一次,不会出现重复消息 2)事务(tr ...

  4. java如何保证mq一定被消费_消费端如何保证消息队列MQ的有序消费

    消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的有序性,显然这是在消息的生产端(Producer),但是往往在生产环境中有多个消息的消费端(Consumer) ...

  5. videojs如何获取请求消息_消息队列中,如何保证消息的顺序性?

    点击?蓝色" 深入原理",关注并"设为星标" 技术干货,第一时间推送 消息无序产生的原因 消息队列,既然是队列就能保证消息在进入队列,以及出队列的时候保证消息的 ...

  6. 消息中间件(五)——如何保证消息的顺序性

    当我们的系统中引入了MQ之后,不得不考虑的一个问题是如何保证消息的顺序性,这是一个至关重要的事情,如果顺序错乱了,就会导致数据的不一致. 比如:业务场景是这样的:我们需要根据mysql的binlog日 ...

  7. Kafka如何做到全局有序

    全局有序? 业务: 1 2 3 5 消费: 1 5 2 3 1.一个topic 一个分区 3个 虽然保证全局有序,但是性能下降 生产(很多公司也在使用,或则没有吧太在意) 2.单分区有序,那么我们想方 ...

  8. 【消息队列】kafka是如何保证消息不被重复消费的

    一.kafka自带的消费机制 kafka有个offset的概念,当每个消息被写进去后,都有一个offset,代表他的序号,然后consumer消费该数据之后,隔一段时间,会把自己消费过的消息的offs ...

  9. kafka的消费顺序_Kafka如何保证消息的顺序性

    1. 问题 比如说我们建了一个 topic,有三个 partition.生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到 ...

最新文章

  1. Linux日常运维--6
  2. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)
  3. 编码方式_机器学习中常用的编码方式
  4. 拉格朗日c语言实验报告,拉格朗日插值法C语言的实现(实验报告)(9页)-原创力文档...
  5. java NIO 资料总结
  6. Java中的类型推断和lambda表达式
  7. Python实现简单的记账本功能
  8. ConstraintLayout 学习笔记
  9. .NET Forms身份验证
  10. .Net培训个人总结笔记26
  11. 牛奶盒喷码字符识别(基于opencv)————(三)字符的识别
  12. eclipse 语言包在线更新地址
  13. 自己动手——快速搭建Java应用服务器
  14. ppt 插入柱状图及基础功能调整
  15. 第三方开发工具—PyCharm(安装、使用、汉化)超详细、图超多、注脚特多(Windows操作系统)
  16. 计算机时区找不到北京,电脑时区里为何没有标准北京时间
  17. 20160808某公司嵌入式面试总结(加个人答案)
  18. 图文一键生成短视频工具
  19. UDP组播开发测试实例
  20. 理解java中的happens-Before

热门文章

  1. 图相处理自学(一):数字图像基本概念
  2. bvp解算器是什么_中科院孙晓明:算法本身并没有善恶,看你想要的目标是什么...
  3. Python判断字符类型
  4. 计算机网络实验【静态路由】
  5. C语言在工业工程专业的应用,工业工程专业知识介绍
  6. uniapp 如何给搜索框设值_uni-app 顶部配置搜索框和左右图标
  7. python利用公式计算_从零开始用Python构造决策树(附公式、代码)
  8. 无法启动因为计算机丢失ac1st16,重装系统后cad2006打不开.提示因为计算机中丢失ac1st16.dll...
  9. 2017年杭州java面试题_2017年Java面试题整理
  10. 计算机术语解ssh,将Bash脚本SSH到计算机中而不提示密码和不使用密钥