[发明专利]分布式全球唯一ID生成方法有效
申请号: | 201310684624.5 | 申请日: | 2013-12-13 |
公开(公告)号: | CN103838604B | 公开(公告)日: | 2017-01-11 |
发明(设计)人: | 吴开 | 申请(专利权)人: | 广东星辉天拓互动娱乐有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445;H04L29/06 |
代理公司: | 北京联瑞联丰知识产权代理事务所(普通合伙)11411 | 代理人: | 黄冠华 |
地址: | 510000 广东省广州市天河区软件园高唐新*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 分布式 全球 唯一 id 生成 方法 | ||
技术领域
本发明涉及游戏服务器处理技术,具体涉及分布式全球唯一ID的生成方法。
背景技术
游戏服务器为了支撑游戏的正常运行,对游戏中每个人物、物品甚至每项变量都需要设置一个唯一的ID,以保证游戏的正常运行。现有的唯一ID生成方法一般有两种形式,UUID生成算法和累加生成法。UUID生成算法虽然技术成熟、效果好,但其长度太长,不利于保存和传输,难以在游戏服务器中应用;而累加生成法在生成下一个ID前,必须记录当前生成的最大ID,如果当前生成的最大ID是记录在内存上,当出现异常情况时将丢失记录;如果当前生成的最大ID记录在硬盘中的话,由于ID生成是一个非常频繁的操作,将会对计算机的硬盘IO造成压力。
发明内容
针对上述现有技术不足,本发明要解决的技术问题是提供一种能有效应对进程意外崩溃的问题、避免了对计算机IO所造成巨大压力的唯一ID生成算法,并且生成的ID便于保存和传输,满足游戏服务器的实际使用需求。
为解决上述技术问题,本发明采用的技术方案为,分布式全球唯一ID生成方法,其特征在于:包括如下步骤:
S1:设定为逻辑进程编码的进程ID区间的位数,并为每个逻辑进程编码生成一个进程ID区间的值;设定个体ID区间的位数,为每个单位时间段按顺序划分个体ID区间的可分配值;所述分布式全球唯一ID由进程ID区间和个体ID区间拼接而成;每个逻辑进程的进程ID区间的值对应的个体ID区间,为该逻辑进程可分配ID的区间;
S2:设定游戏出生时间;
S3:启动服务器,获取启动当时的时间,根据启动当时时间与游戏出生时间,计算个体ID区间的可分配初始值,并为每个逻辑进程分别缓存可分配初始值减1为已分配值;
S4:接收ID分配指令,确定对应的逻辑进程,对该逻辑进程的已分配值进行加1,作为待分配个体ID区间的值;根据接收ID分配指令的时间与游戏出生时间,计算个体ID区间的可分配最大值;判断待分配个体ID区间的值是否小于个体ID区间的可分配最大值,若是,则保存该待分配个体ID区间的值缓存为新的已分配值,并把该待分配个体ID区间的值与其对应的逻辑进程的进程ID区间的值拼接成新分配的分布式全球唯一ID,分布式全球唯一ID生成完毕,返回本步骤开始,等待下一个ID分配指令;否则终止进程;
S5:当关闭服务器后,服务器重新启动时执行步骤S3。
这样的方案使,ID分配的初始值不依赖原始的累加,而是根据时间计算出,即使出现异常情况丢失记录,新的初始值也必然不会与已生成的ID值重复,保证ID的唯一性;同时也采用局部累加的方式对ID号进行新分配,使得ID的位数可以大大缩短也能满足实际需要。
进一步的技术方案为,所述步骤S1中,为每个时间段按顺序划分个体ID区间的可分配值的步骤,具体为:设定在一个单位时间段内的每个逻辑进程可分配的ID数量的最大值,以该最大值为周期划分个体ID区间的取值范围,每个取值范围按顺序对应一个单位时间段;
所述步骤S3中,根据启动当时时间与游戏出生时间,计算个体ID区间的可分配初始值的步骤,具体为:根据启动当时时间与游戏出生时间的差值,以游戏出生时间作为第一个单位时间段的起点,确定启动当时时间所在的单位时间段,确定该单位时间段对应的个体ID区间取值范围,该取值范围的最小值为所述可分配初始值;
所述步骤S4中,根据接收ID分配指令的时间与游戏出生时间,计算个体ID区间的可分配最大值的步骤,具体为:根据接收ID分配指令的时间与游戏出生时间的差值,以游戏出生时间作为第一个单位时间段的起点,确定启动当时时间所在的单位时间段,确定该单位时间段对应的个体ID区间取值范围,该取值范围的最大值为所述个体ID区间的可分配最大值。
进一步的技术方案为,所述步骤S1中,进程ID区间的位数根据游戏所需逻辑进程数量而确定,逻辑进程的数量减1后以二进制数表示,该二进制数的位数为进程ID区间的最少所需位数;
个体ID区间的位数由一个单位时间段内的每个逻辑进程可分配的ID数量的最大值预计值与游戏寿命预计值而确定,该最大值预计值与游戏寿命预计值相乘后减1以二进制数表示,该二进制数的位数为个体ID区间的最少所需位数。
优选地,步骤S1中,所述进程ID区间设定为16位,个体ID区间设定为48位。
更优地,所述单位时间段为游戏最小时间单位。
更优地,所述步骤S3中还包括在启动服务器时,检测服务器所获取的当前时间是否合法的步骤。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东星辉天拓互动娱乐有限公司,未经广东星辉天拓互动娱乐有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310684624.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:输电线路的远方跳闸方法
- 下一篇:一种异步电机最优转差频率控制方法