mysql怎么保证消息的顺序性


我举个例子,我们以前做过一个 mysql binlog 同步的系统,压力还是非常大的,日同步数据要达到上亿,就是说数据从一个 mysql 库原封不动地同步到另一个 mysql 库里面去(mysql -> mysql)。常见的一点在于说比如大数据 team,就需要同步一个 mysql 库过来,对公司的业务系统的数据做各种复杂的操作。

你在 mysql 里增删改一条数据,对应出来了增删改 3 条 binlog 日志,接着这三条 binlog 发送到 MQ 里面,再消费出来依次执行,起码得保证人家是按照顺序来的吧?不然本来是:增加、修改、删除;你楞是换了顺序给执行成删除、修改、增加,不全错了么。

本来这个数据同步过来,应该最后这个数据被删除了;结果你搞错了这个顺序,最后这个数据保留下来了,数据同步就出错了。

先看看顺序会错乱的俩场景:

  • RabbitMQ:一个 queue,多个 consumer。比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。有三个消费者分别从 MQ 中消费这三条数据中的一条,结果消费者2先执行完操作,把 data2 存入数据库,然后是 data1/data3。这不明显乱了。

mysql怎么保证消息的顺序性

  • Kafka:比如说我们建了一个 topic,有三个 partition。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。
    消费者从 partition 中取出来数据的时候,也一定是有顺序的。到这里,顺序还是 ok 的,没有错乱。接着,我们在消费者里可能会搞多个线程来并发处理消息。因为如果消费者是单线程消费处理,而处理比较耗时的话,比如处理一条消息耗时几十 ms,那么 1 秒钟只能处理几十条消息,这吞吐量太低了。而多个线程并发跑的话,顺序可能就乱掉了。

mysql怎么保证消息的顺序性

Mootion Mootion

Mootion是一个革命性的3D动画创作平台,利用AI技术来简化和加速3D动画的制作过程。

Mootion 232 查看详情 Mootion

解决方案  

RabbitMQ
 

拆分多个 queue,每个 queue 一个 consumer,就是多一些 queue 而已,确实是麻烦点;或者就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。 

mysql怎么保证消息的顺序性

Kafka  

  • 一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。

  • 写 N 个内存 queue,具有相同 key 的数据都到同一个内存 queue;然后对于 N 个线程,每个线程分别消费一个内存 queue 即可,这样就能保证顺序性。

mysql怎么保证消息的顺序性

以上就是mysql怎么保证消息的顺序性的详细内容,更多请关注其它相关文章!


# 镜像  # 多个  # 错了  # 是有  # MySQL  # 曲靖推广营销费用  # 湖南长沙seo优化价格  # 沙镇短视频推广营销  # 宝鸡企业网站建设广告  # 福山营销型网站优化公司  # 香蜜湖网站优化方案  # 安贞自适应网站建设  # 莆田网站维护优化  # 网站建设要多少人员  # 辽源seo案例  # 数据同步  # 是一个  # 如何设置  # 的是  # 太低  # 单线程 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894 】


相关推荐: 《东方财富》条件单关闭方法  铁路12306座位怎么选_12306官方选座操作方法  微博网页版访问入口 微博网页版网页端使用指南  漫蛙app官方版手机正版入口-漫蛙漫画manwa在线漫画正版入口  《360浏览器》设置摄像头权限方法  PySimpleGUI中实现键盘按键与按钮事件绑定教程  悟空浏览器网页版在线工具 悟空浏览器网页版在线平台入口  百度竞价WAP显示PC链接问题  太平年在哪个平台播出  Animex动漫社正版在线入口 Animex动漫社动漫官方观看网  《伊瑟》凶影追缉库卢鲁boss攻略  WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程  《鹿路通》退余额方法  被称为海蜈蚣的海洋动物是  晨报|开发商暗示《空洞骑士:丝之歌》DLC开发中 《合金装备4》有望重制  蛙漫2(台版)正版官网 2025免费网页版分享  抖音火山版注销账号抖音会注销吗 抖音火山版与抖音账号注销关系  c++如何实现观察者设计模式_c++行为型设计模式实战  PHP中实现JSON数据数组分页的教程  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  店铺如何关联视频号推广?视频号推广有什么用?  小红书如何引流到私信?引流到私信有用吗?  iPhone12是否要更新ios16  如何自定义苹果手机铃声  谷歌浏览器官方镜像获取方法_谷歌浏览器网页版入口极速直达  Golang如何使用log记录日志信息_Golang log日志记录方法总结  CSS布局中意外顶部空白的调试与解决:深入理解padding-top  谷歌邮箱官方入口链接 谷歌邮箱网页版电脑端快速登录  狙击外星人小游戏在线链接_狙击外星人小游戏网页链接  composer licenses 命令:如何检查项目依赖的许可证?  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  iPhone17Pro如何连接蓝牙耳机_iPhone17Pro蓝牙设备配对与连接方法介绍  Coolpad5890 ROM刷机包  《星露谷物语》克林特好感度事件介绍  深入理解J*aScript异步操作:setTimeout与调用栈的真相  mysql如何管理数据库账户_mysql数据库账户管理技巧  使用VS Code作为你的个人知识管理系统  5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备  解决Flex容器横向滚动内容截断与偏移问题  yy漫画官方网站登录入口_yy漫画在线阅读页面地址  PointNet++语义分割模型中类别变更引发的断言错误及标签处理策略  C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别  mysql如何配置从库只读_mysql从库只读设置方法  谷歌浏览器如何查找和删除恶意软件 谷歌浏览器内置安全清理工具使用教程  漫蛙漫画官方版直通入口 2025漫蛙漫画免注册访问说明  Python中处理嵌套字典与列表的数据提取与过滤教程  优酷官网登录入口电脑版 优酷官网网址入口  风神瞳获取全攻略  海棠书屋官方在线书籍入口 海棠书屋文学作品浏览官网链接  《i莞家》修改昵称方法 

 2023-05-29

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.