我正在建立一个游戏系统,许多玩家可以在一起玩某种桌面游戏。可能同时有数百个游戏桌。该系统由几个组件组成,其中主要组件是游戏服务器和DBworker,其间有rabbitMQ。 DBWorker是负责数据库的组件。
所以,我需要确保每个游戏都有唯一的ID来正确跟踪游戏的结果。我很想拥有某种自动增量解决方案。当然我可以在PostgreSQL DB中做一些序列并且每次都会提取新的ID,但对我来说这似乎是一个明显的瓶颈(我不想一直链接到DB。如果DB下降显示必须去当我们的工程师恢复数据库时。)
那么,实现类似的任何想法或个人经验?
P.S。我正在考虑将时间戳作为ID,但真正的ID会更好。我不确定为什么我这么想 - 如果我错了,请纠正我。
提前感谢大家!
答案 0 :(得分:2)
这是一个要求,而不是ID是一个整数吗?如果没有,那么为什么不使用UUID(RFC 4122)呢?我想,随机UUID应该足以满足您的目的。
答案 1 :(得分:0)
我使用我为个人使用而构建的简单桌面应用程序做了类似的事情,每当我保存对象时,您生成一个新的唯一ID - 这是一个基于最后一个值(+1)的简单int。在正在运行的应用程序的生命周期中的某些点,我将状态保存到磁盘(序列化XML)。这个失败的唯一一次是我无法在启动时打开以前保存的XML,也就是应用程序获取的起始值增加。
我不知道它是防弹还是“最好的”,但它对我需要的东西很有效。