多个应用程序之间的数据库状态

Database state between multiple applications

本文关键字:数据库 状态 之间 应用程序      更新时间:2023-10-16

我有一个使用SQL数据库来存储/检索玩家数据的游戏服务器。游戏服务器有一个挂起的数据库请求/查询队列,以避免阻塞网络线程轮询。如果玩的玩家太多,数据库就会感到压力并开始减慢查询速度。

如果我有多个服务器正在运行,我担心一个玩家可能会断开连接,并且在将其信息保存到数据库之前,同一玩家连接到另一个游戏服务器(多个房间(并加载旧信息(使他失去游戏进度(。

我想知道是否有任何方法可以管理多个应用程序实例(游戏服务器(之间的这种类型的同步。

我想过事务,但如果队列的排行速度不够快(查询在服务器内存上挂起 - 而不是在数据库服务器上(,这仍然会导致问题。

制作一个所有游戏服务器连接并请求数据库操作(从而避免多个队列(的"数据库服务器"不是一种选择

假设数据库已完美优化,并且必须在应用程序本身上制定解决方案。

我在这里有什么选择?

当玩家连接时,在数据库中创建一个"打开"记录。 当他断开连接时,创建一个"关闭"记录。

当玩家重新连接时,在所有现有"打开"记录具有匹配的"关闭"记录之前,不允许创建新的"打开"记录。