游戏服务器分布式数据的一种同步的思路
💡
原文中文,约1700字,阅读约需4分钟。
📝
内容提要
在游戏服务器的分布式设计中,避免将密切交互的模块分别实现在不同进程中。通过RPC在不同进程间通信时,可能会遇到超时问题。针对RPC超时,一般的做法是打上详细的日志,根据日志给玩家补偿。最近遇到的需求是在跨服给玩家定期产出资源到本地服,需解决数据包丢失问题。将产出拆成两部分实现,先产出到跨服,再同步到本地服。改进产出逻辑,记录总产出周期和资源,同步到本地服。玩家领取奖励时,将存储的周期同步到跨服。整个解决思路是将分布式行为拆分成本地行为+同步行为,使用单调作为武器。
🎯
关键要点
- 在游戏服务器的分布式设计中,避免将密切交互的模块分别实现在不同进程中。
- RPC通信可能会遇到超时问题,超时可能是由于请求未被接收或响应未被接收。
- 重试超时的RPC时需谨慎,以免重复扣除玩家资源。
- 针对RPC超时,通常做法是在调用方和被调用方记录详细日志,以便补偿玩家。
- 新需求是在跨服定期产出资源到本地服,需解决数据包丢失问题。
- 将跨服产出拆分为两部分:先产出到跨服,再同步到本地服。
- 同步数据包可能丢失,但重试操作是幂等的,确保数据一致性。
- 玩家领取资源时需扣除产出,改进逻辑记录总产出周期和资源。
- 本地服记录最新的总产出周期和资源,确保同步时数据准确。
- 解决思路是将分布式行为拆分为本地行为和幂等的同步行为,使用单调作为工具。
➡️