CN112054919B - 容器集群无状态下的id生成方法、装置、存储介质及系统 - Google Patents

容器集群无状态下的id生成方法、装置、存储介质及系统 Download PDF

Info

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
Application number
CN202010766501.6A
Other languages
English (en)
Other versions
CN112054919A (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.)
China Express Jiangsu Technology Co Ltd
Original Assignee
China Express Jiangsu Technology Co Ltd
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 China Express Jiangsu Technology Co Ltd filed Critical China Express Jiangsu Technology Co Ltd
Priority to CN202010766501.6A priority Critical patent/CN112054919B/zh
Publication of CN112054919A publication Critical patent/CN112054919A/zh
Application granted granted Critical
Publication of CN112054919B publication Critical patent/CN112054919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • H04L41/0813Configuration setting characterised by the conditions triggering a change of settings
    • H04L41/0816Configuration setting characterised by the conditions triggering a change of settings the condition being an adaptation, e.g. in response to network events
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/30Managing network names, e.g. use of aliases or nicknames
    • H04L61/3015Name registration, generation or assignment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network 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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种容器集群无状态下的ID生成方法、装置、存储介质及系统,所述方法包括:当接收到客户端发送的连接请求时,判断所述连接请求是否为新连接请求;若是,则通过所述连接池为所述客户端生成相应的连接ID;若否,则从所述连接池获取所述客户端对应的连接ID;通过所述连接池为所述连接请求生成相应的请求ID;获取所述连接请求对应的请求时间戳;根据所述请求时间戳、所述连接ID和所述请求ID生成所述容器集群中的唯一ID。采用本发明的技术方案解决了在容器集群无状态下无法固定配置机器ID的问题,能够在不增加分布式系统的实现难度和复杂度的情况下生成全局唯一ID。

Description

容器集群无状态下的ID生成方法、装置、存储介质及系统
技术领域
本发明涉及容器集群管理技术领域,尤其涉及一种容器集群无状态下的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生成方法。
CN202010766501.6A 2020-08-03 2020-08-03 容器集群无状态下的id生成方法、装置、存储介质及系统 Active CN112054919B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8635185B2 (en) * 2011-06-27 2014-01-21 Oracle International Corporation System and method for providing session affinity in a clustered database environment

Patent Citations (2)

* Cited by examiner, † Cited by third party
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生成方法、装置、存储介质及系统
CN109120614B (zh) 基于分布式系统的业务处理方法及装置
WO2008150725A1 (en) Method, equipment and system for resource acquisition
CN111163130B (zh) 一种网络服务系统及其数据传输方法
CN108933829A (zh) 一种负载均衡方法及装置
CN109525684B (zh) 报文转发方法和装置
US20120089734A1 (en) Allocation of resources between web services in a composite service
WO2021139264A1 (zh) 对象存储控制方法、装置、计算机设备及存储介质
CN109040263B (zh) 基于分布式系统的业务处理方法及装置
CN112351110B (zh) 基于zookeeper的ID分配方法、装置
CN111782383A (zh) 任务分配方法、服务器、电子终端及计算机可读存储介质
CN116248414B (zh) 基于虚拟化硬件实现密码加速的方法、装置及电子设备
CN104793982A (zh) 一种创建虚拟机的方法和设备
CN113361913A (zh) 一种通信业务编排方法、装置、计算机设备及存储介质
CN112087401A (zh) 分布式存储中实现服务质量的方法和装置
EP3672203A1 (en) Distribution method for distributed data computing, device, server and storage medium
CN113220432A (zh) 多云互联方法、装置、设备、存储介质及产品
CN111198756A (zh) 一种kubernetes集群的应用调度方法及装置
CN114221933B (zh) 手机银行多中心多活的寻址方法、装置及系统
CN115756955A (zh) 一种数据备份、数据恢复的方法、装置及计算机设备
CN108173892B (zh) 云端镜像操作方法和装置
TW202315360A (zh) 微服務分配方法、電子設備及儲存介質
EP3346671A1 (en) Service processing method and equipment

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