CN104915353B - 分布式数据库下全局主键生成方法和系统 - Google Patents
分布式数据库下全局主键生成方法和系统 Download PDFInfo
- Publication number
- CN104915353B CN104915353B CN201410091029.5A CN201410091029A CN104915353B CN 104915353 B CN104915353 B CN 104915353B CN 201410091029 A CN201410091029 A CN 201410091029A CN 104915353 B CN104915353 B CN 104915353B
- Authority
- CN
- China
- Prior art keywords
- major key
- server
- key server
- major
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种分布式数据库下全局主键生成方法和系统,涉及数据库领域。本发明通过构建主键服务器集群,由集群中的主主键服务器对多个主键申请请求进行排序,并同步给集群中的其他主键服务器,主键生成分由集群内的多个主键服务器执行,各主键服务器基于同步的主键申请请求生成全局主键,保持了主键的强一致性,既保证全局主键的有序和连续性,又可以避免主键生成的单点故障和性能瓶颈问题。
Description
技术领域
本发明涉及数据库领域,特别涉及一种分布式数据库下全局主键生成方法和系统。
背景技术
水平切分是搭建基于关系型数据库的分布式数据库集群的关键技术之一,主要是通过将数据库中数据量较大的表拆分为多个结构相同的小表,小表分散存储在多个物理数据库中,并通过中间层软件将客户端对大表的请求路由到多个小表所在的物理数据库中执行。由于各个小表分散在多个物理库中,所以在新增数据时无法保证每个小表的主键在全局的唯一性,因此当数据库实施了水平切分后,需要为分布式数据库提供生成唯一且有序全局主键的服务。
全局主键目前有以下几种生成方法:
一,应用层自己产生唯一主键,这样会增加应用复杂度,并且数据库的写入操作必须依赖应用。
二,通过一个节点提供独立的主键生成服务,一旦该节点发生故障,则造成整个系统无法提供主键生成服务,因此存在单点故障问题以及性能瓶颈问题。
三,通过多个节点提供主键生成服务,可能产生主键不连续或顺序颠倒问题。例如,采用划分主键段的模式保持主键的不重复,A节点采用1000开头,B节点采用2000开头,这种模式虽然可以确保主键不重复,但是可能会导致有些大的主键先产生,小的主键还未产生,存在主键不连续或顺序颠倒等问题,对于索引或排序带来困扰,不符合数据库的使用规范。
发明内容
本发明实施例所要解决的一个技术问题是:通过多个节点提供主键生成服务时主键的有序和连续性问题。
根据本发明实施例的一个方面,提出一种分布式数据库下全局主键生成方法,包括:主键服务器集群中的任意主键服务器接收到客户端发起的主键申请请求时,将主键申请请求转发给主键服务器集群中的主主键服务器;主主键服务器对主键申请请求进行排序,并将排序结果依次同步给主键服务器集群中的所有主键服务器;主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键;主键服务器集群中的任意主键服务器在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端。
在一个实施例中,主键服务器集群中的所有主键服务器预先设置有相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键,配置信息包括面向客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
在一个实施例中,主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键包括:主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,生成相同的全局主键。
在一个实施例中,主主键服务器通过动态选举的方式从主键服务器集群中选举产生,在当前主主键服务器宕机时触发选举的操作,被选举出来的主主键服务器在主键服务器集群中广播自身的位置信息,所有主键服务器接收到广播信息后更新本地的主主键服务器的位置信息。
在一个实施例中,主主键服务器对主键申请请求进行排序包括:主主键服务器按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
在一个实施例中,该方法还包括:负载均衡设备接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
根据本发明实施例的再一个方面,提出一种分布式数据库下全局主键生成系统,包括:由主键服务器组成的主键服务器集群,该主键服务器集群中有一个主主键服务器;主键服务器包括请求处理模块、主键生成模块和请求响应模块,请求处理模块用于在接收到客户端发起的主键申请请求时,将主键申请请求转发给主主键服务器,主键生成模块用于响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键,请求响应模块用于在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端;主主键服务器包括请求排序模块和请求同步模块,请求排序模块用于对主键申请请求进行排序,请求同步模块用于将主键申请请求的排序结果依次同步给主键服务器集群中的所有主键服务器。
在一个实施例中,主键服务器还包括存储模块,用于存储预先设置的相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键,配置信息包括面向客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
在一个实施例中,主键生成模块,具体用于响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,生成相同的全局主键。
在一个实施例中,主主键服务器还包括广播模块,用于在主键服务器集群中广播自身的位置信息;主键服务器还包括位置更新模块,用于接收到主主键服务器的广播信息后更新本地的主主键服务器的位置信息。
在一个实施例中,请求排序模块,具体用于按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
在一个实施例中,该系统还包括:负载均衡设备,用于接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
本发明实施例构建主键服务器集群,由集群中的主主键服务器对多个主键申请请求进行排序,并同步给集群中的其他主键服务器,主键生成分由集群内的多个主键服务器执行,各主键服务器基于同步的主键申请请求生成全局主键,保持了主键的强一致性,既保证全局主键的有序和连续性,又可以避免主键生成的单点故障和性能瓶颈问题。
通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明全局主键应用系统的一个实施例的示意图。
图2为本发明全局主键生成系统一个实施例的结构示意图。
图3为本发明全局主键生成系统再一个实施例的结构示意图。
图4为本发明分布式数据库下全局主键生成方法一个实施例的流程示意图。
图5为本发明分布式数据库下全局主键生成方法一个应用示例的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
为了解决多个节点提供主键生成服务时主键的有序和连续性问题,本发明提出一种能够保证全局主键的有序和连续性的主键生成方法,下面具体说明。
图1为本发明全局主键应用系统的一个实施例的示意图。如图1所示,全局主键应用系统100包括请求生成主键的客户端101和生成全局主键的全局主键生成系统102。客户端101例如为分布式数据库,在分布式数据库中有若干分片节点,每个分片节点均可以向全局主键生成系统102请求生成主键。全局主键生成系统102负责响应客户端101的主键申请请求,向客户端101提供唯一、有序且连续性的全局主键。
图2为本发明全局主键生成系统一个实施例的结构示意图。如图2所示,全局主键生成系统102包括由主键服务器(记为S01、S02…Sn)组成的主键服务器集群,主键服务器集群中有一个主主键服务器(也称master主键服务器,记为SM)。主键服务器均具有接收主键申请请求、生成全局主键以及返回全局主键的功能。主主键服务器除了具备普通主键服务器的功能之外,还具有主键申请请求的排序和同步功能。后续具体说明排序和同步功能。客户端101可以连接集群中的任意主键服务器来申请主键。
图3为本发明全局主键生成系统再一个实施例的结构示意图。如图3所示,全局主键生成系统102除了包括主键服务器集群,还包括负载均衡设备。各分片节点可以将主键申请请求统一发送给负载均衡设备,再由负载均衡设备将客户端发起的主键申请请求均衡地路由给主键服务器集群中的某个主键服务器。设置负载均衡设备后,一方面,各分片节点可以将主键申请请求发送给负载均衡设备,无需再关注集群中各主键服务器的地址,可以简化分片节点的发送工作,另一方面,负载均衡设备可以根据集群中各主键服务器的负载情况转发主键申请请求,有利于均衡集群中各主键服务器的负载。
在图1~图3所示的全局主键生成系统中,为提高集群的可靠性,可以通过动态选举的方式从主键服务器集群中选举产生主主键服务器,即从集群中完全平等的多个主键服务器中选举一个作为主主键服务器。在当前主主键服务器宕机时重新触发选举的操作。动态选举方式产生主主键服务器的一个示例性方法为:集群中的各主键服务器相互之间发送选举请求,选举请求中携带有竞选主主键服务器的优先级参数,拥有最高优先级的主键服务器将成为主主键服务器。其中,优先级参数例如可以是主键服务器的处理能力等信息,但不限于此。进一步地,在选举请求中可以携带两个优先级参数,一个主优先级参数,一个辅优先级参数,优先通过比较主优先级参数确定主主键服务器,在主优先级参数无法确定主主键服务器时,例如主优先级参数相同,此时可以在主优先级参数的基础上参考辅优先级参数确定主主键服务器。例如,在主键服务器的处理能力相同的情况下,存储空间大的作为主主键服务器。被选举出来的主主键服务器在主键服务器集群中广播自身的位置信息,所有主键服务器接收到广播信息后更新本地的主主键服务器的位置信息。
在一个实施例中,主键服务器集群中的所有主键服务器预先设置有相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键(记为KEYn),配置信息包括面向客户端的主键生成规则(记为规则X)、以及作为主主键服务器时对主键申请请求的排序规则(记为规则Y)。排序规则Y例如可以为按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序,但不限于此。
图4为本发明分布式数据库下全局主键生成方法(简称“全局主键生成方法”)一个实施例的流程示意图。如图4所示,本实施例的全局主键生成方法包括以下步骤:
步骤S401,主键服务器集群中的任意主键服务器接收到客户端发起的主键申请请求时,将主键申请请求转发给主键服务器集群中的主主键服务器。
在一个实施例中,客户端可以将主键申请请求统一发送给集群中的负载均衡设备,再由负载均衡设备将客户端发起的主键申请请求均衡地路由给主键服务器集群中的某个主键服务器。作为一种示例性的均衡路由方法,负载均衡设备可以将多个主键申请请求依次分发给集群内的主键服务器,例如,主键申请请求Q01分发给主键服务器S01,主键申请请求Q02分发给主键服务器S02,主键申请请求Qn分发给主键服务器Sn等,该方法简单并且容易实现。
在一个实施例中,当主键服务器接收到客户端发起的主键申请请求时,根据本地记录的主主键服务器的位置信息,将主键申请请求转发至主主键服务器上。如果主键申请请求发送失败,则说明主键服务器本地记录的主主键服务器的位置信息是脏数据,主键服务器可以通过广播的方式在集群内寻找新的主主键服务器,新的主主键服务器收到广播信息后,将自身的位置信息发送给该主键服务器,主键服务器更新本地的主主键服务器的位置信息,然后再将主键申请请求转发至新的主主键服务器上。
步骤S402,主主键服务器对主键申请请求进行排序,并将排序结果依次同步给主键服务器集群中的所有主键服务器。
在一个实施例中,主主键服务器对主键申请请求进行排序包括:主主键服务器按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。本领域技术人员可以理解,本发明并不限定具体的排序方式,根据需要还可以利用其它排序规则采用其他方式对主键申请请求进行排序。
步骤S403,主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键。
在一个实施例中,主键服务器集群中的所有主键服务器均响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,由于集群中各主键服务器的主键生成规则相同,作为主键生成基础的客户端在用的最大全局主键也相同,因此集群中各主键服务器可以生成相同的全局主键。在主键申请请求中还可以包含生成主键所需的参数(如主键名、取值步长等),对于集群中的各主键服务器来说这些参数也是相同的,因此集群中各主键服务器基于相同的主键生成规则和最大全局主键并结合这些参数同样可以生成相同的全局主键。例如,对于主键申请请求Qn,其响应(主要指生成的全局主键)Rn=X(KEYn),显然,在主键生成规则X相同,以及客户端在用的最大全局主键KEYn相同的情况下,生成的全局主键也必然相同。因此,当所有主键服务器接收到的主键申请请求的顺序和内容一致时,可以保证所有主键服务器存储的主键信息也是一致的。
步骤S404,主键服务器集群中的任意主键服务器在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端,在二者不一致时,则无须返回全局主键给客户端。
需要说明的是,由于主主键服务器将主键申请请求的排序结果依次同步给主键服务器集群中的所有主键服务器,因此,每一次同步均需要执行步骤S403和S404。
上述全局主键生成方法,通过构建主键服务器集群,由集群中的主主键服务器对多个主键申请请求进行排序,并同步给集群中的其他主键服务器,主键生成分由集群内的多个主键服务器执行,各主键服务器基于同步的主键申请请求生成全局主键,保持了主键的强一致性,既保证全局主键的有序和连续性,又可以避免主键生成的单点故障和性能瓶颈问题。
图5为本发明分布式数据库下全局主键生成方法一个应用示例的流程示意图。其中一些初始化的操作,即,集群中的所有主键服务器预先设置相同的主键信息和配置信息,参考前述,这里不再赘述。如图5所示,本实施例的全局主键生成方法包括以下步骤:
步骤S501,客户端(如分布式数据库)分片节点C01向全局主键生成系统发起主键申请请求Q01,负载均衡设备将主键申请请求Q01发送给主键服务器S01。
步骤S502,客户端分片节点C02向全局主键生成系统发起主键申请请求Q02,负载均衡设备将主键申请请求Q02发送给主键服务器S02。
步骤S503,主键服务器S01接收到客户端发起的主键申请请求Q01,将主键申请请求Q01转发给主主键服务器。
步骤S504,主键服务器S02接收到客户端发起的主键申请请求Q02,将主键申请请求Q02转发给主主键服务器。
当主键服务器接收到客户端发起的主键申请请求时,根据本地记录的主主键服务器的位置信息,将主键申请请求转发至主主键服务器上。如果发送失败,说明主键服务器本地记录的主主键服务器位置信息为脏数据,则主键服务器通过广播的方式在集群内寻找新的主主键服务器,新的主主键服务器收到广播信息后,将自身的位置信息发送给该主键服务器,主键服务器更新本地的主主键服务器的位置信息,然后再将主键申请请求转发至新的主主键服务器上。
步骤S505,主主键服务器接收到多个主键服务器发来的主键申请请求时,根据排序规则Y对主键申请请求进行排序,并将排序结果依次同步给主键服务器集群中的所有主键服务器。
此处假设排序结果为主键申请请求Q01优于主键申请请求Q02,则主主键服务器先将主键申请请求Q01同步给主键服务器集群中的所有主键服务器。
步骤S506,所有主键服务器均按照主键生成规则生成全局主键。
对于主键申请请求Q01,其响应(主要指生成的全局主键)R01=X(KEYn),如果主键申请请求Q01包含生成主键所需的参数(如主键名、取值步长等),这些参数也相同,显然,在主键生成规则X相同、客户端在用的最大全局主键KEYn相同、以及生成主键所需的参数(如果有)相同的情况下,生成的全局主键也必然相同,即R01相同。
步骤S507,当主键服务器S01发现主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键R01通过负载均衡设备返回给客户端分片节点C01。
步骤S508,主主键服务器继续将下一个主键申请请求Q02同步给集群中的所有主键服务器。
主主键服务器继续按顺序同步剩下的主键申请命令,主键服务器重复操作S506和S507,直至所有客户端的主键申请请求均成功返回。
步骤S509,所有主键服务器均按照主键生成规则生成全局主键。
对于主键申请请求Q02,其响应(主要指生成的全局主键)R02=X(R01),如果主键申请请求Q02包含生成主键所需的参数(如主键名、取值步长等),这些参数也相同,显然,在主键生成规则X相同、客户端在用的最大全局主键R01相同、以及生成主键所需的参数(如果有)相同的情况下,生成的全局主键也必然相同,即R02相同。
步骤S510,当主键服务器S02主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键R02通过负载均衡设备返回给客户端分片节点C02,客户端完成请求。
如图2所示,本实施例的分布式数据库下全局主键生成系统(简称“全局主键生成系统”)包括:由主键服务器组成的主键服务器集群,该主键服务器集群中有一个主主键服务器;主键服务器包括请求处理模块、主键生成模块和请求响应模块,请求处理模块用于在接收到客户端发起的主键申请请求时,将主键申请请求转发给主主键服务器,主键生成模块用于响应主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键,请求响应模块用于在主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端;主主键服务器包括请求排序模块和请求同步模块,请求排序模块用于对主键申请请求进行排序,请求同步模块用于将主键申请请求的排序结果依次同步给主键服务器集群中的所有主键服务器。需要说明的是,主主键服务器也具备普通主键服务器的功能,即主主键服务器也包括请求处理模块、主键生成模块和请求响应模块。
在一个实施例中,主键服务器还包括存储模块,用于存储预先设置的相同的主键信息和配置信息;其中,主键信息是客户端在用的最大全局主键,配置信息包括面向客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
在一个实施例中,主键生成模块,具体用于响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,生成相同的全局主键。当主键申请请求包含生成主键所需的参数(如主键名、取值步长等)时,主键生成模块,具体还用于响应主主键服务器同步的主键申请请求,将客户端在用的最大全局主键作为面向客户端的主键生成规则的输入,并结合生成主键所需的参数生成相同的全局主键。
在一个实施例中,主主键服务器还包括广播模块,用于在主键服务器集群中广播自身的位置信息;主键服务器还包括位置更新模块,用于接收到主主键服务器的广播信息后更新本地的主主键服务器的位置信息。
在一个实施例中,请求排序模块,具体用于按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
在一个实施例中,如图3所示,全局主键生成系统还包括:负载均衡设备,用于接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
上述全局主键生成系统,通过构建主键服务器集群,由集群中的主主键服务器对多个主键申请请求进行排序,并同步给集群中的其他主键服务器,主键生成分由集群内的多个主键服务器执行,各主键服务器基于同步的主键申请请求生成全局主键,保持了主键的强一致性,既保证全局主键的有序和连续性,又可以避免主键生成的单点故障和性能瓶颈问题。另外,系统中设置负载均衡设备后,一方面,各分片节点可以将主键申请请求发送给负载均衡设备,无需再关注集群中各主键服务器的地址,可以简化分片节点的发送工作,另一方面,负载均衡设备可以根据集群中各主键服务器的负载情况转发主键申请请求,有利于均衡集群中各主键服务器的负载。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (12)
1.一种分布式数据库下全局主键生成方法,包括:
主键服务器集群中的任意主键服务器接收到客户端发起的主键申请请求时,将主键申请请求转发给主键服务器集群中的主主键服务器;
所述主主键服务器对主键申请请求进行排序,并将排序结果依次同步给主键服务器集群中的所有主键服务器;
主键服务器集群中的所有主键服务器均响应所述主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键;
主键服务器集群中的任意主键服务器在所述主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端;
其中,按照相同的主键生成规则生成全局主键包括:所有主键服务器将相同的主键信息输入相同的主键生成规则生成全局主键。
2.根据权利要求1所述的方法,其特征在于,主键服务器集群中的所有主键服务器预先设置有相同的主键信息和配置信息;其中,所述主键信息是所述客户端在用的最大全局主键,所述配置信息包括面向所述客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
3.根据权利要求2所述的方法,其特征在于,所述主键服务器集群中的所有主键服务器均响应所述主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键包括:
所述主键服务器集群中的所有主键服务器均响应所述主主键服务器同步的主键申请请求,将所述客户端在用的最大全局主键作为面向所述客户端的主键生成规则的输入,生成相同的全局主键。
4.根据权利要求1所述的方法,其特征在于,所述主主键服务器通过动态选举的方式从主键服务器集群中选举产生,在当前主主键服务器宕机时触发选举的操作,被选举出来的主主键服务器在主键服务器集群中广播自身的位置信息,所有主键服务器接收到广播信息后更新本地的主主键服务器的位置信息。
5.根据权利要求1所述的方法,其特征在于,所述主主键服务器对主键申请请求进行排序包括:
所述主主键服务器按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
6.根据权利要求1所述的方法,其特征在于,该方法还包括:
负载均衡设备接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
7.一种分布式数据库下全局主键生成系统,包括:由主键服务器组成的主键服务器集群,该主键服务器集群中有一个主主键服务器;
主键服务器包括请求处理模块、主键生成模块和请求响应模块,请求处理模块用于在接收到客户端发起的主键申请请求时,将主键申请请求转发给主主键服务器,主键生成模块用于响应所述主主键服务器同步的主键申请请求,按照相同的主键生成规则生成全局主键,请求响应模块用于在所述主主键服务器同步的主键申请请求与本主键服务器接收的客户端发起的主键申请请求一致时,将生成的全局主键返回给客户端;其中,按照相同的主键生成规则生成全局主键包括:所有主键服务器将相同的主键信息输入相同的主键生成规则生成全局主键;
主主键服务器包括请求排序模块和请求同步模块,请求排序模块用于对主键申请请求进行排序,请求同步模块用于将主键申请请求的排序结果依次同步给主键服务器集群中的所有主键服务器。
8.根据权利要求7所述的系统,其特征在于,主键服务器还包括存储模块,用于存储预先设置的相同的主键信息和配置信息;其中,所述主键信息是所述客户端在用的最大全局主键,所述配置信息包括面向所述客户端的主键生成规则、以及作为主主键服务器时对主键申请请求的排序规则。
9.根据权利要求8所述的系统,其特征在于,所述主键生成模块,具体用于响应所述主主键服务器同步的主键申请请求,将所述客户端在用的最大全局主键作为面向所述客户端的主键生成规则的输入,生成相同的全局主键。
10.根据权利要求7所述的系统,其特征在于,所述主主键服务器还包括广播模块,用于在主键服务器集群中广播自身的位置信息;
所述主键服务器还包括位置更新模块,用于接收到主主键服务器的广播信息后更新本地的主主键服务器的位置信息。
11.根据权利要求7所述的系统,其特征在于,所述请求排序模块,具体用于按照主键申请请求的接收时间对多个主键服务器发来的主键申请请求进行排序。
12.根据权利要求7所述的系统,其特征在于,该系统还包括:负载均衡设备,用于接收客户端发起的主键申请请求,并将客户端发起的主键申请请求均衡地路由给主键服务器集群中的主键服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410091029.5A CN104915353B (zh) | 2014-03-13 | 2014-03-13 | 分布式数据库下全局主键生成方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410091029.5A CN104915353B (zh) | 2014-03-13 | 2014-03-13 | 分布式数据库下全局主键生成方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104915353A CN104915353A (zh) | 2015-09-16 |
CN104915353B true CN104915353B (zh) | 2018-03-23 |
Family
ID=54084423
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410091029.5A Active CN104915353B (zh) | 2014-03-13 | 2014-03-13 | 分布式数据库下全局主键生成方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104915353B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105447183A (zh) * | 2015-12-12 | 2016-03-30 | 天津南大通用数据技术股份有限公司 | Mpp架构数据库集群序列系统及序列管理方法 |
CN105488215A (zh) * | 2015-12-12 | 2016-04-13 | 天津南大通用数据技术股份有限公司 | Mpp架构数据库集群序列系统及序列管理方法 |
CN106991029A (zh) * | 2016-01-21 | 2017-07-28 | 阿里巴巴集团控股有限公司 | 一种sequence数据的获取方法及装置 |
CN106844690B (zh) * | 2017-01-23 | 2019-07-02 | 北京齐尔布莱特科技有限公司 | 一种数据分配方法、装置和计算设备 |
CN107133285B (zh) * | 2017-04-18 | 2019-08-30 | 北京北信源软件股份有限公司 | 一种分布式主键生成方法与装置 |
CN108804451B (zh) * | 2017-04-28 | 2021-07-30 | 北京京东尚科信息技术有限公司 | 生成主键的方法、装置、电子设备和可读存储介质 |
CN109597803A (zh) * | 2018-12-10 | 2019-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种全局主键生成方法、装置、设备及存储介质 |
CN110572451B (zh) * | 2019-09-04 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种数据处理的方法、装置及存储介质 |
CN110597829B (zh) * | 2019-11-12 | 2020-03-27 | 深圳竹云科技有限公司 | 主键生成方法、装置及设备 |
CN113495921B (zh) * | 2020-04-02 | 2023-09-26 | 北京京东振世信息技术有限公司 | 一种数据库集群的路由方法和装置 |
CN111753016A (zh) * | 2020-06-28 | 2020-10-09 | 深圳前海微众银行股份有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010148415A1 (en) * | 2009-06-19 | 2010-12-23 | Blekko, Inc. | Scalable cluster database |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN102880705A (zh) * | 2012-09-28 | 2013-01-16 | 用友软件股份有限公司 | 数据库主键生成装置和数据库主键生成方法 |
CN103379159A (zh) * | 2012-04-24 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 一种分布式Web站点数据同步的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101366024B (zh) * | 2005-05-16 | 2014-07-30 | 电子湾有限公司 | 用于处理数据搜索请求的方法和系统 |
-
2014
- 2014-03-13 CN CN201410091029.5A patent/CN104915353B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010148415A1 (en) * | 2009-06-19 | 2010-12-23 | Blekko, Inc. | Scalable cluster database |
CN103379159A (zh) * | 2012-04-24 | 2013-10-30 | 阿里巴巴集团控股有限公司 | 一种分布式Web站点数据同步的方法 |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN102880705A (zh) * | 2012-09-28 | 2013-01-16 | 用友软件股份有限公司 | 数据库主键生成装置和数据库主键生成方法 |
Non-Patent Citations (1)
Title |
---|
《分布式Namenode模型节点管理的设计》;李宽;《中国优秀硕士学位论文全文数据库 信息科技辑》;20111215;I138-674 * |
Also Published As
Publication number | Publication date |
---|---|
CN104915353A (zh) | 2015-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104915353B (zh) | 分布式数据库下全局主键生成方法和系统 | |
WO2016150066A1 (zh) | 一种主节点选举方法、装置及存储系统 | |
CN108173691B (zh) | 一种跨设备聚合的方法及装置 | |
US20170013572A1 (en) | System for network discovery and synchronization | |
CN102984501A (zh) | 一种网络视频录像集群系统 | |
CN106549875A (zh) | 一种会话管理方法、装置及负载均衡器 | |
CN108322358B (zh) | 异地多活的分布式消息发送、处理、消费方法及装置 | |
CN109005045A (zh) | 主备服务系统及主节点故障恢复方法 | |
CN108696581A (zh) | 分布式信息的缓存方法、装置、计算机设备以及存储介质 | |
EP3373514B1 (en) | User terminal grouping method, conference server, and conference system | |
CN104468163A (zh) | 容灾网络组网的方法、装置及容灾网络 | |
CN105915369A (zh) | 一种配置信息管理方法及装置 | |
CN104348793B (zh) | 存储服务器系统及数据信息的存储方法 | |
CN106888245A (zh) | 一种数据处理方法、装置及系统 | |
CN103631652A (zh) | 虚拟机迁移的实现方法及系统 | |
CN105282003A (zh) | 建立隧道的方法和系统以及隧道控制器和虚拟交换机 | |
JP6555445B1 (ja) | 時刻同期システム、タイムマスタ、管理マスタおよび時刻同期方法 | |
CN106210123A (zh) | 一个多节点的软件定义网络控制器系统 | |
JP2013206209A (ja) | 制御プログラム、制御方法、記憶制御装置および情報処理システム | |
EP2763354A1 (en) | Method and apparatus for preventing duplicate saving of resource between universal plug and play devices providing content directory service | |
CN106060186A (zh) | 一种报文处理方法及装置 | |
CN104079663B (zh) | 分布式实时同步网络系统及其通告数据的方法 | |
CN111262892A (zh) | 一种多ros的服务发现系统 | |
CN105141687B (zh) | 一种生产消息的方法 | |
CN101667910B (zh) | 一种快速网络数据同步方法及其系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |