多个应用程序之间的数据库状态
Database state between multiple applications
我有一个使用SQL数据库来存储/检索玩家数据的游戏服务器。游戏服务器有一个挂起的数据库请求/查询队列,以避免阻塞网络线程轮询。如果玩的玩家太多,数据库就会感到压力并开始减慢查询速度。
如果我有多个服务器正在运行,我担心一个玩家可能会断开连接,并且在将其信息保存到数据库之前,同一玩家连接到另一个游戏服务器(多个房间(并加载旧信息(使他失去游戏进度(。
我想知道是否有任何方法可以管理多个应用程序实例(游戏服务器(之间的这种类型的同步。
我想过事务,但如果队列的排行速度不够快(查询在服务器内存上挂起 - 而不是在数据库服务器上(,这仍然会导致问题。
制作一个所有游戏服务器连接并请求数据库操作(从而避免多个队列(的"数据库服务器"不是一种选择。
假设数据库已完美优化,并且必须在应用程序本身上制定解决方案。
我在这里有什么选择?
当玩家连接时,在数据库中创建一个"打开"记录。 当他断开连接时,创建一个"关闭"记录。
当玩家重新连接时,在所有现有"打开"记录具有匹配的"关闭"记录之前,不允许创建新的"打开"记录。
相关文章:
- 查询SQLite数据库中的日期
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在ArangoDb AQL查询中指定数据库
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 从数据库实时显示QT c++中的数据
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- 无法在C++中建立与MySQL数据库的连接
- std::future_error:无关联状态
- 将类实现到数据库程序中
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- 调试编译的服务器在数据库打开时崩溃
- C++变量mysql_query到数据库
- QSql数据库超出范围后,连接仍处于打开状态
- 无法删除 QSql数据库 - 查询仍处于活动状态
- 多个应用程序之间的数据库状态