高并发架构实战 Day40

发送消息的时候已经通过某些依据(如订单号、uid)算出这条消息应该投放到哪个分区内,Kafka 同一个分区内的消息是顺序的。

那为什么要保证消费顺序呢?其实核心在于我们的数据操作必须按顺序执行,如果不按顺序,就会出现很多奇怪的场景。

比如"用户执行创建订单、支付订单、退费"这一系列操作,消费进程很有可能会先收到退费消息,但由于还没收到创建订单和支付订单的消息,退费操作在此时就无法进行。

当然,这只是个简单的例子,如果碰到更多步骤乱序的话,数据会更加混乱。所以我们如果想做好数据同步,就要尽量保证数据是顺序的。

队列在大部分时间是能够保证顺序性的,但是在极端情况下仍会有乱序发生。为此,我们在业务逻辑上需要做兼容,即使无法自动解决,也要记录好相关日志以方便后续排查问题。

不难发现,因为这个"顺序"的要求,我们的数据同步存在很大难度,好在 Kafka 是能够长时间保存消息的。如果在同步过程中出现问题,除了通过日志对故障进行修复外,我们还可以将故障期间的流量进行重放(重放要保证同步幂等)

相关推荐
东风微鸣11 分钟前
Argo CD 用户管理:本地用户配置与权限分离实践
git·后端
Yeats_Liao15 分钟前
Java网络编程(五):Selector选择器与高并发实现
java·后端·架构
小小龙学IT21 分钟前
Go语言后端开发入门指南
开发语言·后端·golang
土星碎冰机30 分钟前
实现飞书群推送报错接口,critical复现curl
后端·飞书
淘源码A1 小时前
专科医院云HIS系统源码:技术栈包括SpringBoot、Angular、MySQL等
spring boot·后端·源码·云his·医院信息系统·医院his系统
小马爱打代码1 小时前
基于 SpringBoot 的微服务文件上传下载组件设计与实现
spring boot·后端
花椒技术1 小时前
AI 代码评审落地实践:GitLab 接入、项目规则与反馈闭环
后端·github·agent
掘金者阿豪2 小时前
Node.js 连接金仓数据库踩坑记(上篇):环境搭建与基础操作
后端
肌肉娃子2 小时前
20260603.记一次 Doris FE “幽灵卡死”引发的惨案:从表象到真凶的追凶实录
后端