对跨服玩法中的分布式一致性问题进行简单抽象

💡 原文中文,约3800字,阅读约需9分钟。
📝

内容提要

文章探讨了跨服游戏中的数据一致性问题,提出了三种工作模式及其处理策略:模式一为跨服奖励发放,模式二为玩家请求处理,模式三为复杂的跨服PVP事务。作者设计了Mq和UserSync组件,以确保消息顺序和低延迟,实现分布式事务的最终一致性。

🎯

关键要点

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

继续阅读