一种基于用户标识的全局标识生成方法及设备与流程

文档序号:29980671发布日期:2022-05-11 12:39阅读:100来源:国知局
一种基于用户标识的全局标识生成方法及设备与流程

1.本发明属于计算机技术领域,具体来说涉及一种基于用户标识的全局标识生成方法及设备。


背景技术:

2.在复杂分布式交易系统中,服务请求端往往需要对大量请求消息、交易进行全局唯一性标识。全局唯一性标识,本质上是一个分布式系统中一般由数字、字母组成的,具有系统唯一性的字符串。
3.现有应用中,交易系统一般是采用交易时间戳、工作机器id、自增序列号三部分信息拼接的方式创建全局唯一标识,比如:雪花算法,是有一个64位的数据结构,包含1位标识位,41位时间戳,10位机器位(一般包含5位数据中心id和5位工作机器id),12位序列位组成。可见,该技术时间戳基于服务器时钟生成,当服务器发生时钟回拨时,生成id的时间戳也会随之回退,从而导致可能生成重复标识;同时该技术机器位一共有10bit位,无法满足数量大于1024的情况,同时为实现机器位自动分配功能还需要依赖外部存储服务。


技术实现要素:

4.本发明的目的之一在于提供一种基于用户标识的全局标识生成方法及设备,以解决背景技术中现有的全局标识生成方法需要依赖外部存储服务等问题。
5.本发明的目的之二在于提供一种基于用户标识的全局标识生成方法及设备,以解决背景技术中现有的全局标识生成方法在出现时钟回拨时会导致生成重复标识的问题。
6.为实现上述目的,本发明提供技术方案如下:
7.一种基于用户标识的全局标识生成方法,所述方法包括:
8.token信息获取步骤,基于用户请求信息获取用户标识和相关业务信息,并调用token器生成token信息;
9.时间戳及序号获取步骤,基于用户请求信息获取当前时间戳和当前请求序号;
10.编码步骤,对token信息、当前时间戳及当前请求序号利用信息编码技术生成全局唯一标识。
11.优选地,,所述token信息获取步骤包括以下子步骤:
12.通过用户请求信息获取用户标识和相关业务信息,所述相关业务信息为请求ip、请求时间戳、用户盐值中的一个或多个;
13.将用户标识和相关业务信息使用分隔符拼接成字符串;
14.将字符串通过md5加密生成token信息。
15.优选地,所述时间戳及序号获取步骤包括以下子步骤:
16.基于用户请求信息获取当前时间戳、上次请求序号及判别要素;
17.基于判别要素和预设的时钟回拨判别准则判定是否发生时钟回拨,并利用时钟回拨判别准则下的时间戳更新策略更新当前时间戳;
18.对上次请求序号利用时钟回拨判别准则下的序号更新策略更新当前请求序号;
19.请求序号门限下的当前时间戳及当前请求序号二次更新。
20.优选地,所述判别要素为上次生成全局唯一标识的时间戳,所述时钟回拨判别准则为若上次生成全局唯一标识的时间戳大于当前时间戳,则发生时钟回拨,否则未发生时钟回拨。
21.优选地,所述时间戳更新策略为若发生时钟回拨,则当前时间戳替换为上次生成全局唯一标识的时间戳,否则当前时间戳不变。
22.优选地,所述序号更新策略为若发生时钟回拨,则当前请求序号加1;若未发生时钟回拨,则当当前时间戳等于上次生成全局唯一标识的时间戳时,当前请求序号加1,否则当前请求序号为0。
23.优选地,所述二次更新步骤为判定更新的当前请求序号是否为最大请求序号,若是,通过时间借位方法对更新的当前时间戳进行二次更新,并将更新后的当前请求序号二次更新为0。
24.优选地,所述编码步骤包括以下子步骤:
25.将所述token信息、当前时间戳、当前请求序号分别转化为对应的token字节数组、时间戳字节数组、请求序号字节数组后,合并编码生成全局唯一标识。
26.一种计算机可读介质,所述计算机可读介质中存储有计算机程序,所述计算机程序用于执行步骤1-8任一项所述的基于用户标识的全局标识生成方法。
27.一种计算机设备,包括处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序由所述处理器加载并执行所述的基于用户标识的全局标识生成方法。
28.与现有技术相比,本发明的有益效果为:
29.本发明通过设置token信息来替换雪花算法中工作机器id部分,解决工作机器id位需要分配问题;并通过时钟回拨判别准则下的时间戳更新策略和请求序号更新策略,避免生成重复的全局标识,保证服务的正常运行。
附图说明
30.图1是雪花算法基本结构图。
31.图2是本发明提供的一种基于用户标识生成的全局标识结构图。
32.图3是本发明实施例一提供的一种基于用户标识的全局标识生成方法的流程示意图。
33.图4是本发明实施例二提供的一种基于用户标识的全局标识生成方法的流程示意图。
34.图5是本发明提供的一种基于用户标识的全局标识生成方法的时序图。
35.图6是本发明提供的一种计算机设备的结构示意图。
具体实施方式
36.图1是雪花算法组成结构基本示意图。参照图1,雪花算法的组成包括以下4部分:1位标识位,41位时间戳,10位机器位(一般包含5位数据中心id和5位工作机器id),12位序列位。
37.图2是使用本发明的基于用户标识的全局标识生成方法得到的全局标识的组成结构图。参照图2,本发明的全局标识包括以下3个部分:
38.token信息:客户的身份标识,通过请求服务端获取,对应雪花算法中工作机器id部分;
39.当前时间戳:标识格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至当前时间的差值,对应雪花算法中时间戳部分;
40.当前请求序号:相同用户token、相同时间戳下的请求次数,对应雪花算法中序列号部分。
41.实施例一
42.图3为一种基于用户标识的全局标识生成方法的流程示意图,参照图3,一种基于用户标识的全局标识生成方法,所述方法具体包括3个步骤:
43.s101,基于用户请求信息获取用户标识和相关业务信息,并调用token器生成token信息。
44.该s101中,用户标识为用户登陆时用于识别用户身份的名字,相关业务信息为请求信息中的请求ip、请求时间戳、用户盐值等一个或多个基本信息,该请求ip为请求用户的互联网协议地址;请求时间戳为发出请求信息时的时间戳,时间戳是一个字符序列,唯一地标识某一刻的时间;用户盐值为用户注册时,系统用来和用户密码进行组合而生成的随机数值。本发明中,相关业务信息的具体参数设置可根据实际情况自行设置。
45.该s101具体为:将用户标识和相关业务信息进行预处理以构建成结构化json字符串,
46.将该json字符串进行md5加密操作,以生成token信息。
47.本发明实施例通过设置token信息替换雪花算法中工作机器id部分,无需配置获取工作机器id信息。
48.s102,基于用户请求信息获取当前时间戳和当前请求序号。
49.s103,对token信息、当前时间戳及当前请求序号利用信息编码技术生成全局唯一标识。
50.该s103具体包括以下步骤:将所述token信息转化为用户token字节数组,将当前时间戳转化为时间戳字节数组,将当前请求序号转化为请求序号字节数组;将用户token字节数组、时间戳字节数组、请求序号字节数组合并为待编码字节数组;将待编码字节数组通过base58进行编码,最终生成全局唯一标识。
51.上述实施例所提供的方法,基于snowflake算法进行改进,生成的token信息对应雪花算法中工作机器id部分,解决工作机器id位需要分配问题。
52.实施例二
53.图4为另一基于用户标识的全局标识生成方法的具体流程示意图,参照图4,本实施例的一种基于用户标识的全局标识生成方法,包括以下3个步骤:
54.s201,基于用户请求信息获取用户标识和相关业务信息,并调用token器生成token信息。该步骤的具体实现方法与实施例一中的具体实现方法相同。
55.s202,基于用户请求信息获取当前时间戳、上次请求序号及判别要素,该判别要素为上次生成全局唯一标识的时间戳。
56.s203,基于该判别要素和预设的时钟回拨判别准则判定是否发生时钟回拨,并利用时钟回拨判别准则下的时间戳更新策略更新当前时间戳;具体来说,判断上次生成全局唯一标识的时间戳是否大于当前时间戳,若是,则认为发生时钟回拨,此时当前时间戳为上次生成全局唯一标识的时间戳,否则认为未发生时钟回拨,当前时间戳不变。
57.本发明中,将上次生成全局唯一标识的时间戳作为判别基准,并将当前时间戳与该判别基准进行比对,来确认时钟回拨的情况。该s203中,在当前时间戳和上次生成全局唯一标识的时间戳中,选择相对较大的时间戳作为更新后的当前时间戳。
58.s204,对上次请求序号利用时间回摆判别准则下的序号更新策略更新当前请求序号;具体来说,在s203的基础上,若发生时钟回拨,则当前请求序号设置为上次请求序号加1;若未发生时钟回拨,则进一步判定当前时间戳是否等于上次生成全局唯一标识的时间戳,若等于,则说明本次请求与上次请求在同一时间单位,则当前请求序号为上次请求序号加1,若不等于(当前时间戳大于上次生成全局唯一标识的时间戳),则说明本次请求与上次请求不在同一时间单位,则当前请求序号设置为0。
59.s205,请求序号门限下的当前时间戳及当前请求序号二次更新;具体来说,判定更新的当前请求序号是否为最大请求序号,若是,通过时间借位方法对更新的当前时间戳进行二次更新,并将更新后的当前请求序号二次更新为0,否则不进行二次更新。
60.需要说明的是,上次请求序号为上一次请求生成全局唯一标识的序号,请求序号门限即为最大请求序号,最大请求序号为请求序号的最大值,一般默认为4096。
61.这里,时间借位方法为将当前时间戳更新为当前时间戳加上一个时间单位,其中,时间单位一般为毫秒,本领域技术人员也可根据实际需要自行设置。
62.通过s202-s205实现时钟回拨及时钟未回拨场景下的当前时间戳和当前请求序号的获取,防止时钟回拨导致全局标识重复的问题。
63.为便于理解,现对s202-s205的方案进行具体举例:
64.假设生成全局唯一标识的相关参数如下:
65.上次生成全局唯一标识的时间戳t0=1635126064606;
66.当前时间戳t1=1635126064605;
67.最大请求序号maxseq=4096;
68.上次请求序号seq=4096;
69.单位时间为1毫秒;
70.步骤a:获取当前时间戳为1635126064605、上次请求序号为4096、上次生成全局唯一标识的时间戳为1635126064606,执行步骤b;
71.步骤b:上次生成全局唯一标识的时间戳是否大于当前时间戳,这里,由于上次生成全局唯一标识的时间戳1635126064606大于当前时间戳1635126064605,因此发生时钟回拨,此时当前时间戳更新为上次生成全局唯一标识的时间戳1635126064606,执行步骤c;
72.步骤c:在时钟回拨场景下,当前请求序号为上次请求序号加1,即为4097,执行步骤d;
73.步骤d:判断当前请求序号大于最大请求序号,这里,由于4097大于4096,因此,通过时间借位方法二次更新当前时间戳,即当前时间戳=当前时间戳+1=1635126064606+1=1635126064607,同时当前序号设置为0。
74.上述举例用于展示时间向上借位方法解决时钟回拨问题导致生成重复标识的极端现象,特意设置最大序号maxseq等于当前请求序号,进而演示时间向上借位过程。需要说明的是,当发生时钟回拨时并不总是需要时间向上借位,只有当当前请求序号大于最大请求序号时才需要借位,因为此时的当前请求序号超出最大限制。同时,时间向上借位方法也可以解决雪花算法在同一时间单位当前序号大于最大序号需要暂停服务等待下一时间单位恢复服务的问题,能够很好的应对突发海量请求数据冲击。
75.s206,对token信息、当前时间戳及当前请求序号利用信息编码技术生成全局唯一标识。该步骤与实施例一中的具体实施步骤一致。
76.在本技术实施例中,通过请求信息获取用户标识以及相关业务信息,并根据当前的相关业务信息调用用户token器,生成用户对应的token信息;通过请求信息获取当前时间戳以及上次生成全局标识的时间戳并比对,进而更新当前时间戳;通过请求信息获取上次请求序号,并基于两时间戳的比对结果更新当前请求序号;利用信息编码技术对token信息、当前时间戳及当前请求序号合并编码以生成全局唯一标识。本发明通过token信息替换雪花算法工作机器id标识,无需依赖外部配置获取工作机器id信息,减少工作量提升工作效率;同时,充分考虑时钟依赖问题,增加时钟回拨业务场景下的时间戳更新方法,以防止重复的全局标识的生成;并在当前请求序号超出最大请求序号限制时通过时间向上借位方法,进一步避免了生成重复的全局标识的情况,保证服务的正常运行。
77.图5为本发明实施例的一种基于用户标识的全局标识生成方法的应用场景图。参照图5,该应用场景包括以下步骤:
78.s301:客户端请求用户token;
79.s302:服务端生成用户token;
80.s303:客户端生成全局唯一标识;
81.s304:客户端业务请求:全局唯一标识、业务参数;
82.s305:服务端进行业务响应。
83.该应用场景通过在客户端生成全局唯一标识(全局标识),并在进行业务请求时将全局唯一标识与业务数据一并发送至服务端。
84.为便于理解,现结合实例做具体解释。用户需要进行“电子数据存证”业务,在电子数据存证业务中,需要全局唯一标识与存证数据关联在一起,以便后期通过关联的全局唯一标识进行存证数据的查询、取证等相关业务处理。该电子数据存证业务场景下,相关参数如下:
85.存证用户标识apikey:ef654c40ab4f1747fc699915d4f70902;
86.存证数据proofdata:{“用户自定义存证数据”}。
87.那么,在客户端上,存证用户通过使用apikey发起请求来获取用户的token信息,进而根据获取的token信息,并利用客户端sdk生成全局唯一标识,最后将获取的全局唯一标识与存证数据proofdata结合在一起发起数据存证请求。
88.上述实例为了展示本技术涉及到的全局唯一标识生成过程是指通过提供sdk在客户端生成而非通常意义上理解的服务端生成。客户端生成全局唯一标识能够在提高生成效率的同时有效地减轻了服务端的请求压力。
89.作为本发明实施例的另一个方面,本发明方法可通过计算机可读介质来实现,其
存储有计算机可执行指令,即本发明方法所对应的程序指令,所述计算机可执行指令用于执行以上图1-5图示及对应实施例所述的方法,即基于用户标识的全局标识生成方法。
90.可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
91.可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、rf等等,或者上述的任意合适的组合。
92.可以以一种或多种程序设计语言的任意组合来编写用于执行本技术操作的程序代码,程序设计语言包括面向对象的程序设计语言-诸如java、c++等,还包括常规的过程式程序设计语言-诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(lan)或广域网(wan)-连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
93.本发明还披露了一种计算设备,下面参照图6来描述根据本技术的这种实施方式的计算设备60。图6显示的计算设备60仅仅是一个示例,不应对本技术实施例的功能和使用范围带来任何限制。
94.如图6所示,计算设备60以通用计算设备的形式表现。计算设备60的组件可以包括但不限于:上述至少一个处理器61、上述至少一个存储器62、连接不同系统组件(包括存储器62和处理器61)的总线63。
95.总线63表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
96.存储器62可以包括易失性存储器形式的可读介质,例如随机存取存储器(ram)621和/或高速缓存存储器622,还可以进一步包括只读存储器(rom)623。
97.存储器62还可以包括具有一组(至少一个)程序模块624的程序/实用工具625,这样的程序模块624包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
98.计算设备60也可以与一个或多个外部设备64(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与计算设备60交互的设备通信,和/或与使得该计算设备60能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口65进行。并且,计算设备60还可以通过网络适配器66与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器66通过总线63与用于计算设备60的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。
99.综上所述:
100.方法的流程在一些可能的实施方式中,本技术提供的基于用户标识的全局标识生成方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在计算机设备上运行时,程序代码用于使计算机设备执行本说明书上述描述的根据本技术各种示例性实施方式的获取token信息、当前时间戳和/或当前请求序号的步骤,例如,计算机设备可以执行如图1中所示的步骤s101-s103。
101.在一些可能的实施方式中,根据本技术的计算设备可以至少包括至少一个处理器、以及至少一个存储器(如前述的第一服务器)。其中,存储器存储有程序代码,当程序代码被处理器执行时,使得处理器执行本说明书上述描述的根据本技术各种示例性实施方式的系统权限开启方法中的步骤。
102.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
103.本技术的实施方式的用于系统权限开启的程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在计算设备上运行。然而,本技术的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
104.本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
105.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
106.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
107.尽管已描述了本技术的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本技术范围的所有变更和修改。
108.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1