CN112054919B - 容器集群无状态下的id生成方法、装置、存储介质及系统 - Google Patents
容器集群无状态下的id生成方法、装置、存储介质及系统 Download PDFInfo
- Publication number
- CN112054919B CN112054919B CN202010766501.6A CN202010766501A CN112054919B CN 112054919 B CN112054919 B CN 112054919B CN 202010766501 A CN202010766501 A CN 202010766501A CN 112054919 B CN112054919 B CN 112054919B
- Authority
- CN
- China
- Prior art keywords
- request
- connection
- timestamp
- container cluster
- unique
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000004590 computer program Methods 0.000 claims description 17
- 238000004364 calculation method Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 8
- 241000533950 Leucojum Species 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0893—Assignment of logical groups to network elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
- H04L41/0816—Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种容器集群无状态下的ID生成方法、装置、存储介质及系统,所述方法包括:当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;通过所述连接池为所述连接请求生成相应的请求ID;获取所述连接请求对应的请求时间戳;根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。采用本发明的技术方案解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID。
Description
技术领域
本发明涉及容器集群管理技术领域,尤其涉及一种容器集群无状态下的ID生成方法、装置、计算机可读存储介质及系统。
背景技术
目前,随着容器集群技术的广泛使用,无状态服务能够动态扩展和缩容的特性为互联网应用带来了极大的部署弹性和高可用性。在分布式架构下,系统唯一ID的生成是在设计一个分布式系统时常常会遇见的问题。生成ID的方法有很多,以适应不同的场景、需求以及性能要求,所以有些比较复杂的分布式系统会有多个ID生成的策略。
在现有的技术方案中,应用较为广泛的一种分布式ID生成算法为雪花算法(Snowflake),雪花算法的核心思想是使用一个64bit的long型的数字作为分布式系统的全局唯一ID,其中,有1bit符号位(正数是0,负数是1,一般是0),有41bit时间戳(毫秒级),有10bit数据机器位(包括5bit的数据中心ID和5bit的机器ID),有12bit序列号(毫秒级),雪花算法要求每个运行算法的服务实例提供集群内唯一的机器ID,但是,在无状态的容器集群环境下,服务实例会随着工作负载动态生成和销毁,无法事先为每个服务实例固定分配一个机器ID,使得该算法难以适用;此外,现有的其他解决方案引入了第三方中间件来协调分配机器ID,这种做法增加了分布式系统的实现难度和复杂度。
发明内容
本发明实施例所要解决的技术问题在于,提供一种容器集群无状态下的ID生成方法、装置、计算机可读存储介质及系统,解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID。
为了解决上述技术问题,本发明实施例提供了一种容器集群无状态下的ID生成方法,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述方法由所述负载均衡服务器执行,所述方法包括:
当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
通过所述连接池为所述连接请求生成相应的请求ID;
获取所述连接请求对应的请求时间戳;
根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。
进一步地,所述获取所述连接请求对应的请求时间戳,具体包括:
获取当前的Unix时间戳;
根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
进一步地,所述根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID,具体包括:
将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID;其中,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
进一步地,所述方法还包括:
将所述唯一ID添加在HTTP请求的头部;
将所述HTTP请求转发至所述容器集群中的服务实例。
为了解决上述技术问题,本发明实施例还提供了一种容器集群无状态下的ID生成装置,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述装置设置在所述负载均衡服务器中,所述装置包括:
连接请求判断模块,用于当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
连接ID生成模块,用于若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
请求ID生成模块,用于通过所述连接池为所述连接请求生成相应的请求ID;
请求时间戳获取模块,用于获取所述连接请求对应的请求时间戳;
唯一ID生成模块,用于根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。
进一步地,所述请求时间戳获取模块具体包括:
Unix时间戳获取单元,用于获取当前的Unix时间戳;
请求时间戳计算单元,用于根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
进一步地,所述唯一ID生成模块具体包括:
初始ID获取单元,用于将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
唯一ID生成单元,用于将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID;其中,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一项所述的容器集群无状态下的ID生成方法。
本发明实施例还提供了一种容器集群无状态下的ID生成装置,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现上述任一项所述的容器集群无状态下的ID生成方法。
本发明实施例还提供了一种容器集群无状态下的ID生成系统,所述系统包括至少一个负载均衡服务器和至少一个连接池;其中,
所述连接池用于管理容器集群外部的连接请求;
所述负载均衡服务器用于实现上述任一项所述的容器集群无状态下的ID生成方法。
与现有技术相比,本发明实施例提供了一种容器集群无状态下的ID生成方法、装置、计算机可读存储介质及系统,负载均衡服务器在接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;通过所述连接池为所述连接请求生成相应的请求ID;获取所述连接请求对应的请求时间戳;根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID;解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID,方案简单,适用性较高。
附图说明
图1是本发明提供的一种容器集群无状态下的ID生成方法的一个优选实施例的流程图;
图2是本发明实施例提供的一种分布式系统的全局唯一ID的结构示意图;
图3是本发明提供的一种容器集群无状态下的ID生成装置的一个优选实施例的结构框图;
图4是本发明提供的一种容器集群无状态下的ID生成装置的另一个优选实施例的结构框图;
图5是本发明提供的一种容器集群无状态下的ID生成系统的一个优选实施例的结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本技术领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种容器集群无状态下的ID生成方法,参见图1所示,是本发明提供的一种容器集群无状态下的ID生成方法的一个优选实施例的流程图,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述方法由所述负载均衡服务器执行,所述方法包括步骤S11至步骤S15:
步骤S11、当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
步骤S12、若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
步骤S13、通过所述连接池为所述连接请求生成相应的请求ID;
步骤S14、获取所述连接请求对应的请求时间戳;
步骤S15、根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。
在本发明实施例中,容器集群使用一个前置负载均衡服务器来暴露容器集群内的服务,以对每个服务请求进行处理,具体的,容器集群中设置了至少一个负载均衡服务器和至少一个用于管理容器集群外部所有连接请求的连接池,在实际的工作过程中,容器集群外部的客户端发起连接请求,当负载均衡服务器接收到客户端发送的连接请求时,判断该连接请求是否为新连接请求;若该连接请求是新连接请求,则通过连接池为该客户端赋予一个新的唯一的连接ID,若该连接请求不是新连接请求,则从连接池获取该客户端所对应的唯一的连接ID;负载均衡服务器通过连接池为该连接请求赋予一个唯一的请求ID,并获取该连接请求所对应的请求时间戳,从而根据获得的请求时间戳、连接ID和请求ID生成容器集群中的全局唯一ID。
需要说明的是,连接池对不同的客户端分别赋予不同的连接ID,且每一个客户端所对应的连接ID是唯一的,连接池对同一个客户端发起的不同连接请求分别赋予不同的且唯一的请求ID;负载均衡服务器判断上述连接请求是否为新连接请求,即判断上述客户端之前是否已经发起过连接请求,若没有发起过连接请求,说明上述连接请求为新连接请求,则需要通过连接池为上述客户端赋予一个唯一的连接ID,若发起过连接请求,说明上述连接请求不是新连接请求,上述客户端在第一次发起连接请求时已经被赋予了相应的唯一连接ID,则直接从连接池获取上述客户端所对应的唯一的连接ID即可。
另外,连接ID和请求ID的生成算法,可以采取简单的自增算法,例如,每新产生一个需求就加一,可以将关闭的连接ID和请求ID全部回收以重复使用;在容器集群中设置了多个负载均衡服务器的情况下,可以对连接ID的初始值固定分配间隔较大的数字,以避免重复。
本发明实施例所提供的一种容器集群无状态下的ID生成方法,负载均衡服务器在接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;通过所述连接池为所述连接请求生成相应的请求ID;获取所述连接请求对应的请求时间戳;根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID;解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID,方案简单,适用性较高。
在另一个优选实施例中,所述获取所述连接请求对应的请求时间戳,具体包括:
获取当前的Unix时间戳;
根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
具体的,结合上述实施例,为了确保有足够的时间戳可用值,负载均衡服务器在获取上述连接请求所对应的请求时间戳时,可以先获取当前的Unix时间戳,根据当前的Unix时间戳与预先设置的基本时间戳计算获得上述连接请求所对应的请求时间戳。
例如,获取2020-01-01T00:00:00+00:0的时间戳作为基本时间戳,基本时间戳=1577836800秒,在获取当前的Unix时间戳之后,将当前的Unix时间戳减去基本时间戳的差值作为上述连接请求所对应的请求时间戳。
可以理解的,将Unix时间戳减去2020/1/1的时间戳,可以使用到2088年。
需要说明的是,连接ID和请求ID的计数在负载均衡服务器重启后将会重置,不需要持久化保存,可以通过请求时间戳保证相同的连接ID和请求ID不会产生重复结果。
在又一个优选实施例中,所述根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID,具体包括:
将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID;其中,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
具体的,结合上述实施例,生成的全局唯一ID为64位正整数,负载均衡服务器在获得请求时间戳、连接ID和请求ID之后,通过将请求时间戳左移32位,并将连接ID左移16位,相应获得初始ID,通过将请求ID与初始ID进行逻辑或运算(即将请求ID与初始ID进行拼接,将请求ID放在初始ID最后的低16位),从而获得分布式系统的全局唯一ID。
结合图2所示,是本发明实施例提供的一种分布式系统的全局唯一ID的结构示意图,最高位固定为0,代表该全局唯一ID是正整数;31位时间戳最大取值为2147483647秒,可以容纳68年使用;16位网络连接序号(即连接ID),代表每个到容器集群服务的客户端的网络连接,最大并发连接数为65535;16位网络请求序号(即请求ID),代表每个连接请求内的请求序号,最大并发请求数为65535,该方案最多支持在一秒内并发65535*65535=4294836225个连接请求,生成不重复的全局唯一ID,与容器集群节点的数量无关。
在又一个优选实施例中,所述方法还包括:
将所述唯一ID添加在HTTP请求的头部;
将所述HTTP请求转发至所述容器集群中的服务实例。
具体的,结合上述实施例,负载均衡服务器在生成全局唯一ID之后,将该唯一ID添加在HTTP请求的头部,并将该HTTP请求转发至容器集群后端的服务实例,服务实例可以从HTTP请求的头部获取唯一ID作为业务使用。
本发明实施例还提供了一种容器集群无状态下的ID生成装置,能够实现上述任一实施例所述的容器集群无状态下的ID生成方法的所有流程,装置中的各个模块、单元的作用以及实现的技术效果分别与上述实施例所述的容器集群无状态下的ID生成方法的作用以及实现的技术效果对应相同,这里不再赘述。
参见图3所示,是本发明提供的一种容器集群无状态下的ID生成装置的一个优选实施例的结构框图,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述装置设置在所述负载均衡服务器中,所述装置包括:
连接请求判断模块11,用于当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
连接ID生成模块12,用于若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
请求ID生成模块13,用于通过所述连接池为所述连接请求生成相应的请求ID;
请求时间戳获取模块14,用于获取所述连接请求对应的请求时间戳;
唯一ID生成模块15,用于根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。
优选地,所述请求时间戳获取模块14具体包括:
Unix时间戳获取单元,用于获取当前的Unix时间戳;
请求时间戳计算单元,用于根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
优选地,所述唯一ID生成模块15具体包括:
初始ID获取单元,用于将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
唯一ID生成单元,用于将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID;其中,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
优选地,所述装置还包括:
唯一ID添加模块,用于将所述唯一ID添加在HTTP请求的头部;
HTTP请求发送模块,用于将所述HTTP请求转发至所述容器集群中的服务实例。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行上述任一实施例所述的容器集群无状态下的ID生成方法。
本发明实施例还提供了一种容器集群无状态下的ID生成装置,参见图4所示,是本发明提供的一种容器集群无状态下的ID生成装置的另一个优选实施例的结构框图,所述装置即相当于上述实施例中的负载均衡服务器;所述装置包括处理器10、存储器20以及存储在所述存储器20中且被配置为由所述处理器10执行的计算机程序,所述处理器10在执行所述计算机程序时实现上述任一实施例所述的容器集群无状态下的ID生成方法。
优选地,所述计算机程序可以被分割成一个或多个模块/单元(如计算机程序1、计算机程序2、······),所述一个或者多个模块/单元被存储在所述存储器20中,并由所述处理器10执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述装置中的执行过程。
所述处理器10可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以是微处理器,或者所述处理器10也可以是任何常规的处理器,所述处理器10是所述装置的控制中心,利用各种接口和线路连接所述装置的各个部分。
所述存储器20主要包括程序存储区和数据存储区,其中,程序存储区可存储操作系统、至少一个功能所需的应用程序等,数据存储区可存储相关数据等。此外,所述存储器20可以是高速随机存取存储器,还可以是非易失性存储器,例如插接式硬盘,智能存储卡(Smart Media Card,SMC)、安全数字(Secure Digital,SD)卡和闪存卡(Flash Card)等,或所述存储器20也可以是其他易失性固态存储器件。
需要说明的是,上述装置可包括,但不仅限于,处理器、存储器,本领域技术人员可以理解,图4结构框图仅仅是上述装置的示例,并不构成对装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
本发明实施例还提供了一种容器集群无状态下的ID生成系统,参见图5所示,是本发明提供的一种容器集群无状态下的ID生成系统的一个优选实施例的结构框图,所述系统包括至少一个负载均衡服务器100和至少一个连接池200;其中,
所述连接池200用于管理容器集群外部的连接请求;
所述负载均衡服务器100用于实现上述任一项实施例所述的容器集群无状态下的ID生成方法。
需要说明的是,本发明实施例所提供的一种容器集群无状态下的ID生成系统,能够实现上述任一实施例所述的容器集群无状态下的ID生成方法的所有流程,所述系统中的负载均衡服务器100和连接池200的作用分别与上述任一实施例所述的容器集群无状态下的ID生成方法中的负载均衡服务器和连接池的作用对应相同,这里不再赘述。
可以理解的,图5结构框图仅以所述系统包括一个负载均衡服务器和一个连接池为例进行说明,并不构成对本发明实施例的具体限定。
综上,本发明实施例所提供的一种容器集群无状态下的ID生成方法、装置、计算机可读存储介质及系统,负载均衡服务器在接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;通过所述连接池为所述连接请求生成相应的请求ID;获取所述连接请求对应的请求时间戳;根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID;解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID,方案简单,适用性较高。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (10)
1.一种容器集群无状态下的ID生成方法,其特征在于,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述方法由所述负载均衡服务器执行,所述方法包括:
当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
通过所述连接池为所述连接请求生成相应的请求ID;
获取所述连接请求对应的请求时间戳;
根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID;
所述根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID,具体包括:
将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID。
2.如权利要求1所述的容器集群无状态下的ID生成方法,其特征在于,所述获取所述连接请求对应的请求时间戳,具体包括:
获取当前的Unix时间戳;
根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
3.如权利要求1所述的容器集群无状态下的ID生成方法,其特征在于,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
4.如权利要求1~3任一项所述的容器集群无状态下的ID生成方法,其特征在于,所述方法还包括:
将所述唯一ID添加在HTTP请求的头部;
将所述HTTP请求转发至所述容器集群中的服务实例。
5.一种容器集群无状态下的ID生成装置,其特征在于,所述容器集群中设置至少一个负载均衡服务器和至少一个用于管理外部连接请求的连接池,所述装置设置在所述负载均衡服务器中,所述装置包括:
连接请求判断模块,用于当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;
连接ID生成模块,用于若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;
请求ID生成模块,用于通过所述连接池为所述连接请求生成相应的请求ID;
请求时间戳获取模块,用于获取所述连接请求对应的请求时间戳;
唯一ID生成模块,用于根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID;
所述唯一ID生成模块具体包括:
初始ID获取单元,用于将所述请求时间戳左移32位,并将所述连接ID左移16位,相应获得初始ID;
唯一ID生成单元,用于将所述请求ID与所述初始ID进行逻辑或运算,获得所述唯一ID。
6.如权利要求5所述的容器集群无状态下的ID生成装置,其特征在于,所述请求时间戳获取模块具体包括:
Unix时间戳获取单元,用于获取当前的Unix时间戳;
请求时间戳计算单元,用于根据所述Unix时间戳与预设的基本时间戳计算获得所述请求时间戳。
7.如权利要求5所述的容器集群无状态下的ID生成装置,其特征在于,所述请求时间戳为31位正整数,所述连接ID为16位正整数,所述请求ID为16位正整数,所述唯一ID为64位正整数。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括存储的计算机程序;其中,所述计算机程序在运行时控制所述计算机可读存储介质所在的设备执行如权利要求1~4任一项所述的容器集群无状态下的ID生成方法。
9.一种容器集群无状态下的ID生成装置,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器在执行所述计算机程序时实现如权利要求1~4任一项所述的容器集群无状态下的ID生成方法。
10.一种容器集群无状态下的ID生成系统,其特征在于,所述系统包括至少一个负载均衡服务器和至少一个连接池;其中,
所述连接池用于管理容器集群外部的连接请求;
所述负载均衡服务器用于实现如权利要求1~4任一项所述的容器集群无状态下的ID生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010766501.6A CN112054919B (zh) | 2020-08-03 | 2020-08-03 | 容器集群无状态下的id生成方法、装置、存储介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010766501.6A CN112054919B (zh) | 2020-08-03 | 2020-08-03 | 容器集群无状态下的id生成方法、装置、存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112054919A CN112054919A (zh) | 2020-12-08 |
CN112054919B true CN112054919B (zh) | 2022-08-16 |
Family
ID=73602554
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010766501.6A Active CN112054919B (zh) | 2020-08-03 | 2020-08-03 | 容器集群无状态下的id生成方法、装置、存储介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112054919B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113255293A (zh) * | 2021-05-25 | 2021-08-13 | 首约科技(北京)有限公司 | 一种分布式架构可伸缩订单号生成器的控制方法及装置 |
CN114900497B (zh) * | 2022-05-09 | 2023-09-26 | 上海极豆科技有限公司 | 一种标识序号生成方法、装置、电子设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209943A (zh) * | 2015-05-07 | 2016-12-07 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN108282531A (zh) * | 2018-01-24 | 2018-07-13 | 深圳市欧辰技术有限公司 | 一种基于分布式系统的唯一性id生成方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732191B2 (en) * | 2011-06-27 | 2014-05-20 | Oracle International Corporation | System and method for improving application connectivity in a clustered database environment |
-
2020
- 2020-08-03 CN CN202010766501.6A patent/CN112054919B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106209943A (zh) * | 2015-05-07 | 2016-12-07 | 中兴通讯股份有限公司 | 通讯节点的选择方法及装置 |
CN108282531A (zh) * | 2018-01-24 | 2018-07-13 | 深圳市欧辰技术有限公司 | 一种基于分布式系统的唯一性id生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112054919A (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7467295B2 (en) | Determining a boot image based on a requesting client address | |
CN108287660B (zh) | 数据存储方法和设备 | |
CN112054919B (zh) | 容器集群无状态下的id生成方法、装置、存储介质及系统 | |
WO2008150725A1 (en) | Method, equipment and system for resource acquisition | |
CN109120614B (zh) | 基于分布式系统的业务处理方法及装置 | |
CN108933829A (zh) | 一种负载均衡方法及装置 | |
CN109040263B (zh) | 基于分布式系统的业务处理方法及装置 | |
CN109525684B (zh) | 报文转发方法和装置 | |
CN112351110B (zh) | 基于zookeeper的ID分配方法、装置 | |
CN111782383A (zh) | 任务分配方法、服务器、电子终端及计算机可读存储介质 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
CN107920101B (zh) | 一种文件访问方法、装置、系统及电子设备 | |
CN116248414B (zh) | 基于虚拟化硬件实现密码加速的方法、装置及电子设备 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN106940712B (zh) | 序列生成方法与设备 | |
CN112087401A (zh) | 分布式存储中实现服务质量的方法和装置 | |
CN111694639A (zh) | 进程容器地址的更新方法、装置和电子设备 | |
EP3672203A1 (en) | Distribution method for distributed data computing, device, server and storage medium | |
CN113220432A (zh) | 多云互联方法、装置、设备、存储介质及产品 | |
CN113656172A (zh) | 一种优化雪花算法的方法、装置、设备以及存储介质 | |
CN111198756A (zh) | 一种kubernetes集群的应用调度方法及装置 | |
CN111431951B (zh) | 一种数据处理方法、节点设备、系统及存储介质 | |
US10951732B2 (en) | Service processing method and device | |
CN114221933B (zh) | 手机银行多中心多活的寻址方法、装置及系统 | |
EP3304865B1 (en) | Systems and methods for server failover and load balancing |
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 | ||
PP01 | Preservation of patent right |
Effective date of registration: 20240222 Granted publication date: 20220816 |
|
PP01 | Preservation of patent right |