Id生成方法及装置的制造方法_2

文档序号:9887740阅读:来源:国知局
[0056]图2是本发明一种实施方式的ID生成方法的流程图;参照图2,所述方法包括:
[0057]S201:接收ID生成请求;
[0058]需要说明的是,为进一步提高ID生成的速度,可并行生成ID,由于数据库所在的服务器的成本通常较高,而用于生成ID的前端机的成本相对较低,故而,本实施方式的方法的执行主体为用于生成ID的前端机,当然,还可为其他具有类似功能的设备,本实施方式对此不加以限制。
[0059]S202:依据所述ID生成请求获取当前时间、计数器的数值和本地预存的序号;
[0060]需要说明的是,所述本地预存的序号即为前端机的序号,也就是说,不同前端机本地预存的序号也不相同。
[0061]S203:根据当前时间、计数器的数值和本地预存的序号并按照预设规则生成新ID。
[0062]可理解的是,由于在并行生成ID的情况下,需要设置多个前端机,但不同前端机的当前时间和计数器的数值可能存在相同的情况,无法保证生成ID的唯一性,故而,本实施方式中,根据当前时间、计数器的数值和本地预存的序号并按照预设规则生成新ID,能够有效保证不同前端机所生成ID的唯一性。
[0063]S204:将所述新ID返回给所述ID生成请求的请求方。
[0064]由于本实施方式的方法的执行主体为前端机,在生成新ID后,所述前端机无法直接使用新ID,需要将所述新ID返回给所述ID生成请求的请求方(即数据库所在的服务器)。
[0065]图3是本发明一种实施方式的ID生成方法的流程图;参照图3,所述方法包括:
[0066]S301:接收ID生成请求;
[0067]S302:依据所述ID生成请求获取当前时间、计数器的数值和本地预存的序号;
[0068]步骤S301?S302与图2所示的实施方式的步骤S201?S202相同,在此不再赘述。
[0069]S303:计算当前时间和基准时间之间的时间差,根据所述时间差、计数器的数值和本地预存的序号并按照预设规则生成新ID。
[0070]可理解的是,为便于生成新ID,本实施方式中,可计算当前时间和基准时间之间的时间差,按照所述时间差、计数器的数值和本地预存的序号并按照预设规则生成新ID。
[0071]需要说明的是,所述基准时间可根据需要进行设置,当然,为了便于计算当前时间和基准时间之间的时间差,本实施方式中,可将所述基准时间设置为格林威治时间(即1970年01月01日00时00分00秒),也就是说,所述时间差即为unix时间戳,可直接进行获取,无需进行计算,从而进一步提高了 ID的生成效率。
[0072]S304:将所述新ID返回给所述ID生成请求的请求方。
[0073]步骤S304与图2所示的实施方式的步骤S204相同,在此不再赘述。
[0074]图4是本发明一种实施方式的ID生成方法的流程图;参照图4,所述方法包括:
[0075]S401:接收ID生成请求;
[0076]S402:依据所述ID生成请求获取当前时间、计数器的数值和本地预存的序号;
[0077]步骤S401?S402与图2所示的实施方式的步骤S201?S202相同,在此不再赘述。
[0078]S403:计算当前时间和基准时间之间的时间差,将所述时间差、计数器的数值和本地预存的序号分别转换为二进制,并按照预设顺序将转换的二进制进行排列,以生成新ID。
[0079]可理解的是,为便于生成新ID,本实施方式中,可将所述时间差、计数器的数值和本地预存的序号分别转换为二进制,在转换成二进制之后,只需要按照预设顺序进行排列即可生成新ID。
[0080]需要说明的是,可直接按照时间差、计数器的数值和本地预存的序号的顺序进行排列,当然,还可按照其他顺序排列,本实施方式对此不加以限制。
[0081 ]在具体实现中,数据库的ID可为32位,也可为64位,当然,还可为其他位数,但考虑到目前64位的数据库较为广泛,故而,本实施方式中,所述新ID可为64位。
[0082]由于新ID是根据时间差、计数器的数值和本地预存的序号生成,故而,所述时间差、计数器的数值和本地预存的序号所转换的二进制需要能够组成64位的新ID,本实施方式中,为了尽量保证所述时间差不重复,本实施方式中,可将所述时间差精确至ms级,此时,所述时间差转换的二进制为42位,相应地,所述计数器转换的二进制为12位,所述本地预存的序号转换的二进制为10位,当然,还可按照其他位数进行设置,本实施方式对此不加以限制。
[0083]S404:将所述新ID返回给所述ID生成请求的请求方。
[0084]步骤S404与图2所示的实施方式的步骤S204相同,在此不再赘述。
[0085]对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
[0086]图5是本发明一种实施方式的ID生成装置的结构框图;参照图5,所述装置包括:
[0087]请求接收单元501,适于接收ID生成请求;
[0088]数据获取单元502,适于依据所述ID生成请求获取当前时间和计数器的数值;
[0089]ID生成单元503,适于根据当前时间和计数器的数值并按照预设规则生成新ID。
[0090]在本发明的一种可选实施例中,所述数据获取单元,进一步适于依据所述ID生成请求获取当前时间、计数器的数值和本地预存的序号;
[0091]相应地,所述ID生成单元,进一步适于根据当前时间、计数器的数值和本地预存的序号并按照预设规则生成新ID。
[0092]在本发明的一种可选实施例中,所述ID生成单元,进一步适于计算当前时间和基准时间之间的时间差,根据所述时间差、计数器的数值和本地预存的序号并按照预设规则生成新ID。
[0093]在本发明的一种可选实施例中,所述ID生成单元,进一步适于将所述时间差、计数器的数值和本地预存的序号分别转换为二进制,并按照预设顺序将转换的二进制进行排列,以生成新ID。
[0094]在本发明的一种可选实施例中,所述新ID为64位数字。
[0095]在本发明的一种可选实施例中,所述时间差转换的二进制为42位,所述计数器转换的二进制为12位,所述本地预存的序号转换的二进制为10位。
[0096]在本发明的一种可选实施例中,所述装置还包括:
[0097]ID返回单元,适于将所述新ID返回给所述ID生成请求的请求方。
[0098]在本发明的一种可选实施例中,其特征在于,所述装置还包括:
[0099]数值更新单元,适于对所述计数器的数值进行更新。
[0100]对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0101]应当注意的是,在本发明的装置的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本发明不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。
[0102]本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1