突破Java面试(9)-如何保证消息队列的顺序性
0 Github
1 面试题
如何保证消息的顺序性?
2 考点分析
MQ必问话题
- 考察你是否了解顺序性
- 考察你是否有办法保证消息的顺序性,因为这是生产系统中常见的一个问题.
3 详解
3.0 案例
一个MySQL binlog同步系统,日同步数据达到上亿.
- 在MySQL里
增删改
一条数据 - 即对应出增删改3条binlog
- 接着这三条binlog发送到MQ里面
- 消费出来依次执行
应该得保证消息按照顺序执行的吧!
不然本来是:增加->修改->删除
你楞是换了顺序给执行成:删除->修改->增加
全错!!!
该数据同步过来,最后本该被删除,结果你搞错顺序,最后它却被保留下来了,数据同步出错!
3.1 顺序错乱的场景
3.1.1 rabbitmq
一个queue,多个consumer,这不明显乱了
3.1.2 kafka
一个topic,一个partition,一
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Leetcode 54:Spiral Matrix 螺旋矩阵
54:Spiral Matrix 螺旋矩阵 Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order. 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。 Example 1: Input: [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ] ] Output: [1,2,3,6,9,8,7,4,5] Example 2: Input: [ [1, 2, 3, 4], [5, 6, 7, 8], [9,10,11,12] ] Output: [1,2,3,4,8,12,11,10,9,5,6,7] 解题思路: 参考例二,观察索引改变方式:(0,0)--->(0,3)、(0,3)--->((2,3)--->(2,0)--->(1,0)--->(1,2) 从(0,3)看,分别是:向下 横坐标自增1,到2;向左:纵坐标自减1 ...
- 下一篇
Python对我下手了!学会这几个知识点可以救命!
Python 难学吗?作为初学者该如何入门呢?本文选自Python 之父Guido van Rossum先生力荐的《零基础轻松学Python》一书,读的不尽兴的话,欢迎在本书中了解更多。 不要害怕这件事情,写代码,其实和写作文一样,首先需要有一个题目,然后对题目进行拆解。至于文采,也就是代码漂不漂亮就是另一回事了。相信很多读者看过很多Python基础入门的书籍,或者购买了很多Python的视频课,但还是不知道怎么写代码。其中的原因只有一个,就是编码的思路没有转变。 转变Python编码思路的唯一一个方法就是实战。只有在实战中你才能发现:代码因为少或者多了一个字母,或者是代码中用的是中文字符而不是英文字符导致没有出现预期结果;代码可以运行,没有语法错误,但结果却不是自己想要……但是当你通过模仿其他人的代码运行得到结果后,是不是也很有成就感。然后慢慢自己能学会设计代码,还有可能去教别人写代码。将模仿代码变成设计代码,最后能够自己写代码。 总之,我们的目标就是,给定任何一个开发项目,你脑中立即有编码思路,剩下的就是动手写一下代码而已。 在开始编码之前,我们需要明白两件事情:一是编码规则;二是...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果