CN111782346B - 基于同库模式的分布式事务全局id生成方法及装置 - Google Patents

基于同库模式的分布式事务全局id生成方法及装置 Download PDF

Info

Publication number
CN111782346B
CN111782346B CN202010596120.8A CN202010596120A CN111782346B CN 111782346 B CN111782346 B CN 111782346B CN 202010596120 A CN202010596120 A CN 202010596120A CN 111782346 B CN111782346 B CN 111782346B
Authority
CN
China
Prior art keywords
transaction
service group
generating
client
global
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010596120.8A
Other languages
English (en)
Other versions
CN111782346A (zh
Inventor
张丹枫
程冲
王宇轩
唐冬雪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202010596120.8A priority Critical patent/CN111782346B/zh
Publication of CN111782346A publication Critical patent/CN111782346A/zh
Application granted granted Critical
Publication of CN111782346B publication Critical patent/CN111782346B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于同库模式的分布式事务全局ID生成方法及装置,基于同库模式的分布式事务全局ID生成方法包括:根据预生成的改进雪花算法,在客户端生成子事务ID;根据所述改进雪花算法,在服务端生成主事务ID;分布式事务全局ID包括所述子事务ID以及所述主事务ID。本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。

Description

基于同库模式的分布式事务全局ID生成方法及装置
技术领域
本发明涉及计算机数据处理技术领域,特别是涉及分布式事务领域技术领域,具体涉及一种基于同库模式的分布式事务全局ID生成方法及装置。
背景技术
随着分布式技术的逐步演进,原本单一的数据库事务被拆分成不同数据库或服务间的分布式事务,为了完成分布式转型就要解决分布式事务的一致性问题。
最初分布式事务管理器作为一个独立集群,用于统一协调分布式事务,这种模式便于统筹管理但性能受到制约,另外,独立集群也带来了高可用的隐患。为追求极致性能,将事务分布式落地在业务应用侧,即同库模式。在同库模式下,分布式事务全局ID的生成策略目前一般分为两类:第一类、采用服务端独立集群统一发号;第二类、嵌入客户端业务应用侧生成。
第一类方案仍强依赖于服务端,独立集群部署缺少高可用降级策略。同时随着业务应用地不断接入,调用并发量上升,存在性能瓶颈制约。
第二类方案也有几种方式:1、用UUID生成,字段无序会导致存储时索引重建,消耗性能,且字段太长消耗存储空间;2、手工登记分配各个应用服务群组的ID段号,用于本地生成事务ID防重,这里存在一些操作管理风险;3、在分配服务群组ID的基础上,采用数据库自增序列,会造成每次执行事务都额外增加了数据库IO消耗,使性能下降;4、客户端使用雪花算法,64长度bit位无法完整纳入“时间戳+客户端容器workID+序列号+服务群组ID”,故需要双字段主键存储,影响了存储性能及传输使用不便。
综上,目前同库模式下没有囊括极致性能、高可用、大容量、有序、全局唯一的分布式事务ID生成方案,因此,如何提供一种新的方案,解决上述技术问题是本领域亟待解决的技术难题。
发明内容
针对现有技术中的问题,本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。
为解决上述技术问题,本发明提供以下技术方案:
第一方面,本发明提供一种基于同库模式的分布式事务全局ID生成方法,包括:
根据预生成的改进雪花算法,在客户端生成子事务ID;
根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID。
一实施例中,生成所述改进雪花算法的步骤包括:
根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
对所述二进制数据进行base32转码,生成有序字符串。
一实施例中,基于同库模式的分布式事务全局ID生成方法还包括:
分配唯一的应用服务群组ID至客户端。
一实施例中,基于同库模式的分布式事务全局ID生成方法还包括:
当所述主事务ID生成异常时,所述主事务ID由客户端生成;
当所述子事务ID生成异常时,所述子事务ID由服务端生成。
一实施例中,基于同库模式的分布式事务全局ID生成方法还包括:
根据预生成的改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
第二方面,本发明提供一种基于同库模式的分布式事务全局ID生成装置,包括:
子事务ID第一生成单元,用于根据预生成的改进雪花算法,在客户端生成子事务ID;
主事务ID第一生成单元,用于根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID。
一实施例中,基于同库模式的分布式事务全局ID生成装置还包括:雪花算法生成单元,用于生成所述改进雪花算法,所述雪花算法生成单元包括:
二进制数据生成模块,用于根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
有序字符串生成模块,用于对所述二进制数据进行base32转码,生成有序字符串。
所述基于同库模式的分布式事务全局ID生成装置还包括:
服务群组ID分配单元,用于分配唯一的应用服务群组ID至客户端;
主事务ID第二生成单元,用于当所述主事务ID生成异常时,所述主事务ID由客户端生成;
子事务ID第二生成单元,用于当所述子事务ID生成异常时,所述子事务ID由服务端生成。
一实施例中,基于同库模式的分布式事务全局ID生成装置还包括:
套层子事务ID生成单元,用于根据所述改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
第三方面,本发明提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现基于同库模式的分布式事务全局ID生成方法的步骤。
第四方面,本发明提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现基于同库模式的分布式事务全局ID生成方法的步骤。
从上述描述可知,本发明实施例提供的基于同库模式的分布式事务全局ID生成方法及装置,首先根据预生成的改进雪花算法,在客户端生成子事务ID;接着,根据所述改进雪花算法,在服务端生成主事务ID;分布式事务全局ID包括所述子事务ID以及所述主事务ID,本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。具体地:
1、本发明避免了分布式事务ID单点生成压力过于集中,使主事务ID、本地子事务ID、嵌套子事务ID由不同服务器生成。
2、本发明提供降级策略保证了分布式事务ID生成逻辑的高可用,服务端或客户端的单点异常不会影响系统运行。
3、本发明改进版雪花算法提供了更大的业务容量且ID全局不冲突,ID有序且存储空间小。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例中基于同库模式的分布式事务全局ID生成方法流程示意图一;
图2为本发明的实施例中步骤300的流程示意图;
图3为本发明的实施例中基于同库模式的分布式事务全局ID生成方法流程示意图二;
图4为本发明的实施例中基于同库模式的分布式事务全局ID生成方法流程示意图三;
图5为本发明的实施例中基于同库模式的分布式事务全局ID生成方法流程示意图四;
图6为本发明的具体应用实例中基于同库模式的分布式事务全局ID生成方法的流程示意图;
图7为本发明的具体应用实例中分布式事务全局ID生成装置架构图;
图8为本发明的具体应用实例中服务群组ID分配装置1结构示意图;
图9为本发明的具体应用实例中客户端事务ID生成装置2结构示意图;
图10为本发明的具体应用实例中服务端事务ID生成装置3结构示意图;
图11为本发明的实施例中基于同库模式的分布式事务全局ID生成装置的结构框图一;
图12为本发明的实施例中雪花算法生成单元的结构示意图;
图13为本发明的实施例中基于同库模式的分布式事务全局ID生成装置的结构框图二;
图14为本发明的实施例中基于同库模式的分布式事务全局ID生成装置的结构框图三;
图15为本发明的实施例中的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
本发明的实施例提供一种基于同库模式的分布式事务全局ID生成方法的具体实施方式,参见图1,该方法具体包括如下内容:
步骤100:根据预生成的改进雪花算法,在客户端生成子事务ID。
由背景技术可以知道,现有技术中,无论子事务ID或者主事务ID均在服务器端生成,这种方式强依赖于服务端,存在性能瓶颈制约。
针对雪花算法,雪花算法生成的ID是纯数字且具有时间顺序的。一般由首位无效符、时间戳差值,机器(进程)编码,序列号四部分组成,其具有以下特点:时间位:可以根据时间进行排序,有助于提高查询速度。机器id位:适用于分布式环境下对多节点的各个节点进行标识,可以具体根据节点数和部署情况设计划分机器位10位长度,如划分5位表示进程位等。序列号位:是一系列的自增id,可以支持同一节点同一毫秒生成多个ID序号,12位的计数序列号支持每个节点每毫秒产生4096个ID序号,雪花算法在单机系统上ID是递增的,但是在分布式系统多节点的情况下,所有节点的时钟并不能保证不完全同步,所以有可能会出现不是全局递增的情况。步骤100中的改进的雪花算法很好的解决了上述缺点。
步骤200:根据所述改进雪花算法,在服务端生成主事务ID。分布式事务全局ID包括所述子事务ID以及所述主事务ID。
可以理解的是,在复杂的系统中,往往需要对大量的数据如订单,账户进行标识,以一个有意义的有序的序列号来作为全局唯一的ID。而分布式系统中对ID生成的要求有:全局唯一性:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。递增:比较低要求的条件为趋势递增。即保证下一个ID一定大于上一个ID,而比较苛刻的要求是连续递增,如1,2,3等等。高可用高性能:ID生成事关重大,一旦挂掉系统崩溃,高性能是指必须要在压测下表现良好,如果达不到要求则在高并发环境下依然会导致系统瘫痪。
可以理解的是,分布式事务是指事务的参与者,支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
从上述描述可知,本发明实施例提供的基于同库模式的分布式事务全局ID生成方法,首先根据预生成的改进雪花算法,在客户端生成子事务ID;接着,根据所述改进雪花算法,在服务端生成主事务ID;分布式事务全局ID包括所述子事务ID以及所述主事务ID,本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。具体地:
1、本发明避免了分布式事务ID单点生成压力过于集中,使主事务ID、本地子事务ID、嵌套子事务ID由不同服务器生成。
2、本发明提供降级策略保证了分布式事务ID生成逻辑的高可用,服务端或客户端的单点异常不会影响系统运行。
3、本发明改进版雪花算法提供了更大的业务容量且ID全局不冲突,ID有序且存储空间小。
一实施例中,参见图2,生成所述改进雪花算法的步骤包括:
步骤301:根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
步骤302:对所述二进制数据进行base32转码,生成有序字符串。
在具体实施时,步骤301以及步骤302为:80位bit由四部分组成“时间戳+服务群组ID+客户端容器workID+序列号”,再将二进制通过base32转码,生成有序char(16)字符串。例如组成规则为“时间戳(41)+服务群组ID(15)+客户端容器workID(14)+序列号(10)”,支持接入3万多应用服务群组,每个服务群组部署支持1.6万多容器,每毫秒支持1千多并发,可持续使用69年。可以理解的是,改进版雪花算法提供了更大的业务容量且ID全局不冲突,ID有序且存储空间小。
一实施例中,参见图3,基于同库模式的分布式事务全局ID生成方法还包括:
步骤400:分配唯一的应用服务群组ID至客户端。
具体地,应用服务群组首次启动时,调用服务端事务管理器,自动分配唯一的应用服务群组ID并保存到客户端,后续重启或执行业务逻辑时无需再连接服务端。
一实施例中,参见图4,基于同库模式的分布式事务全局ID生成方法还包括:
步骤500:当所述主事务ID生成异常时,所述主事务ID由客户端生成;
步骤600:当所述子事务ID生成异常时,所述子事务ID由服务端生成。
为确保分布式事务ID高可用,提供降级策略为:主事务ID生成异常则切换到客户端本地生成;子事务ID生成异常则切换到服务端生成。
一实施例中,参见图5,基于同库模式的分布式事务全局ID生成方法还包括:
步骤700:根据所述改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
为进一步地说明本方案,本发明提供基于同库模式的分布式事务全局ID生成方法的具体应用实例,具体包括如下内容,参见图6。
在本具体应用实例中,提供一种分布式事务全局ID生成装置,参见图7,该装置包括:服务群组ID分配装置1、客户端事务ID生成装置2、服务端事务ID生成装置3。服务群组ID分配装置1与客户端事务ID生成装置2相关联,客户端事务ID生成装置2与服务端事务ID生成装置3相关联,其中:
服务群组ID分配装置1:服务端事务管理器,根据客户端上送的服务群组名称等字段,识别是否已存在该应用服务群组ID,若存在则直接返回,若不存在则自动分配服务群组ID。
客户端事务ID生成装置2:应用服务群组启动时,从服务端获取服务群组ID;同时客户端容器启动时,自动分配生成机器workID;开启分布式事务时,调用服务端事务管理器生成主事务ID,客户端本地生成子事务ID。
服务端事务ID生成装置3:服务端启动时,自动分配生成容器workID;提供分布式事务全局ID生成服务,供客户端按策略调用。
图8是本发明中服务群组ID分配装置1的内部结构示意图,如图8所示,服务群组ID分配装置1包括:服务群组识别单元11、服务群组分配单元12。
服务群组识别单元11:根据客户端上送的服务群组名称、业务数据库url地址,读取应用缓存是否存在值,若存在则直接返回服务群组ID。若不存在缓存,则从根据输入从数据库获取,若取得值则返回服务群组ID,若不存在则进入单元12。
服务群组分配单元12:将服务群组名称、业务数据库url地址,写入服务端的服务群组定义表,自动分配序列号作为服务群组ID。将该生成的服务群组ID缓存到应用服务器,并返回客户端生成ID。
图9是本发明中客户端事务ID生成装置2的内部结构示意图,如图9所示,客户端事务ID生成装置2包括:服务群组获取单元21、容器workID生成单元22、事务ID生成单元23。
服务群组获取单元21:应用服务群组启动时,检查本地数据库中是否已存在服务群组ID,若已存在则将服务群组ID放入应用缓存中。若本地不存在,则调用服务群组ID分配装置1,上送本地环境中配置的服务群组名称、业务数据库url地址,获取返回的服务群组ID。将它存储到本地数据库及应用缓存中。
容器workID生成单元22:应用服务群组启动时,为降低接入成本,根据应用服务器IP和PORT向本地数据库注册获取唯一容器workID,数据同时另存到应用缓存中,使用时优先读取当前缓存。当使用向数据库注册容器ID时,需引入shutdownHook停联机时删除容器workID,或引入心跳检测机制删除停服容器的workID。
事务ID生成单元23:客户端采用改进版雪花算法,80位bit由四部分组成“时间戳+服务群组ID+客户端容器workID+序列号”。其中服务群组ID和容器workID均可从应用缓存中直接获取,取时间戳、序列号以及二进制移位操作均为内存运算,可拆分成2组40位的二进制数据,再按8位切分形成总共10个byte数组,通过base32转码,最终生成有序char(16)长的字符串。此算法性能优越且ID全局不冲突,同时保证了足够大的业务容量。
图10是本发明中服务端事务ID生成装置3的内部结构示意图,如图10所示,服务端事务ID生成装置3包括:容器workID生成单元31、事务ID生成单元32。
容器workID生成单元31:服务端容器启动时,可通过Zookeeper连接等方式,根据应用服务器IP和PORT注册获取唯一机器workID,数据保存到如Zookeeper服务器及应用缓存中,使用时优先读取当前缓存。
事务ID生成单元32:客户端采用的改进版雪花算法,实现逻辑参见客户端。其中的服务群组ID字段,若服务端单园区单租户部署,则直接固定位0即可;若涉及多租户园区分片,则服务端分配的群组ID与客户端分配号段需作区分。
本具体应用实例所提供基于同库模式的分布式事务全局ID生成方法如图6所示。
S1:客户端首次启动时,从服务端获取应用服务群组ID。
详细参见服务群组获取单元21的功能描述。
S2:客户端开启分布式事务,进入生成主事务ID逻辑,优先调用服务端事务ID生成单元32。
S3:当服务端生成失败时,使用客户端本地事务ID生成单元23获取。
S4:主事务处理完毕后,开始处理子事务,优先使用客户端本地事务ID生成单元23获取。
S5:当客户端生成失败时,使用服务端事务ID生成单元32获取。
S6:当处理完一笔子事务后,按相同方式处理下一步子事务直到结束。对于嵌套子事务(落到了其它应用服务群组),则嵌套子事务生成主体由嵌套应用服务群组负责。
从上述描述可知,本发明实施例提供的基于同库模式的分布式事务全局ID生成方法,首先根据预生成的改进雪花算法,在客户端生成子事务ID;接着,根据所述改进雪花算法,在服务端生成主事务ID;分布式事务全局ID包括所述子事务ID以及所述主事务ID,本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。具体地:
1、本发明避免了分布式事务ID单点生成压力过于集中,使主事务ID、本地子事务ID、嵌套子事务ID由不同服务器生成。
2、本发明提供降级策略保证了分布式事务ID生成逻辑的高可用,服务端或客户端的单点异常不会影响系统运行。
3、本发明改进版雪花算法提供了更大的业务容量且ID全局不冲突,ID有序且存储空间小。
基于同一发明构思,本申请实施例还提供了基于同库模式的分布式事务全局ID生成装置,可以用于实现上述实施例所描述的方法,如下面的实施例。由于基于同库模式的分布式事务全局ID生成装置解决问题的原理与基于同库模式的分布式事务全局ID生成方法相似,因此基于同库模式的分布式事务全局ID生成装置的实施可以参见基于同库模式的分布式事务全局ID生成方法实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
本发明的实施例提供一种能够实现基于同库模式的分布式事务全局ID生成方法的基于同库模式的分布式事务全局ID生成装置的具体实施方式,参见图11,基于同库模式的分布式事务全局ID生成装置具体包括如下内容:
子事务ID第一生成单元10,用于根据预生成的改进雪花算法,在客户端生成子事务ID;
主事务ID第一生成单元20,用于根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID。
一实施例中,基于同库模式的分布式事务全局ID生成装置还包括:雪花算法生成单元30,用于生成所述改进雪花算法,参见图12,所述雪花算法生成单元30包括:
二进制数据生成模块301,用于根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
有序字符串生成模块302,用于对所述二进制数据进行base32转码,生成有序字符串。
参见图13,所述基于同库模式的分布式事务全局ID生成装置还包括:
服务群组ID分配单元40,用于分配唯一的应用服务群组ID至客户端;
主事务ID第二生成单元50,用于当所述主事务ID生成异常时,所述主事务ID由客户端生成;
子事务ID第二生成单元60,用于当所述子事务ID生成异常时,所述子事务ID由服务端生成。
一实施例中,参见图14,基于同库模式的分布式事务全局ID生成装置还包括:
套层子事务ID生成单元70,用于根据所述改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
从上述描述可知,本发明实施例提供的基于同库模式的分布式事务全局ID生成装置,首先根据预生成的改进雪花算法,在客户端生成子事务ID;接着,根据所述改进雪花算法,在服务端生成主事务ID;分布式事务全局ID包括所述子事务ID以及所述主事务ID,本发明提供的基于同库模式的分布式事务全局ID生成方法及装置,在分布式事务ID生成过程中,具有唯一性、高可用性、以及较好的性能容量等优点。具体地:
1、本发明避免了分布式事务ID单点生成压力过于集中,使主事务ID、本地子事务ID、嵌套子事务ID由不同服务器生成。
2、本发明提供降级策略保证了分布式事务ID生成逻辑的高可用,服务端或客户端的单点异常不会影响系统运行。
3、本发明改进版雪花算法提供了更大的业务容量且ID全局不冲突,ID有序且存储空间小。
上述实施例阐明的装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为电子设备,具体的,电子设备例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
在一个典型的实例中电子设备具体包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,该处理器执行该程序时实现上述基于同库模式的分布式事务全局ID生成方法的步骤,该步骤包括:
步骤100:根据预生成的改进雪花算法,在客户端生成子事务ID;
步骤200:根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID。
下面参考图15,其示出了适于用来实现本申请实施例的电子设备600的结构示意图。
如图15所示,电子设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的程序或者从存储部分608加载到随机访问存储器(RAM))603中的程序而执行各种适当的工作和处理。在RAM603中,还存储有系统600操作所需的各种程序和数据。CPU601、ROM602、以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
以下部件连接至I/O接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如LAN卡,调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至I/O接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装如存储部分608。
特别地,根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于同库模式的分布式事务全局ID生成方法的步骤,该步骤包括:
步骤100:根据预生成的改进雪花算法,在客户端生成子事务ID;
步骤200:根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID。
在这样的实施例中,该计算机程序可以通过通信部分609从网络上被下载和安装,和/或从可拆卸介质611被安装。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上该仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (7)

1.一种基于同库模式的分布式事务全局ID生成方法,其特征在于,包括:
分配唯一的应用服务群组ID至客户端;
根据预生成的改进雪花算法,在客户端生成子事务ID;
根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID;
所述分配唯一的应用服务群组ID至客户端,包括:
服务端的事务管理器根据客户端上送的服务群组名称、业务数据库url地址,读取应用缓存是否存在对应值,若存在则直接返回服务群组ID;若不存在,则根据所述服务群组名称、业务数据库url地址从数据库获取;
若从数据库中取得对应值则返回服务群组ID,若不存在则将所述服务群组名称、业务数据库url地址写入服务端的服务群组定义表,自动分配序列号作为服务群组ID;将该生成的服务群组ID缓存到应用服务器,并返回客户端生成的服务群组ID;
生成所述改进雪花算法的步骤包括:
根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
对所述二进制数据进行base32转码,生成有序字符串。
2.根据权利要求1所述的分布式事务全局ID生成方法,其特征在于,还包括:
当所述主事务ID生成异常时,所述主事务ID由客户端生成;
当所述子事务ID生成异常时,所述子事务ID由服务端生成。
3.根据权利要求1所述的分布式事务全局ID生成方法,其特征在于,还包括:根据所述改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
4.一种基于同库模式的分布式事务全局ID生成装置,其特征在于,包括:
服务群组ID分配单元,用于分配唯一的应用服务群组ID至客户端;
子事务ID第一生成单元,用于根据预生成的改进雪花算法,在客户端生成子事务ID;
主事务ID第一生成单元,用于根据所述改进雪花算法,在服务端生成主事务ID;
分布式事务全局ID包括所述子事务ID以及所述主事务ID;
所述服务群组ID分配单元具体用于:
在服务端的事务管理器根据客户端上送的服务群组名称、业务数据库url地址,读取应用缓存是否存在对应值,若存在则直接返回服务群组ID;若不存在,则根据所述服务群组名称、业务数据库url地址从数据库获取;
若从数据库中取得对应值则返回服务群组ID,若不存在则将所述服务群组名称、业务数据库url地址写入服务端的服务群组定义表,自动分配序列号作为服务群组ID;将该生成的服务群组ID缓存到应用服务器,并返回客户端生成的服务群组ID;
所述雪花算法生成单元包括:
二进制数据生成模块,用于根据时间戳、应用服务群组ID、客户端容器workID以及序列号生成二进制数据;
有序字符串生成模块,用于对所述二进制数据进行base32转码,生成有序字符串。
5.根据权利要求4所述的分布式事务全局ID生成装置,其特征在于,还包括:雪花算法生成单元,用于生成所述改进雪花算法,所述雪花算法生成单元包括:
所述基于同库模式的分布式事务全局ID生成装置还包括:
主事务ID第二生成单元,用于当所述主事务ID生成异常时,所述主事务ID由客户端生成;
子事务ID第二生成单元,用于当所述子事务ID生成异常时,所述子事务ID由服务端生成。
6.根据权利要求4所述的分布式事务全局ID生成装置,其特征在于,还包括:
套层子事务ID生成单元,用于根据所述改进雪花算法,在嵌套应用的客户端生成嵌套层子事务ID。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至3任一项所述基于同库模式的分布式事务全局ID生成方法的步骤。
CN202010596120.8A 2020-06-28 2020-06-28 基于同库模式的分布式事务全局id生成方法及装置 Active CN111782346B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010596120.8A CN111782346B (zh) 2020-06-28 2020-06-28 基于同库模式的分布式事务全局id生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010596120.8A CN111782346B (zh) 2020-06-28 2020-06-28 基于同库模式的分布式事务全局id生成方法及装置

Publications (2)

Publication Number Publication Date
CN111782346A CN111782346A (zh) 2020-10-16
CN111782346B true CN111782346B (zh) 2024-05-24

Family

ID=72761362

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010596120.8A Active CN111782346B (zh) 2020-06-28 2020-06-28 基于同库模式的分布式事务全局id生成方法及装置

Country Status (1)

Country Link
CN (1) CN111782346B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112506929A (zh) * 2020-12-15 2021-03-16 北京致远互联软件股份有限公司 一种基于分布式id生成的避免id碰撞的升级方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106572165A (zh) * 2016-10-26 2017-04-19 宜人恒业科技发展(北京)有限公司 一种分布式全局唯一id应用方法
CN107045454A (zh) * 2016-02-06 2017-08-15 华为技术有限公司 跨进程分布式事务控制方法及相关系统
CN108959386A (zh) * 2018-05-31 2018-12-07 深圳壹账通智能科技有限公司 分布式全局唯一id生成方法、装置、设备和存储介质
CN109309736A (zh) * 2017-07-28 2019-02-05 北京京东尚科信息技术有限公司 全局唯一id的生成方法和生成装置
CN110737806A (zh) * 2019-09-09 2020-01-31 贝壳技术有限公司 面向业务实体的全局id生成方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107045454A (zh) * 2016-02-06 2017-08-15 华为技术有限公司 跨进程分布式事务控制方法及相关系统
CN106572165A (zh) * 2016-10-26 2017-04-19 宜人恒业科技发展(北京)有限公司 一种分布式全局唯一id应用方法
CN109309736A (zh) * 2017-07-28 2019-02-05 北京京东尚科信息技术有限公司 全局唯一id的生成方法和生成装置
CN108959386A (zh) * 2018-05-31 2018-12-07 深圳壹账通智能科技有限公司 分布式全局唯一id生成方法、装置、设备和存储介质
CN110737806A (zh) * 2019-09-09 2020-01-31 贝壳技术有限公司 面向业务实体的全局id生成方法及装置

Also Published As

Publication number Publication date
CN111782346A (zh) 2020-10-16

Similar Documents

Publication Publication Date Title
US10949447B2 (en) Blockchain-based data synchronizing and data block parsing method and device
CN111091429B (zh) 电子票据标识分配方法及装置、电子票据生成系统
CN106909451A (zh) 一种分布式任务调度系统及方法
AU2019262823B2 (en) Input and output schema mappings
US20130191523A1 (en) Real-time analytics for large data sets
KR101959153B1 (ko) 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템
CN106572165A (zh) 一种分布式全局唯一id应用方法
CN107180113B (zh) 一种大数据检索平台
CN110110006A (zh) 数据管理方法及相关产品
CN102194009A (zh) 一种数据库托管方法和一种数据库托管平台系统
CN111782346B (zh) 基于同库模式的分布式事务全局id生成方法及装置
CN111857979B (zh) 一种分布式系统的信息管理方法、系统、存储介质及设备
CN109582476B (zh) 数据处理方法、装置及系统
CN112491943A (zh) 数据请求方法、装置、存储介质和电子设备
CN107491975A (zh) 用于服务器和用于消费者的数据槽数据处理方法和装置
WO2021174515A1 (en) Systems and methods for data storage in the expansion of object-based storage systems
CN114237902A (zh) 一种服务部署方法、装置、电子设备及计算机可读介质
US20160299820A1 (en) Processing method, device and system for data of distributed storage system
CN113760841A (zh) 实现分布式锁的方法和装置
CN113535410B (zh) 用于gis空间矢量分布式计算的负载均衡方法及系统
CN115277610B (zh) 基于双活环境的消息分流发送方法、装置、设备及介质
CN117708092A (zh) 一种数据库管理方法及电子设备
CN117203609A (zh) 业务编码解释织入方法、业务服务系统和存储介质
CN116881360A (zh) 一种解决基于雪花算法时钟回拨问题的方法、系统、终端设备及存储介质
CN118051353A (zh) 一种等离子体控制系统中数据共享与通信协同方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant