CN117221324A - 云服务器的创建任务分发方法、装置、电子设备及介质 - Google Patents

云服务器的创建任务分发方法、装置、电子设备及介质 Download PDF

Info

Publication number
CN117221324A
CN117221324A CN202311483063.2A CN202311483063A CN117221324A CN 117221324 A CN117221324 A CN 117221324A CN 202311483063 A CN202311483063 A CN 202311483063A CN 117221324 A CN117221324 A CN 117221324A
Authority
CN
China
Prior art keywords
queue
queues
creation
message queue
message
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.)
Granted
Application number
CN202311483063.2A
Other languages
English (en)
Other versions
CN117221324B (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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311483063.2A priority Critical patent/CN117221324B/zh
Publication of CN117221324A publication Critical patent/CN117221324A/zh
Application granted granted Critical
Publication of CN117221324B publication Critical patent/CN117221324B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及云技术领域,尤其涉及一种云服务器的创建任务分发方法、装置、电子设备及介质,用以实现负载均衡。其中,方法包括:接收包含创建参数集的创建请求,当数据库中存储有队列映射关系时,基于队列映射关系,从各候选消息队列中获得目标消息队列,并将创建任务下发至目标消息队列;当未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,并基于参数哈希值,从各虚拟消息队列中筛选出中间消息队列,将创建任务下发至中间消息队列对应的候选消息队列。本申请通过映射关系指定的消息队列,以及基于哈希值的大小确定消息队列的分发方式,可以实现将创建任务均衡的分发到不同的消息队列,实现负载均衡,进而提升任务处理效率。

Description

云服务器的创建任务分发方法、装置、电子设备及介质
技术领域
本申请涉及云技术领域,尤其涉及一种云服务器的创建任务分发方法、装置、电子设备及介质。
背景技术
随着云计算技术的发展,云服务器(Cloud Virtual Machine,CVM)成为越来越多产品运营方的选择,其管理方式比物理服务器更简单高效,使产品运营方无需提前购买硬件,即可迅速创建或释放任意多台云服务器。在云计算场景下,需要创建云服务器的对象,向服务器发送云服务器的创建请求,服务器将不同的云服务器的创建任务分发到各消息队列(queue)进行处理。
相关技术中,主要是通过以下方式进行创建任务的分发的:在接收到创建请求后,首先,采用哈希算法对创建请求中携带的参数进行映射获得哈希值,然后,使用哈希值对消息队列的数量取模,获得消息队列的序号,并将创建任务分发到对应的消息队列。
例如,服务器管理的消息队列包括队列1、队列2和队列3,哈希值为10,使用10对3取模,获得的序号为1,则将任务分发到队列1中。
然而,基于上述方式进行创建任务的分发,虽然哈希算法具有一定的随机性,但是也很难保证获得的哈希值是完全均匀分布的,因此在消息队列的数量较小时,使用哈希值对消息队列的数量取模,容易造成数据偏斜,即导致多个任务被集中分发到某个队列上,造成流量分布不均,而当某个队列中的流量过大时,则会导致队列堵塞,集群吞吐量下降,任务处理效率低。
发明内容
本申请实施例提供一种云服务器的创建任务分发方法、装置、电子设备和存储介质,用以实现负载均衡。
本申请实施例提供的一种云服务器的创建任务分发方法,包括:
接收用于创建云服务器的创建请求;其中,所述创建请求中包含创建参数集,所述创建参数集包含:待创建的云服务器对应的物理机的至少一个属性参数;
当数据库中存储有所述创建参数集的队列映射关系时,基于所述队列映射关系,从各候选消息队列中获得所述创建参数集对应的目标消息队列,并将所述创建任务下发至所述目标消息队列;
当所述数据库中未存储所述队列映射关系时,将所述创建参数集转换为整数类型的参数哈希值,并基于所述参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从所述各虚拟消息队列中筛选出中间消息队列,以及将所述创建任务下发至所述中间消息队列对应的候选消息队列;其中,每个候选消息队列对应多个虚拟消息队列。
本申请实施例提供的一种云服务器的创建任务分发装置,包括:
接收单元,用于接收用于创建云服务器的创建请求;其中,所述创建请求中包含创建参数集,所述创建参数集包含:待创建的云服务器对应的物理机的至少一个属性参数;
第一分发单元,用于当数据库中存储有所述创建参数集的队列映射关系时,基于所述队列映射关系,从各候选消息队列中获得所述创建参数集对应的目标消息队列,并将所述创建任务下发至所述目标消息队列;
第二分发单元,用于当所述数据库中未存储所述队列映射关系时,将所述创建参数集转换为整数类型的参数哈希值,并基于所述参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从所述各虚拟消息队列中筛选出中间消息队列,以及将所述创建任务下发至所述中间消息队列对应的候选消息队列;其中,每个候选消息队列对应多个虚拟消息队列。
可选的,所述装置还包括查询单元,用于
向远程字典服务发送用于获取初始队列数量的查询请求,并接收返回的第一应答消息,所述第一应答消息包含用于指示所述初始队列数量的指示信息;
当所述指示信息不为空时,按照所述初始队列数量注册相应数量的候选消息队列;
当所述指示信息为空时,按照默认队列数量注册相应数量的候选消息队列。
可选的,所述查询单元具体用于:
分别为注册的各候选消息队列设置预设数量的虚拟消息队列。
可选的,所述查询单元还用于:
按照预设时间间隔,向所述远程字典服务发送用于获取当前队列数量的查询请求,并接收返回的第二应答消息,所述第二应答消息包含用于指示所述当前队列数量的指示信息,所述当前队列数量,是基于注册的各候选消息队列的运行状态确定,并存储至所述远程字典服务中的;
当所述当前队列数量,与当前注册的各候选消息队列的实际数量不同时,按照所述当前队列数量,对所述实际数量进行更新。
可选的,所述查询单元还用于:
当所述当前队列数量大于所述实际数量时,基于所述当前队列数量和所述实际数量之间的差值,新增对应数量的候选消息队列,并分别为新增的各候选消息队列设置预设数量的虚拟消息队列;
当所述当前队列数量小于所述实际数量时,基于所述当前队列数量和所述实际数量之间的差值,注销对应数量的候选消息队列,以及所述对应数量的候选消息队列的虚拟消息队列。
可选的,所述第二分发单元具体用于:
将各队列哈希值按照从小到大的顺序排序,获得排序后的各队列哈希值;
通过二分查找法,从所述排序后的各队列哈希值中查找出目标队列哈希值,其中,所述目标队列哈希值为大于所述参数哈希值的各队列哈希值中,最小的队列哈希值;
将所述目标队列哈希值对应的虚拟消息队列,作为所述中间消息队列。
可选的,所述第二分发单元还用于:
当所述各队列哈希值中,不存在大于所述参数哈希值的队列哈希值时,将预先指定的虚拟消息队列作为所述中间消息队列。
可选的,所述第二分发单元还用于通过以下方式获得各队列哈希值:
针对所述各虚拟消息队列,分别执行以下操作:
基于一个虚拟消息队列的标识信息,和所述一个虚拟消息队列对应的候选消息队列的标识信息,获得队列标识信息;
基于预设的哈希算法和所述队列标识信息,获得所述一个虚拟消息队列的队列哈希值。
可选的,所述队列映射关系,是在所述创建参数集对应的历史创建任务的数量符合预设条件时,建立并存储至所述数据库的。
本申请实施例提供的一种电子设备,包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行上述任意一种云服务器的创建任务分发方法的步骤。
本申请实施例提供一种计算机可读存储介质,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行上述任意一种云服务器的创建任务分发方法的步骤。
本申请实施例提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中;当电子设备的处理器从计算机可读存储介质读取所述计算机程序时,所述处理器执行所述计算机程序,使得所述电子设备执行上述任意一种云服务器的创建任务分发方法的步骤。
本申请有益效果如下:
本申请实施例提供了一种云服务器的创建任务分发方法、装置、电子设备和存储介质,接收到云服务器的创建请求后,当数据库中存储有创建请求中包含的创建参数集的队列映射关系时,基于队列映射关系,确定将创建任务下发至对应的目标消息队列,通过指定目标消息队列的方式,可以为一些请求频率较高的创建参数集,设置单独的消息队列,既可以加速对此创建参数集对应的创建请求的处理,也避免因为此创建参数集占用资源较多,影响对其他创建请求的处理;
当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,基于参数哈希值与各虚拟消息队列的队列哈希值的大小关系,筛选出中间消息队列,将创建任务下发至中间消息队列对应的候选消息队列,通过引入虚拟消息队列,增加了任务分发过程中待选的队列的数量,使得创建任务能够尽量分散到不同的消息队列,避免因队列数太少造成分发不均,实现消息队列间的负载均衡,进而提升消息队列的整体吞吐和性能,提高任务处理效率,并且通过哈希值之间的大小关系筛选消息队列的方式,在消息队列增加或减少时,也可保障只有少量创建任务会被分配到新的消息队列,保障服务的稳定性。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为相关技术中的任务分发方法的示意图;
图2为本申请实施例中的一种应用场景的一个可选的示意图;
图3为本申请实施例中的一种云服务器的创建任务分发方法的实施流程图;
图4为本申请实施例中的动静结合的分发方法的流程示意图;
图5为本申请实施例中的一种程序启动过程的流程示意图;
图6A为本申请实施例中的一种队列数初始化方法的示意图;
图6B为本申请实施例中的一种确定队列数量方法的示意图;
图7为本申请实施例中的一种注销队列方法的示意图;
图8为本申请实施例中的一种轮询任务的流程示意图;
图9为本申请实施例中的接入层的实施方式的示意图;
图10为本申请实施例中的一种哈希环的示意图;
图11为本申请实施例中的一种获取动态路由方法的流程示意图;
图12为本申请实施例中的一种云服务器的创建任务分发方法的逻辑示意图;
图13为本申请实施例中的一种云服务器的创建任务分发装置的结构示意图;
图14为应用本申请实施例的一种电子设备的一个硬件组成结构示意图;
图15为应用本申请实施例的另一种电子设备的一个硬件组成结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
下面对本申请实施例中涉及的部分概念进行介绍。
云服务器:是一种提供云计算服务的互联网技术(Internet Technology,IT)产品,云服务器的特点是简单高效、安全可靠、处理能力可弹性伸缩、降低开发运维的难度和整体IT成本,面向各类互联网用户提供综合业务服务平台,整合了互联网应用三大核心要素:计算、存储、网络,提供了公用化的互联网基础设施服务。
队列映射关系:记载了创建参数集与目标消息队列之间的映射关系,例如,创建参数集“0102S6”的队列映射关系为:0102S6-消息队列1,因此,可以通过创建参数集在数据库中查找是否存在对应的队列映射关系。
参数哈希值:通过对创建参数集进行哈希计算获得的哈希值,由于本申请中需要基于哈希值之间的大小关系进行筛选,因此要求参数哈希值与队列哈希值都是整数类型,以实现对比大小,若对创建参数集进行哈希计算后获得的为字节类型的哈希值,则可以通过解包等操作,将字节类型的哈希值转换为整数类型的哈希值。
哈希算法(Hash Algorithm):能够将任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,即获得哈希值,目前被广泛应用在加密、存储等领域。
远程字典服务(Remote Dictionary Server,Redis):是一个键-值(Key-Value)存储系统,支持网络、可基于内存亦可持久化的日志型数据库,支持存储的value类型相对更多,包括字符串(string)、链表(list)、集合(set)、有序集合(sorted set)和hash,在本申请实施例中将队列数存储在Redis中,并且可以根据需求更新,通过周期性向Redis发送查询请求,获取最新的队列数。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算(cloud computing)是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为基础设施即服务(Infrastructure as a Service,IaaS)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
按照逻辑功能划分,在IaaS层上可以部署平台即服务 (Platform as a Service,PaaS)层,PaaS层之上再部署软件即服务 (Software as a Service,SaaS)层,也可以直接将SaaS部署在IaaS上。PaaS为软件运行的平台,如数据库、web容器等。SaaS为各式各样的业务软件,如web门户网站、短信群发器等。一般来说,SaaS和PaaS相对于IaaS是上层。在本申请实施例中,云平台的运营商提供创建云服务器的服务,并且可以通过专门的服务器实现创建任务的分发,服务器可以部署在容器中。
智能交通系统(Intelligent Traffic System,ITS)又称智能运输系统(Intelligent Transportation System),是将先进的科学技术(信息技术、计算机技术、数据通信技术、传感器技术、电子控制技术、自动控制理论、运筹学、人工智能等)有效地综合运用于交通运输、服务控制和车辆制造,加强车辆、道路、使用者三者之间的联系,从而形成一种保障安全、提高效率、改善环境、节约能源的综合运输系统。
智能车路协同系统(Intelligent Vehicle Infrastructure CooperativeSystems,IVICS),简称车路协同系统,是ITS的一个发展方向。车路协同系统是采用先进的无线通信和新一代互联网等技术,全方位实施车车、车路动态实时信息交互,并在全时空动态交通信息采集与融合的基础上开展车辆主动安全控制和道路协同管理,充分实现人车路的有效协同,保证交通安全,提高通行效率,从而形成的安全、高效和环保的道路交通系统。
本申请实施例可以应用于智能交通系统和智能车路协同系统,例如,在智能交通系统和智能车路协同系统中需要创建云服务器时,可以基于本申请中的云服务器的创建任务分发方法,将创建任务分发至各消息队列,提高云服务的创建效率,进而提升智能交通系统和智能车路协同系统的稳定性,保障交通安全、提高通行效率。
下面对本申请实施例的设计思想进行简要介绍:
随着云计算技术的发展,云服务器成为越来越多产品运营方的选择,其管理方式比物理服务器更简单高效,使产品运营方无需提前购买硬件,即可迅速创建或释放任意多台云服务器。在云计算场景下,需要创建云服务器的对象,向服务器发送云服务器的创建请求,服务器将不同的云服务器的创建任务分发到各消息队列进行处理。
相关技术中,主要是通过以下方式进行创建任务的分发的:在接收到创建请求后,首先,采用哈希算法对创建请求中携带的参数进行映射获得哈希值,然后,使用哈希值对消息队列的数量取模,获得消息队列的序号,并将创建任务分发到对应的消息队列。
如图1所示,为相关技术中的任务分发方法的示意图,用户通过控制台发送云服务器的创建请求,应用程序编程接口(Application Programming Interface,API)层,API层将创建请求转发到接入层,由接入层负责任务的分发,待分发的消息队列包括队列1、队列2和队列3,每个消息队列对应一个消费者(consumer),哈希值为10,使用10对3取模,获得的序号为1,则将任务分发到队列1中。
然而,基于上述方式进行创建任务的分发,虽然哈希算法具有一定的随机性,但是也很难保证获得的哈希值是完全均匀分布的,因此在消息队列的数量较小时,使用哈希值对消息队列的数量取模,容易造成数据偏斜,即导致多个任务被集中分发到某个队列上,造成流量分布不均,而当某个队列中的流量过大时,则会导致队列堵塞,集群吞吐量下降,任务处理效率低,产品体验差。同时消息队列在扩容或者缩容时,由于消息队列的数量发生改变,取模的方式会导致大部分任务的路由都发生变化,同一时间大部分消费者需要重建内存数据,造成数据库慢查询,任务堆积,系统整体吞吐量下降,云服务器创建任务阻塞,导致任务需要几十分钟的等待才能创建完成等问题。
有鉴于此,本申请实施例提供了一种云服务器的创建任务分发方法、装置、电子设备和存储介质,接收到云服务器的创建请求后,当数据库中存储有创建请求中包含的创建参数集的队列映射关系时,基于队列映射关系,确定将创建任务下发至对应的目标消息队列,通过指定目标消息队列的方式,可以为一些请求频率较高的创建参数集,设置单独的消息队列,既可以加速对此创建参数集对应的创建请求的处理,也避免因为此创建参数集占用资源较多,影响对其他创建请求的处理;
当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,基于参数哈希值与各虚拟消息队列的队列哈希值的大小关系,筛选出中间消息队列,将创建任务下发至中间消息队列对应的候选消息队列,通过引入虚拟消息队列,增加了任务分发过程中待选的队列的数量,使得创建任务能够尽量分散到不同的消息队列,避免因队列数太少造成分发不均,实现消息队列间的负载均衡,进而提升消息队列的整体吞吐和性能,提高任务处理效率,并且通过哈希值之间的大小关系筛选消息队列的方式,在消息队列增加或减少时,也可保障只有少量创建任务会被分配到新的消息队列,保障服务的稳定性。
以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请,并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图2所示,其为本申请实施例的应用场景示意图。该应用场景图中包括两个终端设备210和一个服务器220。
在本申请实施例中,终端设备包括但不限于手机、平板电脑、笔记本电脑、台式电脑、电子书阅读器、智能语音交互设备、智能家电、车载终端、飞行器等设备;终端设备上可以安装有云服务器创建相关的客户端,该客户端可以是软件(例如浏览器、云服务器管理软件等),也可以是网页、小程序等,服务器则是与软件或是网页、小程序等相对应的后台服务器,或者是专门用于进行云服务器的创建任务分发的服务器,本申请不做具体限定。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,本申请实施例中的云服务器的创建任务分发方法可以由电子设备执行,该电子设备可以为服务器或者终端设备,即,该方法可以由服务器或者终端设备单独执行,也可以由服务器和终端设备共同执行。比如由服务器执行时,服务器接收用于创建云服务器的创建请求,当数据库中存储有创建参数集的队列映射关系时,基于队列映射关系,从各候选消息队列中获得创建参数集对应的目标消息队列,并将创建任务下发至目标消息队列,当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,并基于参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从各虚拟消息队列中筛选出中间消息队列,以及将创建任务下发至中间消息队列对应的候选消息队列。
在一种可选的实施方式中,终端设备与服务器之间可以通过通信网络进行通信。
在一种可选的实施方式中,通信网络是有线网络或无线网络。
需要说明的是,图2所示只是举例说明,实际上终端设备和服务器的数量不受限制,在本申请实施例中不做具体限定。
本申请实施例中,当服务器的数量为多个时,多个服务器可组成为一区块链,而服务器为区块链上的节点;如本申请实施例所公开的云服务器的创建任务分发方法,其中所涉及的队列映射关系、队列哈希值等均可保存于区块链上。
此外,本申请实施例可应用于各种场景,不仅包括云服务器的创建任务分发场景,还包括但不限于云技术、人工智能、智慧交通、辅助驾驶等场景。
下面结合上述描述的应用场景,参考附图来描述本申请示例性实施方式提供的云服务器的创建任务分发方法,需要注意的是,上述应用场景仅是为了便于理解本申请的精神和原理而示出,本申请的实施方式在此方面不受任何限制。
参阅图3所示,为本申请实施例提供的一种云服务器的创建任务分发方法的实施流程图,以执行主体为服务器为例,该方法的具体实施流程包括如下步骤S31-S33:
S31:服务器接收用于创建云服务器的创建请求;
具体地,云服务器需要由物理机承载,因此创建请求中包含创建参数集,创建参数集包含待创建的云服务器对应的物理机的至少一个属性参数,属性参数用于指明承载云服务器的物理机的信息,属性参数包括:可用区(zoneId)、池子(pool)和物理机的机型型号(device_class),创建参数集为{zoneId}_{pool}_{device_class}组成的三元组,也可将这种三元组命名为分区(partition),例如,创建参数集为“A01S6”,则表明云服务器需要创建在A区01池子中,机型型号为S6的物理机上。
通过创建参数集能够区分不同的创建请求,进一步的也在创建请求中添加专用的标识,用以区分不同的创建请求,例如,以发送创建请求的用户的身份标识号(IdentityDocument,ID)作为创建请求的标识,或者将生成创建请求的时间作为创建请求的标识,在此不做具体限定。
服务器在接收到创建请求后,需要判断将云服务的创建任务分发到哪个消息队列执行,本申请实施例提出了一种动静结合的路由调度方案,即服务器首先到数据库中查询是否存在队列映射关系,如存在则直接使用静态路由,若不存在,进行动态分配,具体分为以下两种方式:
S32:当数据库中存储有创建参数集的队列映射关系时,服务器基于队列映射关系,从各候选消息队列中获得创建参数集对应的目标消息队列,并将创建任务下发至目标消息队列;
具体地,数据库可以是关系型数据库(MySQL),在数据库中存储创建参数集与目标消息队列的队列映射关系,服务器根据创建参数集到数据库中查询是否存在对应的队列映射关系,若存在则可以将创建任务下发至队列映射关系指向的目标消息队列。
例如,候选消息队列为:消息队列1、消息队列2和消息队列3,创建参数集为“B02S1”,数据库中存储的队列映射关系包括:B02S1-消息队列2,B03S3-消息队列1,基于“B02S1”从数据库中查询到目标消息队列为消息队列2,则将创建任务下发至消息队列2。
再例如,候选消息队列为:消息队列4、消息队列5,创建参数集为“A01S6”,数据库中存储的队列映射关系包括:A01S6-消息队列4,B05S3-消息队列4,A05S3-消息队列5,基于“A01S6”从数据库中查询到目标消息队列为消息队列4,则将创建任务下发至消息队列4。
可选的,队列映射关系是在创建参数集对应的历史创建任务的数量符合预设条件时,建立并存储至数据库的。
具体地,预设条件可以是历史创建任务的数量大于第一阈值,也可以是历史创建任务的数量在规定时间内的数量大于第二阈值,例如,历史创建任务的数量大于100,历史创建任务在1分组内的数量大于50。
在云服务器创建的场景中,一个用户可能会请求创建多个云服务器,但每个云服务器创建请求仅包含创建1个云服务器的请求,也即,如果一个用户请求创建100台云服务器,那么将生成100个创建任务,需要服务器依次进行任务分发,这100个创建任务对应相同的创建参数集,因此,可以通过创建参数集对应的历史创建任务的数量或者并发量,判断此创建参数集的流量,若流量较大,则设置单独的消息队列进行处理,避免影响其他任务的处理。
例如,判断某个partition的流量(历史创建任务的数量)非常大,则把这个partition设置单独的消息队列和消费者,建立队列映射关系,可加速此消息队列的任务处理,并避免影响到其他partition的任务。某个partition流量突增时,可快速隔离掉此partition,在静态路由表里进行设置,可实时生效,改变partition的路由,加速流量突增的partition的任务的处理,同时避免影响其他partition的任务。
S33:当数据库中未存储队列映射关系时,服务器将创建参数集转换为整数类型的参数哈希值,并基于参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从各虚拟消息队列中筛选出中间消息队列,以及将创建任务下发至中间消息队列对应的候选消息队列;
具体地,数据库中未存储队列映射关系时,需要动态分发任务,由于相关技术中存在因队列数较少,导致分配不均的情况,因此在本申请中,为每个候选消息队列对应设置了多个虚拟消息队列,在任务分发时,先基于创建参数集,从虚拟消息队列中筛选出中间消息队列,将任务分发至中间消息队列对应的候选消息队列。
通过哈希算法将创建参数集转换至整数类型的参数哈希值,哈希算法可以是安全散列算法(Secure Hash Algorithm,SHA)-1、SHA-224、SHA-256、SHA-384,和SHA-512等,在此不做具体限定。在本申请实施例中,是以使用SHA-512为例进行说明的,将创建参数集通过SHA-512转换为64字节的哈希值,然后将这个64字节的哈希值的前8个字节解包成一个64位无符号整数,即将字节类型的哈希值转换为整数类型的哈希值,即参数哈希值,也可称为partition_hash_value。
如图4所示,为本申请实施例中的动静结合的分发方法的流程示意图,包括以下步骤:
S401:判断数据库中是否存在队列映射关系,若是,执行步骤S402,若否,执行步骤S403;
S402:将创建任务分发至队列映射关系指向的目标消息队列;
S403:将创建参数组转换为参数哈希值;
S404:基于参数哈希值筛选出中间消息队列;
S405:将创建任务分发至中间消息队列对应的候选消息队列。
基于本申请中动静结合的路由方案,在规划路由阶段如果提前预知到某个partition的流量非常大或者在程序运行过程中某个partition流量突增时,可通过设置静态路由,指定partition的路由队列,提升partition的任务处理的吞吐量,同时能隔离该partition对其他partition任务造成处理慢的问题;如无特殊需求,partition的任务路由到哪个队列,可采用动态路由的方式,避免各个集群不同的配置造成运维上的复杂度。
在本申请实施例中,接收到云服务器的创建请求后,当数据库中存储有创建请求中包含的创建参数集的队列映射关系时,基于队列映射关系,确定将创建任务下发至对应的目标消息队列,通过指定目标消息队列的方式,可以为一些请求频率较高的创建参数集,设置单独的消息队列,既可以加速对此创建参数集对应的创建请求的处理,也避免因为此创建参数集占用资源较多,影响对其他创建请求的处理;
当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,基于参数哈希值与各虚拟消息队列的队列哈希值的大小关系,筛选出中间消息队列,将创建任务下发至中间消息队列对应的候选消息队列,通过引入虚拟消息队列,增加了任务分发过程中待选的队列的数量,使得创建任务能够尽量分散到不同的消息队列,避免因队列数太少造成分发不均,实现消息队列间的负载均衡,进而提升消息队列的整体吞吐和性能,提高任务处理效率,并且通过哈希值之间的大小关系筛选消息队列的方式,在消息队列增加或减少时,也可保障只有少量创建任务会被分配到新的消息队列,保障服务的稳定性。
本申请实施例中的任务分发方法可以以程序的形式实现,则在程序启动后,首先要执行图5所示的步骤进行初始化,包括以下步骤:
S501:初始化哈希结构;
S502:初始化队列数量;
S503:注册相应数量的候选消息队列;
S504:是否开启轮询队列数量线程,若是执行步骤S505,若否,结束;
S505:开启轮询队列数量线程。
可选的,通过以下步骤初始化候选消息队列的数量,并注册候选消息队列:
向远程字典服务发送用于获取初始队列数量的查询请求,并接收返回的第一应答消息,第一应答消息包含用于指示初始队列数量的指示信息;当指示信息不为空时,按照初始队列数量注册相应数量的候选消息队列;当指示信息为空时,按照默认队列数量注册相应数量的候选消息队列。
具体地,优先使用远程字典服务中存储的初始队列数量,但是远程字典服务不一定会存储有初始队列数量,因此,当远程字典服务未存储时,使用默认队列数量注册候选消息队列,例如,默认队列数量设置为10,当远程字典服务未存储初始队列数量时,注册10个候选消息队列。
可选的,如图6A所示,步骤S403可以实施为以下步骤:
S4031:判断配置文件中是否存在队列数,若是执行步骤S4032,若否执行步骤S4033;
S4032:采用队列数配置;
S4033:采用默认值10;
S4034:判断远程字典服务中是否存在初始队列数量,若是执行步骤S4035,若否,结束;
S4035:采用初始队列数量。
具体地,在程序初始化时,先查看配置文件中是否有配置队列数,如果没有,采用默认值,如果有,采用队列数配置,然后再查看远程字典服务中是否有队列数的配置,如果有采用远程字典服务中的队列数。
如上文所述,为了保证任务的均匀分发,本申请提出了为候选消息队列设置虚拟消息队列,以在任务分发的过程中,增加队列数量,因此在注册候选消息队列时,还分别为注册的各候选消息队列设置预设数量的虚拟消息队列,也即,每个候选消息队列的虚拟消息队列的数量是相同的,这样才能保证任务在各个消息队列之间均匀分发,例如,预设数量为3,则为每个候选消息队列设置3个虚拟消息队列。
同样的,虚拟消息队列的队列哈希值也为64位无符号整数,通过以下方式获得一个虚拟消息队列的队列哈希值:
基于一个虚拟消息队列的标识信息,和一个虚拟消息队列对应的候选消息队列的标识信息,获得队列标识信息;基于预设的哈希算法和队列标识信息,获得一个虚拟消息队列的队列哈希值。
其中,预设的哈希算法为SHA-512,也即对创建参数集和队列标识信息使用相同的哈希算法进行映射,将队列标识信息通过SHA-512转换为64字节的哈希值,然后将这个64字节的哈希值的前8个字节解包成一个64位无符号整数。
虚拟消息队列的标识信息为队列号(queue number),候选消息队列的标识信息为队列名(queue name),在本申请实施例中以队列号和队列名都是由数字组成为例进行介绍。
对于每一个虚拟queue number,组织一个key,如key为{queue_name}{queue_number}的格式,注册虚拟消息队列时,会对每一个key通过哈希算法生成上述队列哈希值,并且保存这个队列哈希值,和queue name的对应关系,把值保存到一个list中,对这个list按照从小到大的顺序排序。
例如,候选消息队列1对应3个虚拟消息队列,分别是:虚拟消息队列1、虚拟消息队列2和虚拟消息队列3,以虚拟消息队列1为例,标识信息为01,对应的候选消息队列的标识信息为01,则队列映射标识为0101,候选消息队列2对应3个虚拟消息队列,分别是:虚拟消息队列4、虚拟消息队列5和虚拟消息队列6,以虚拟消息队列5为例,标识信息为05,对应的候选消息队列的标识信息为02,则队列映射标识为0202。
在步骤S405中,开启轮询队列数量线程后,执行以下步骤:
按照预设时间间隔,向远程字典服务发送用于获取当前队列数量的查询请求,并接收返回的第二应答消息;当当前队列数量,与当前注册的各候选消息队列的实际数量不同时,按照当前队列数量,对实际数量进行更新。
其中,预设时间间隔可以为10秒、30秒、60秒等,在此不做具体限定,以30秒为例,开启轮询队列数量线程后,每隔30秒发送一次查询请求,查看Redis里是否有配置队列数的值(当前队列数量),没有,则睡眠30秒后,重新进行查看,有设置当前队列数量,则需要根据当前队列数量更新实际数量。
第二应答消息包含用于指示当前队列数量的指示信息,当前队列数量,是基于注册的各候选消息队列的运行状态确定,并存储至远程字典服务中的,例如,当前候选消息队列的实际数量为3,根据候选消息队列的运行状态确定当前集群吞吐较低,需要将消息队列的数量增加到5个,则将当前队列数量5存储到远程字典服务中,等待下一次服务器发送查询请求时,将当前队列数量5,返回给服务器,根据候选消息队列的运行状态确定当前消息队列空闲,可以消息队列的数量减少到2个,则将当前队列数量2存储到远程字典服务中,等待下一次服务器发送查询请求时,将当前队列数量2,返回给服务器。
如图6B所示,为本申请实施例中的一种确定队列数量方法的示意图,在程序启动时,服务器第一次向Redis发送查询请求,用于获取初始队列数量,Redis向服务器返回第一应答消息,服务器基于第一应答消息设置候选队列的数量;之后每隔30秒,服务器向Redis发送一次查询请求,用于获取Redis中最新的队列数量,即当前队列数量,Redis向服务器返回第二应答消息,服务器基于第二应答消息,确定是否更新队列的实际数量。
可选的,当前队列数量与实际数量不同时,通过以下步骤更新实际数量:
当当前队列数量大于实际数量时,基于当前队列数量和实际数量之间的差值,新增对应数量的候选消息队列,并分别为新增的各候选消息队列设置预设数量的虚拟消息队列;
当当前队列数量小于实际数量时,基于当前队列数量和实际数量之间的差值,注销对应数量的候选消息队列,以及对应数量的候选消息队列的虚拟消息队列。
具体地,比对当前队列数量的值大于还是小于内存里保存的值(实际数量),如果大于,则需要对新增的queue number进行注册,如果小于,则需要从内存里注销对应的队列。假设从Redis里获取到的queue的数量值为q1,内存里存的值为q2,增加队列时,需要把q2…q1-1这些队列注册进去,队列数减少的时候,需要把q1…q2-1这些队列从内存里注销掉,把{queue_name}{queue_number}格式的key哈希(算法和注册时一致)成一个值,在注册时生成的list里使用二分查找查找到这个值所在的位置,把这个位置的值从list里删除。
例如,当实际数量为3,候选消息队列为:候选消息队列1、候选消息队列2和候选消息队列3,当前数量为5,则新增候选消息队列4和候选消息队列5,并新增候选消息队列4的虚拟消息队列10-12,以及候选消息队列5的虚拟消息队列13-15,将虚拟消息队列10-15的队列哈希值存储到list中;当前数量为2,则注销候选消息队列3,并将候选消息队列3的虚拟消息队列7、8、9的队列哈希值从list中删除。
如图7所示,为本申请实施例中的一种注销队列方法的示意图,当前list中存储有候选消息队列1、候选消息队列2和候选消息队列3的虚拟消息队列的队列哈希值,在注销候选消息队列3时,将候选消息队列3的虚拟消息队列7、8、9的队列哈希值从list中删除。
如图8所示,为本申请实施例中的一种轮询任务的流程示意图,包括以下步骤:
S801:向Redis发送中间查询请求获取当前队列数量;
S802判断Redis是否存在队列数的配置,若是,执行步骤S803,若否,执行步骤S806;
S803:判断当前队列数量是否大于实际数量,若是,执行步骤S804,若否,执行步骤S805;
S804:新增注册相应数量的候选消息队列;
S805:注销相应数量的候选消息队列;
S806:睡眠30秒;
S807:将内存队列数保存为当前队列数量。
本申请实施例中的云服务器的创建任务分发方法仍然由接入层执行,即服务器为接入层的一部分,相关技术中接入层直接通过取模的方式,确定分发的消息队列,而本申请中的接入层如图9所示,在接收到创建请求时,通过静态路由和动态路由的方式确定分发的消息队列,并通过轮询Redis的方式,进行队列数量的调整,从Redis里周期获取队列数量的方式,更新队列数量时,做到秒级生效,老的方式是从配置里获取,更新队列需要更改配置,重启服务,生效慢,且服务实例的队列数不是在秒级内统一生效,导致部分任务投递到老的队列,部分任务投递到新的队列,造成数据错乱。
在步骤S303中,通过以下方式筛选中间消息队列:
将各队列哈希值按照从小到大的顺序排序,获得排序后的各队列哈希值;通过二分查找法,从排序后的各队列哈希值中查找出目标队列哈希值,其中,目标队列哈希值为大于参数哈希值的各队列哈希值中,最小的队列哈希值;将目标队列哈希值对应的虚拟消息队列,作为中间消息队列。
例如,排序后的队列哈希值为:11328、13456、24689、33759、55681、78691,参数哈希值为15684,则目标队列哈希值为24689,24689对应的虚拟消息队列为虚拟消息队列3,将虚拟消息队列3作为中间消息队列。
可选的,当各队列哈希值中,不存在大于参数哈希值的队列哈希值时,将预先指定的虚拟消息队列作为中间消息队列。
预先指定的虚拟消息队列可以是任一虚拟消息队列,但是,为了保证分发的均匀,优先指定序列号为0的虚拟消息队列,即对应的队列哈希值为=最小的虚拟消息队列。
上文中,在注册queue时保存了一个list,在这个list中使用二分查找,找到partition_hash_value(参数哈希值)在list中应该插入的位置的值即序列号(虚拟消息队列的标识信息),通过序列号可以查找到其对应的虚拟queue,再通过虚拟queue获取到对应的真实queue number(候选消息队列)。
如图10所示,为本申请实施例中的一种哈希环的示意图,以候选消息队列1-4为例,每个候选消息队列对应3个虚拟消息队列,由于每个虚拟消息队列的队列标识信息由{queue_name}{queue_number}的格式,因此对应同一候选消息队列的虚拟消息队列对应的队列标识信息的前几位是相同的,在经过哈希算法后获得的队列哈希值的前几位也是相同的,将队列哈希值按照从小到大的顺序排列形成哈希环,在哈希环中对应同一候选消息队列的虚拟消息队列的队列哈希值是相邻的,在图10所示的哈希环中,参考哈希值小于等于30000时,将任务分发至候选消息队列1,参考哈希值大于30000,且小于等于60000时,将任务分发至候选消息队列2,参考哈希值大于60000,且小于等于90000时,将任务分发至候选消息队列3,参考哈希值大于90000时,将任务分发至候选消息队列4。
与现有技术相比,不对队列数量取模,而是对固定值2^64取模,结合虚拟queue节点的引入,将原本单个点的hash映射,转变为在一个环上的某个片段的映射,可避免数据偏斜。并且,在队列扩容和缩容时,上述算法可确保只有少数部分partition的路由发生变化,使得不会发生大部分consumer同时拉取数据库数据造成整体吞吐下降,创建任务慢,产品体验差的问题。
基于上述方式,增加了虚拟节点的概念,partition映射到queue采用了哈希环的方式,不是映射到某个点,而是某个片段,这种方式,可确保partition打散到多个queue上,避免数据偏斜,造成任务集中,处理慢的问题,同时,当队列数扩容和缩容时,可即时生效,策略上相比传统的方式,可避免大部分partition的路由发生变化,造成大量消费者同时拉取数据库数据,造成数据库压力,可能导致慢查询,或者数据库负载高等问题,进而导致集群处理慢,通过本发明的算法策略,可控制只有少数部分partition的路由发生变化,从而保障集群的稳定性。
如图11所示,为本申请实施例中的一种获取动态路由方法的流程示意图,包括以下步骤:
S1101:判断参考哈希值是否存在对应的目标队列哈希值,若是,执行步骤S1102,若否执行步骤S1103;
S1102:将目标队列哈希值对应的虚拟消息队列作为中间消息队列;
S1103:将预先设置的虚拟消息队列作为中间消息队列;
S1104:将创建任务下发至中间消息队列对应的候选消息队列。
如图12所示,为本申请实施例中的一种云服务器的创建任务分发方法的逻辑示意图,服务器接收云服务器的创建请求,并从创建请求中提取出创建参数组为“A03S6”,基于“A03S6”向数据库中查询,确定未存储队列映射关系,则将创建参数组转换为参数哈希值为“75463”,每个候选消息队列对应3个虚拟消息队列,虚拟消息队列1-9按照从小到大的顺序在圆环中排序,查找在各队列哈希值中查找目标队列哈希值为“80000”,则中间消息队列为虚拟消息队列8,将创建任务分发至虚拟消息队列8对应的候选消息队列3。
基于相同的发明构思,本申请实施例还提供一种云服务器的创建任务分发装置。如图13所示,其为云服务器的创建任务分发装置1300的结构示意图,可以包括:
接收单元1301,用于接收用于创建云服务器的创建请求;其中,创建请求中包含创建参数集,创建参数集包含:待创建的云服务器对应的物理机的至少一个属性参数;
第一分发单元1302,用于当数据库中存储有创建参数集的队列映射关系时,基于队列映射关系,从各候选消息队列中获得创建参数集对应的目标消息队列,并将创建任务下发至目标消息队列;
第二分发单元1303,用于当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,并基于参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从各虚拟消息队列中筛选出中间消息队列,以及将创建任务下发至中间消息队列对应的候选消息队列;其中,每个候选消息队列对应多个虚拟消息队列。
在本申请实施例中,接收到云服务器的创建请求后,当数据库中存储有创建请求中包含的创建参数集的队列映射关系时,基于队列映射关系,确定将创建任务下发至对应的目标消息队列,通过指定目标消息队列的方式,可以为一些请求频率较高的创建参数集,设置单独的消息队列,既可以加速对此创建参数集对应的创建请求的处理,也避免因为此创建参数集占用资源较多,影响对其他创建请求的处理;
当数据库中未存储队列映射关系时,将创建参数集转换为整数类型的参数哈希值,基于参数哈希值与各虚拟消息队列的队列哈希值的大小关系,筛选出中间消息队列,将创建任务下发至中间消息队列对应的候选消息队列,通过引入虚拟消息队列,增加了任务分发过程中待选的队列的数量,使得创建任务能够尽量分散到不同的消息队列,避免因队列数太少造成分发不均,实现消息队列间的负载均衡,进而提升消息队列的整体吞吐和性能,提高任务处理效率,并且通过哈希值之间的大小关系筛选消息队列的方式,在消息队列增加或减少时,也可保障只有少量创建任务会被分配到新的消息队列,保障服务的稳定性。
可选的,装置还包括查询单元1304,用于
向远程字典服务发送用于获取初始队列数量的查询请求,并接收返回的第一应答消息,第一应答消息包含用于指示初始队列数量的指示信息;
当指示信息不为空时,按照初始队列数量注册相应数量的候选消息队列;
当指示信息为空时,按照默认队列数量注册相应数量的候选消息队列。
可选的,查询单元1304具体用于:
分别为注册的各候选消息队列设置预设数量的虚拟消息队列。
可选的,查询单元1304还用于:
按照预设时间间隔,向远程字典服务发送用于获取当前队列数量的查询请求,并接收返回的第二应答消息,第二应答消息包含用于指示当前队列数量的指示信息,当前队列数量,是基于注册的各候选消息队列的运行状态确定,并存储至远程字典服务中的;
当当前队列数量,与当前注册的各候选消息队列的实际数量不同时,按照当前队列数量,对实际数量进行更新。
可选的,查询单元1304还用于:
当当前队列数量大于实际数量时,基于当前队列数量和实际数量之间的差值,新增对应数量的候选消息队列,并分别为新增的各候选消息队列设置预设数量的虚拟消息队列;
当当前队列数量小于实际数量时,基于当前队列数量和实际数量之间的差值,注销对应数量的候选消息队列,以及对应数量的候选消息队列的虚拟消息队列。
可选的,第二分发单元1303具体用于:
将各队列哈希值按照从小到大的顺序排序,获得排序后的各队列哈希值;
通过二分查找法,从排序后的各队列哈希值中查找出目标队列哈希值,其中,目标队列哈希值为大于参数哈希值的各队列哈希值中,最小的队列哈希值;
将目标队列哈希值对应的虚拟消息队列,作为中间消息队列。
可选的,第二分发单元1303还用于:
当各队列哈希值中,不存在大于参数哈希值的队列哈希值时,将预先指定的虚拟消息队列作为中间消息队列。
可选的,第二分发单元1303还用于通过以下方式获得各队列哈希值:
针对各虚拟消息队列,分别执行以下操作:
基于一个虚拟消息队列的标识信息,和一个虚拟消息队列对应的候选消息队列的标识信息,获得队列标识信息;
基于预设的哈希算法和队列标识信息,获得一个虚拟消息队列的队列哈希值。
可选的,队列映射关系,是在创建参数集对应的历史创建任务的数量符合预设条件时,建立并存储至数据库的。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
与上述方法实施例基于同一发明构思,本申请实施例中还提供了一种电子设备。在一种实施例中,该电子设备可以是服务器,如图2所示的服务器。在该实施例中,电子设备的结构可以如图14所示,包括存储器1401,通讯模块1403以及一个或多个处理器1402。
存储器1401,用于存储处理器1402执行的计算机程序。存储器1401可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及运行即时通讯功能所需的程序等;存储数据区可存储各种即时通讯信息和操作指令集等。
存储器1401可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器1401也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);或者存储器1401是能够用于携带或存储具有指令或数据结构形式的期望的计算机程序并能够由计算机存取的任何其他介质,但不限于此。存储器1401可以是上述存储器的组合。
处理器1402,可以包括一个或多个中央处理单元(central processing unit,CPU)或者为数字处理单元等等。处理器1402,用于调用存储器1401中存储的计算机程序时实现上述云服务器的创建任务分发方法。
通讯模块1403用于与终端设备和其他服务器进行通信。
本申请实施例中不限定上述存储器1401、通讯模块1403和处理器1402之间的具体连接介质。本申请实施例在图14中以存储器1401和处理器1402之间通过总线1404连接,总线1404在图14中以粗线描述,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线1404可以分为地址总线、数据总线、控制总线等。为便于描述,图14中仅用一条粗线描述,但并不描述仅有一根总线或一种类型的总线。
存储器1401中存储有计算机存储介质,计算机存储介质中存储有计算机可执行指令,计算机可执行指令用于实现本申请实施例的云服务器的创建任务分发方法。处理器1402用于执行上述的云服务器的创建任务分发方法,如图3所示。
在另一种实施例中,电子设备也可以是其他电子设备,如图2所示的终端设备。在该实施例中,电子设备的结构可以如图15所示,包括:通信组件1510、存储器1520、显示单元1530、摄像头1540、传感器1550、音频电路1560、蓝牙模块1570、处理器1580等部件。
通信组件1510用于与服务器进行通信。在一些实施例中,可以包括电路无线保真(Wireless Fidelity,WiFi)模块,WiFi模块属于短距离无线传输技术,电子设备通过WiFi模块可以帮助用户收发信息。
存储器1520可用于存储软件程序及数据。处理器1580通过运行存储在存储器1520的软件程序或数据,从而执行终端设备的各种功能以及数据处理。存储器1520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。存储器1520存储有使得终端设备能运行的操作系统。本申请中存储器1520可以存储操作系统及各种应用程序,还可以存储执行本申请实施例中云服务器的创建任务分发方法的计算机程序。
显示单元1530还可用于显示由用户输入的信息或提供给用户的信息以及终端设备的各种菜单的图形用户界面(graphical user interface,GUI)。具体地,显示单元1530可以包括设置在终端设备正面的显示屏1532。其中,显示屏1532可以采用液晶显示器、发光二极管等形式来配置。显示单元1530可以用于显示本申请实施例中的云服务器的创建任务分发用户界面等。
显示单元1530还可用于接收输入的数字或字符信息,产生与终端设备的用户设置以及功能控制有关的信号输入,具体地,显示单元1530可以包括设置在终端设备正面的触摸屏1531,可收集用户在其上或附近的触摸操作,例如点击按钮,拖动滚动框等。
其中,触摸屏1531可以覆盖在显示屏1532之上,也可以将触摸屏1531与显示屏1532集成而实现终端设备的输入和输出功能,集成后可以简称触摸显示屏。本申请中显示单元1530可以显示应用程序以及对应的操作步骤。
摄像头1540可用于捕获静态图像,用户可以将摄像头1540拍摄的图像通过应用发布评论。摄像头1540可以是一个,也可以是多个。物体通过镜头生成光学图像投射到感光元件。感光元件可以是电荷耦合器件(charge coupled device,CCD)或互补金属氧化物半导体(complementary metal-oxide-semiconductor,CMOS)光电晶体管。感光元件把光信号转换成电信号,之后将电信号传递给处理器1580转换成数字图像信号。
终端设备还可以包括至少一种传感器1550,比如加速度传感器1551、距离传感器1552、指纹传感器1553、温度传感器1554。终端设备还可配置有陀螺仪、气压计、湿度计、温度计、红外线传感器、光传感器、运动传感器等其他传感器。
音频电路1560、扬声器1561、传声器1562可提供用户与终端设备之间的音频接口。音频电路1560可将接收到的音频数据转换后的电信号,传输到扬声器1561,由扬声器1561转换为声音信号输出。终端设备还可配置音量按钮,用于调节声音信号的音量。另一方面,传声器1562将收集的声音信号转换为电信号,由音频电路1560接收后转换为音频数据,再将音频数据输出至通信组件1510以发送给比如另一终端设备,或者将音频数据输出至存储器1520以便进一步处理。
蓝牙模块1570用于通过蓝牙协议来与其他具有蓝牙模块的蓝牙设备进行信息交互。例如,终端设备可以通过蓝牙模块1570与同样具备蓝牙模块的可穿戴电子设备(例如智能手表)建立蓝牙连接,从而进行数据交互。
处理器1580是终端设备的控制中心,利用各种接口和线路连接整个终端的各个部分,通过运行或执行存储在存储器1520内的软件程序,以及调用存储在存储器1520内的数据,执行终端设备的各种功能和处理数据。在一些实施例中,处理器1580可包括一个或多个处理单元;处理器1580还可以集成应用处理器和基带处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,基带处理器主要处理无线通信。可以理解的是,上述基带处理器也可以不集成到处理器1580中。本申请中处理器1580可以运行操作系统、应用程序、用户界面显示及触控响应,以及本申请实施例的云服务器的创建任务分发方法。另外,处理器1580与显示单元1530耦接。
在一些可能的实施方式中,本申请提供的云服务器的创建任务分发方法的各个方面还可以实现为一种程序产品的形式,其包括计算机程序,当程序产品在电子设备上运行时,计算机程序用于使电子设备执行本说明书上述描述的根据本申请各种示例性实施方式的云服务器的创建任务分发方法中的步骤,例如,电子设备可以执行如图3中所示的步骤。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
本申请的实施方式的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括计算机程序,并可以在电子设备上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被命令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由命令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的计算机程序,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。计算机程序可以完全地在用户电子设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户电子设备上部分在远程电子设备上执行、或者完全在远程电子设备或服务器上执行。在涉及远程电子设备的情形中,远程电子设备可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户电子设备,或者,可以连接到外部电子设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本申请方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用计算机程序的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序命令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序命令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的命令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序命令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的命令产生包括命令装置的制造品,该命令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序命令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的命令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (12)

1.一种云服务器的创建任务分发方法,其特征在于,所述方法包括:
接收用于创建云服务器的创建请求;其中,所述创建请求中包含创建参数集,所述创建参数集包含:待创建的云服务器对应的物理机的至少一个属性参数;
当数据库中存储有所述创建参数集的队列映射关系时,基于所述队列映射关系,从各候选消息队列中获得所述创建参数集对应的目标消息队列,并将所述创建任务下发至所述目标消息队列;
当所述数据库中未存储所述队列映射关系时,将所述创建参数集转换为整数类型的参数哈希值,并基于所述参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从所述各虚拟消息队列中筛选出中间消息队列,以及将所述创建任务下发至所述中间消息队列对应的候选消息队列;其中,每个候选消息队列对应多个虚拟消息队列。
2.如权利要求1所述的方法,其特征在于,在所述接收用于创建云服务器的创建请求之前,还包括:
向远程字典服务发送用于获取初始队列数量的查询请求,并接收返回的第一应答消息,所述第一应答消息包含用于指示所述初始队列数量的指示信息;
当所述指示信息不为空时,按照所述初始队列数量注册相应数量的候选消息队列;
当所述指示信息为空时,按照默认队列数量注册相应数量的候选消息队列。
3.如权利要求2所述的方法,其特征在于,所述注册相应数量的候选消息队列,包括:
分别为注册的各候选消息队列设置预设数量的虚拟消息队列。
4.如权利要求2所述的方法,其特征在于,在所述注册相应数量的候选消息队列之后,还包括:
按照预设时间间隔,向所述远程字典服务发送用于获取当前队列数量的查询请求,并接收返回的第二应答消息,所述第二应答消息包含用于指示所述当前队列数量的指示信息,所述当前队列数量,是基于注册的各候选消息队列的运行状态确定,并存储至所述远程字典服务中的;
当所述当前队列数量,与当前注册的各候选消息队列的实际数量不同时,按照所述当前队列数量,对所述实际数量进行更新。
5.如权利要求4所述的方法,其特征在于,所述按照所述当前队列数量,对所述实际数量进行更新,包括:
当所述当前队列数量大于所述实际数量时,基于所述当前队列数量和所述实际数量之间的差值,新增对应数量的候选消息队列,并分别为新增的各候选消息队列设置预设数量的虚拟消息队列;
当所述当前队列数量小于所述实际数量时,基于所述当前队列数量和所述实际数量之间的差值,注销对应数量的候选消息队列,以及所述对应数量的候选消息队列的虚拟消息队列。
6.如权利要求1-5任一项所述的方法,其特征在于,所述基于所述参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从所述各虚拟消息队列中筛选出中间消息队列,包括:
将各队列哈希值按照从小到大的顺序排序,获得排序后的各队列哈希值;
通过二分查找法,从所述排序后的各队列哈希值中查找出目标队列哈希值,其中,所述目标队列哈希值为大于所述参数哈希值的各队列哈希值中,最小的队列哈希值;
将所述目标队列哈希值对应的虚拟消息队列,作为所述中间消息队列。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
当所述各队列哈希值中,不存在大于所述参数哈希值的队列哈希值时,将预先指定的虚拟消息队列作为所述中间消息队列。
8.如权利要求1-5任一项所述的方法,其特征在于,通过以下方式获得各队列哈希值:
针对所述各虚拟消息队列,分别执行以下操作:
基于一个虚拟消息队列的标识信息,和所述一个虚拟消息队列对应的候选消息队列的标识信息,获得队列标识信息;
基于预设的哈希算法和所述队列标识信息,获得所述一个虚拟消息队列的队列哈希值。
9.如权利要求1-5任一项所述的方法,其特征在于,所述队列映射关系,是在所述创建参数集对应的历史创建任务的数量符合预设条件时,建立并存储至所述数据库的。
10.一种云服务器的创建任务分发装置,其特征在于,包括:
接收单元,用于接收用于创建云服务器的创建请求;其中,所述创建请求中包含创建参数集,所述创建参数集包含:待创建的云服务器对应的物理机的至少一个属性参数;
第一分发单元,用于当数据库中存储有所述创建参数集的队列映射关系时,基于所述队列映射关系,从各候选消息队列中获得所述创建参数集对应的目标消息队列,并将所述创建任务下发至所述目标消息队列;
第二分发单元,用于当所述数据库中未存储所述队列映射关系时,将所述创建参数集转换为整数类型的参数哈希值,并基于所述参数哈希值,与各虚拟消息队列各自的队列哈希值之间的大小关系,从所述各虚拟消息队列中筛选出中间消息队列,以及将所述创建任务下发至所述中间消息队列对应的候选消息队列;其中,每个候选消息队列对应多个虚拟消息队列。
11.一种电子设备,其特征在于,其包括处理器和存储器,其中,所述存储器存储有计算机程序,当所述计算机程序被所述处理器执行时,使得所述处理器执行权利要求1~9中任一所述方法的步骤。
12.一种计算机可读存储介质,其特征在于,其包括计算机程序,当所述计算机程序在电子设备上运行时,所述计算机程序用于使所述电子设备执行权利要求1~9中任一所述方法的步骤。
CN202311483063.2A 2023-11-09 2023-11-09 云服务器的创建任务分发方法、装置、电子设备及介质 Active CN117221324B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311483063.2A CN117221324B (zh) 2023-11-09 2023-11-09 云服务器的创建任务分发方法、装置、电子设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311483063.2A CN117221324B (zh) 2023-11-09 2023-11-09 云服务器的创建任务分发方法、装置、电子设备及介质

Publications (2)

Publication Number Publication Date
CN117221324A true CN117221324A (zh) 2023-12-12
CN117221324B CN117221324B (zh) 2024-03-08

Family

ID=89051535

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311483063.2A Active CN117221324B (zh) 2023-11-09 2023-11-09 云服务器的创建任务分发方法、装置、电子设备及介质

Country Status (1)

Country Link
CN (1) CN117221324B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407146A (zh) * 2023-12-14 2024-01-16 江苏金恒信息科技股份有限公司 基于哈希算法满足时序性的调度方法、系统、介质及设备

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359295A (zh) * 2007-08-01 2009-02-04 阿里巴巴集团控股有限公司 一种批量任务调度分配方法及系统
US20100146122A1 (en) * 2007-12-26 2010-06-10 Symantec Corporation Balanced Consistent Hashing for Distributed Resource Management
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN109343972A (zh) * 2018-08-21 2019-02-15 平安科技(深圳)有限公司 任务处理方法及终端设备
CN109660607A (zh) * 2018-12-05 2019-04-19 北京金山云网络技术有限公司 一种业务请求分发方法、接收方法、装置及服务器集群
CN111240864A (zh) * 2020-01-13 2020-06-05 中国平安财产保险股份有限公司 异步任务处理方法、装置、设备及计算机可读存储介质
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
CN111629051A (zh) * 2020-05-26 2020-09-04 北京邮电大学 一种用于工业互联网标识解析系统的性能优化方法及装置
CN112132683A (zh) * 2020-09-18 2020-12-25 泰康保险集团股份有限公司 指令下发的方法、装置、电子设备和存储介质
CN115113997A (zh) * 2022-06-17 2022-09-27 云知声智能科技股份有限公司 一种任务调度方法、装置、电子设备及存储介质
CN115220876A (zh) * 2022-07-13 2022-10-21 中航金网(北京)电子商务有限公司 虚拟资源创建方法、装置、程序产品、介质及电子设备
CN116820795A (zh) * 2023-04-18 2023-09-29 上海百秋新网商数字科技有限公司 加快消息处理速度并维持处理顺序的方法及系统
CN116880990A (zh) * 2023-07-28 2023-10-13 重庆赛力斯新能源汽车设计院有限公司 任务执行方法、装置、电子设备及计算机可读存储介质

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101359295A (zh) * 2007-08-01 2009-02-04 阿里巴巴集团控股有限公司 一种批量任务调度分配方法及系统
US20100146122A1 (en) * 2007-12-26 2010-06-10 Symantec Corporation Balanced Consistent Hashing for Distributed Resource Management
US10701176B1 (en) * 2016-09-23 2020-06-30 Amazon Technologies, Inc. Messaging using a hash ring with host groups
CN107197035A (zh) * 2017-06-21 2017-09-22 中国民航大学 一种基于一致性哈希算法的亲和性动态负载均衡方法
CN109343972A (zh) * 2018-08-21 2019-02-15 平安科技(深圳)有限公司 任务处理方法及终端设备
CN109660607A (zh) * 2018-12-05 2019-04-19 北京金山云网络技术有限公司 一种业务请求分发方法、接收方法、装置及服务器集群
CN111240864A (zh) * 2020-01-13 2020-06-05 中国平安财产保险股份有限公司 异步任务处理方法、装置、设备及计算机可读存储介质
CN111629051A (zh) * 2020-05-26 2020-09-04 北京邮电大学 一种用于工业互联网标识解析系统的性能优化方法及装置
CN112132683A (zh) * 2020-09-18 2020-12-25 泰康保险集团股份有限公司 指令下发的方法、装置、电子设备和存储介质
CN115113997A (zh) * 2022-06-17 2022-09-27 云知声智能科技股份有限公司 一种任务调度方法、装置、电子设备及存储介质
CN115220876A (zh) * 2022-07-13 2022-10-21 中航金网(北京)电子商务有限公司 虚拟资源创建方法、装置、程序产品、介质及电子设备
CN116820795A (zh) * 2023-04-18 2023-09-29 上海百秋新网商数字科技有限公司 加快消息处理速度并维持处理顺序的方法及系统
CN116880990A (zh) * 2023-07-28 2023-10-13 重庆赛力斯新能源汽车设计院有限公司 任务执行方法、装置、电子设备及计算机可读存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117407146A (zh) * 2023-12-14 2024-01-16 江苏金恒信息科技股份有限公司 基于哈希算法满足时序性的调度方法、系统、介质及设备
CN117407146B (zh) * 2023-12-14 2024-03-08 江苏金恒信息科技股份有限公司 基于哈希算法满足时序性的调度方法、系统、介质及设备

Also Published As

Publication number Publication date
CN117221324B (zh) 2024-03-08

Similar Documents

Publication Publication Date Title
US10614117B2 (en) Sharing container images between mulitple hosts through container orchestration
EP3798833B1 (en) Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment
EP3103239B1 (en) Cloud service custom execution environment
CN109074377B (zh) 用于实时处理数据流的受管理功能执行
CN111953541B (zh) 告警信息处理方法、装置、计算机设备及存储介质
CN117221324B (zh) 云服务器的创建任务分发方法、装置、电子设备及介质
US10656972B2 (en) Managing idempotent operations while interacting with a system of record
US11443026B2 (en) Synchronizing data across multiple instances of an application in a cloud
US11909845B2 (en) Methods and systems for managing applications of a multi-access edge computing environment
US10902851B2 (en) Relaying voice commands between artificial intelligence (AI) voice response systems
CN114244595A (zh) 权限信息的获取方法、装置、计算机设备及存储介质
US10541878B2 (en) Client-space network monitoring
CN115461735A (zh) 具有边缘计算的媒体流式传输
US10430441B1 (en) Tagging resources of a remote computing service based on locality
CN117435215A (zh) 研发环境部署方法、系统、计算机设备和存储介质
KR20220147613A (ko) 멀티-테넌트 서버리스 환경들을 위한 멀티-레벨 캐시-메시-시스템
CN112988738A (zh) 用于区块链的数据分片方法和装置
US11706288B1 (en) Method, electronic device, and computer program product for processing query request
Saraf et al. A Review on Evolution of Architectures, Services, and Applications in Computing Towards Edge Computing
US11310297B2 (en) Computer-based systems configured to adjust data capacity in a data stream generated from multiple data producer applications and methods of use thereof
WO2024041081A1 (zh) 数据处理方法、装置、设备及可读存储介质
US20230034196A1 (en) Techniques for providing synchronous and asynchronous data processing
KR20230160392A (ko) 로컬 클라우드용 근거리 통신망(lan)과 함께 고가용성 제어기를 사용하기 위한 방법 및 장치
CN117579698A (zh) 缓存刷新方法、装置、设备及存储介质
CN113342837A (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