对跨服玩法中的分布式一致性问题进行简单抽象
💡
原文中文,约3800字,阅读约需9分钟。
📝
内容提要
文章探讨了跨服游戏中的数据一致性问题,提出了三种工作模式及其处理策略:模式一为跨服奖励发放,模式二为玩家请求处理,模式三为复杂的跨服PVP事务。作者设计了Mq和UserSync组件,以确保消息顺序和低延迟,实现分布式事务的最终一致性。
🎯
关键要点
- 文章探讨了跨服游戏中的数据一致性问题。
- 提出了三种工作模式及其处理策略:跨服奖励发放、玩家请求处理、复杂的跨服PVP事务。
- 模式一和模式二的数据一致性实现相对简单,主要依靠消息重发机制和去重逻辑。
- 模式三涉及复杂的跨服PVP事务,处理难度较大。
- 策略一:先扣资源再请求跨服处理,可能导致玩家损失。
- 策略二:先请求跨服处理再扣除资源,可能导致恶意刷资源漏洞。
- 倾向于采用先请求跨服处理再扣除资源的方式,尽量避免恶意利用。
- 消息队列中间件不适用于游戏场景,因其增加消息延迟。
- 设计了Mq和UserSync组件以确保消息顺序和低延迟,实现分布式事务的最终一致性。
- Mq组件保证消息按顺序送达,需在游戏服实现去重逻辑。
- UserSync组件对每个玩家的每个命令仅保留最新消息,确保低延迟。
- 跨服PVP场景是最复杂的,涉及分布式事务的处理。
- 结合Mq和UserSync组件,设计了跨服PVP的资源扣除流程。
- 实现了最终一致性的分布式柔性事务,处理逻辑可复用。
➡️