一种身份标识生成方法、装置以及计算机可读存储介质与流程

文档序号:19155420发布日期:2019-11-16 00:41阅读:161来源:国知局
一种身份标识生成方法、装置以及计算机可读存储介质与流程

本发明涉及应用开发领域,特别是涉及一种身份标识生成方法、装置以及计算机可读存储介质。



背景技术:

随着it技术、互联网应用的高速发展,人类在生产、生活中产生了越来越多的数据,为了识别、管理这些不同的数据,在服务系统管理系统中需要为每一条数据生成一条电子数字的身份标识(id/identity),来作为数据表中的主键。该电子数字id需要包含以下几个特点:1、全局唯一;2、空间占用相对较小;3、具有较高的性能及可靠性。

在实际工程应用中,通过算法生成id,id有序且趋势递增,每个id占用64bit空间,id中暗含存储服务系统身份、存储身份标识版本号及id生成时间等信息。当物理机时间回调后,会生成重复的id。另外,身份标识生成装置分布式部署在多台物理机时,由于物理机上的时间不一致造成前一个请求获取的id反解出的时间晚于后一个请求获取的id反解出的时间,从而导致id不完全有序。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种身份标识生成方法、装置以及计算机可读存储介质,用于解决现有技术中身份标识生成序列不便于控制的问题。

为实现上述目的及其他相关目的,本发明提供一种身份标识生成方法,包括:在配置文件中提供身份标识的序列,并将身份标识的序列划分为第一区间和第二区间,所述第一区间用于存储当前时间与系统首次启用时间之差,所述第二区间用于存储设备身份和身份标识版本号;周期性地更新配置文件的当前更新时间;每当更新一次配置文件的当前更新时间后,检测是否存在时间回调,当存在时间回调时,则将身份标识版本号提升1,当不存在时间回调时,则身份标识版本号不变;根据当前更新时间、设备身份和身份标识版本号,生成有序的身份标识。

可选的,在所述服务生成身份标识的步骤后,业务系统从所述服务获取身份标识。

可选的,当业务系统未能从所述服务获取身份标识时,则所述服务获取至少一个身份标识并进行存储。

可选的,所述第一区间包括42位,所述第一区间的第一位用于占位,所述第一区间的第二位至第四十二位用于存储当前时间与系统首次启用时间之差。

可选的,所述第二区间包括22位数,所述第二区间的第一位至第六位用于存储服务系统身份,所述第二区间的第七位至所述十二位用于存储身份标识版本号,所述第二区间的第十三位至第二十二位用于存储设备身份。

可选的,检测是否存在时间回调的方法包括:判断当前更新时间是否大于上次记录时间,若是,则未存在时间回调,若否,则存在时间回调。

一种身份标识生成装置,包括:用于生成身份标识的服务系统以及用于应用身份标识的业务系统,所述服务系统包括配置文件模块、处理器和存储器,所述配置文件用于配置身份标识版本号、存储设备身份以及当前更新时间,所述存储器用于存储配置文件的指令,所述处理器用于处理配置文件的指令,所述服务系统与所述业务系统信号连接。

可选的,所述身份标识的序列包括第一区间和第二区间,所述第一区间用于存储当前更新时间,所述第二区间用于存储服务系统身份、身份标识版本号和设备身份。

可选的,所述第一区间包括42位,所述第一区间的第一位用于占位,所述第一区间的第二位至第四十二位用于存储当前时间与系统首次启用时间之差,所述第二区间包括22位数,所述第二区间的第一位至第六位用于存储服务系统身份,所述第二区间的第七位至所述十二位用于存储身份标识版本号,所述第二区间的第十三位至第二十二位用于存储设备身份。

一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,当所述指令在计算机上运行时,使得计算机执行所述的身份标识生成方法。

如上所述,本发明的身份标识生成方法、装置以及计算机可读存储介质,具有以下有益效果:

通过检测存在时间回调,防止因为时间回调产生的冗余身份标识,进而导致身份标识的无序,不便于依照时间轴管理和校验身份标识;

通过将身份标识按照时间轴依次存储在存储系统中,避免了一种身份标识生成装置在分布式部署场景下,物理机时间不同步导致获取身份标识顺序与请求顺序不一致,避免身份标识的无序排列。

附图说明

图1显示为本发明实施例的身份标识生成方法的示意图。

图2显示为本发明实施例的身份标识生成装置的示意图。

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

请参阅图1和2。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。本说明书所附图式所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容得能涵盖的范围内。同时,本说明书中所引用的如“上”、“下”、“左”、“右”、“中间”及“一”等的用语,亦仅为便于叙述的明了,而非用以限定本发明可实施的范围,其相对关系的改变或调整,在无实质变更技术内容下,当亦视为本发明可实施的范畴。

请参阅图1,本发明提供一种身份标识生成方法,包括:

s1:启动服务,在配置文件中给定三个配置项,身份标识版本号、存储设备身份以及当前更新时间;当前更新时间;

s2:周期性地更新配置文件的当前更新时间,该当前更新时间用于检测物理机时间是否回调;

s3:当前更新时间每次生成身份标识(id/identity)序列前,检测是否存在时间回调,当存在时间回调时,则将身份标识版本号提升1,当不存在时间回调时,则身份标识版本号不变,通过检测是否存在时间回调,将身份标识版本号与时间轴对应,防止因为时间回调,造成的身份标识版本号与时间轴不对应的现象,避免身份标识以及身份标识版本号的无序排列;

s4:根据当前更新时间、设备身份和身份标识版本号,并将身份标识的序列进行拼接,并在所述服务系统中生成所需的有序的身份标识。

在服务系统生成身份标识的步骤后,还包括所述有序的身份标识按照时间轴依次存储在存储系统中,进而存储在存储系统(例如redis)中的身份标识是有序且单调递增的,业务系统从所述存储系统中获取身份标识,避免了由于物理机上的时间不一致造成前一个请求获取的id反解出的时间晚于后一个请求获取的id反解出的时间,从而避免id不完全有序,当业务系统未能从所述存储系统获取身份标识时,则所述服务系统批量生成至少一个身份标识并进行存储于存储系统中,然后业务系统批量获取存储于存储系统中身份识别。在实际实施过程中,业务系统重复从redis中获取身份标识,如果redis中没有身份标识,则服务系统批量生成身份标识,并将身份标识使用同一key值放入redis中,具体地,在业务系统分布式部署的场景下,业务系统启动时检查redis中是否有身份标识,如果redis中没有身份标识,则从身份标识生成服务系统中批量获取1000条身份标识并存入redis中,否则不做任何操作。业务系统需要使用身份标识时,检查redis中是否有身份标识,如果redis中没有身份标识,则从身份识别生成服务系统中批量获取1000条身份标识存入redis中,否则,直接从redis中获取身份标识。特别的,在分布式部署的场景下,同一服务同时启动或者分布式部署同一服务时发现redis中没有身份标识,多个微服务均会去身份标识生成服务系统获取1000条身份标识并加入redis的同一key中,该场景可能导致时间序列较新的身份标识(id/identity)序列存入redis后被身份标识(id/identity)序列较老的覆盖掉,导致业务系统取身份标识(id/identity)序列时不完全递增,所以在业务系统向redis存数据时建议使用分布式锁进行互斥,微服务发现存储身份标识(id/identity)序列的key被锁定后,则放弃将本次身份标识(id/identity)序列加入redis中。

所述身份标识的序列可依据snowflakeid,总位数为64bit,其中,所述第一区间包括42位,所述第一区间的第一位用于占位,所述第一区间的第二位至第四十二位用于存储当前时间与系统首次启用时间之差,所述第二区间包括22位数,所述第二区间的第一位至第六位用于存储服务系统身份,所述第二区间的第七位至所述十二位用于存储身份标识版本号,所述第二区间的第十三位至第二十二位用于存储设备身份,每个节点每一毫秒可以生成1024个所述的身份标识。

在实施过程中,检测是否存在时间回调的方法包括:判断当前更新时间是否大于上次记录时间,若是,则未存在时间回调,若否则存在时间回调。通过判定当前更新时间与上次记录的时间的数值关系,来判定时间是否回调,如果当前更新时间大于上次记录时间,则说明时间轴是单调递增,如果当前更新时间小于或者等于上次记录时间,则说明时间存在回调。

在实施过程中的s4,每当更新一次配置文件的当前更新时间后,检测是否存在时间回调,当存在时间回调时,则将身份标识版本号提升1,例如,id生成服务读取配置文件中的versionid,在读取到的versionid基础上加1并写入配置文件。

在另一实施例中,还提供一种身份标识生成装置,包括:用于生成身份标识的服务系统以及用于应用身份标识的业务系统,所述服务系统包括配置文件模块、处理器和存储器,所述配置文件用于配置身份标识版本号、存储设备身份以及当前更新时间,所述存储器用于存储配置文件的指令,所述处理器用于处理配置文件的指令,所述服务系统与所述业务系统信号连接,在实施过程中,所述处理器包括上位机、计算机或者cpu,所述存储器用于存储所述的身份标识方法的指令,所述时钟模块用于判断时间回调,所述存储器用于存储身份标识的序列,所述服务系统与所述业务系统信号连接,通过所述处理器调用所述处理器内的指令,读取身份标识的序列,通过时钟模块判断时间是否回调,处理器依据当前更新时间在存储器内来写入身份标识的序列,依据当前更新时间周期性地写入身份标识的序列,并存储在所述存储器内,通过时钟模块再次判断时间是否回调,当存在时间回调时,则将身份标识版本号提升1,当不存在时间回调时,则身份标识版本号不变。

为了保障服务系统生成的身份标识为有序的,所述身份标识生成装置还包括用于存储身份标识的存储系统,所述存储系统与服务系统信号连接,当服务系统生成有序的身份标识时,按照时间轴依次将有序的身份标识存储入存储系统,当业务系统需要调用时,从存储系统获取身份标识,保障获取的身份标识的有序性。

在实施过程中,所述身份标识的序列可依据snowflakeid,其序列包括第一区间和第二区间,所述第一区间用于存储当前时间与系统首次启用时间之差,所述第二区间用于存储服务系统身份、身份标识版本号和设备身份,所述第一区间包括42位,所述第一区间的第一位用于占位,所述第一区间的第二位至第四十二位用于存储当前时间与系统首次启用时间之差,所述第二区间包括22位数,所述第二区间的第一位至第六位用于存储服务系统身份,所述第二区间的第七位至所述十二位用于存储身份标识版本号,所述第二区间的第十三位至第二十二位用于存储设备身份。

本申请实施例还提供一种计算机程序产品,其包含指令,当所述计算机程序被计算机所执行时,该指令使得计算机执行上述方法中所执行的功能。

在上述实施例中可以全部或者部分的通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或者部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或者多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或者部分地产生按照本申请实施例所述的流程或者功能。所述计算机可以是通用的计算机、专用计算机、计算机网络或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输。

例如,所述计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤数字用户线dsl)或者无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或者数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或者多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如软盘、硬盘、磁带、光介质(例如dvd)、或者半导体介质(例如固态硬盘ssd)等。

上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1