CN113794764A - 服务器集群的请求处理方法、介质和电子设备 - Google Patents

服务器集群的请求处理方法、介质和电子设备 Download PDF

Info

Publication number
CN113794764A
CN113794764A CN202111060159.9A CN202111060159A CN113794764A CN 113794764 A CN113794764 A CN 113794764A CN 202111060159 A CN202111060159 A CN 202111060159A CN 113794764 A CN113794764 A CN 113794764A
Authority
CN
China
Prior art keywords
request
target node
node
group
target
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.)
Pending
Application number
CN202111060159.9A
Other languages
English (en)
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.)
Xiaohongshu Technology Co ltd
Original Assignee
Xiaohongshu 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 Xiaohongshu Technology Co ltd filed Critical Xiaohongshu Technology Co ltd
Priority to CN202111060159.9A priority Critical patent/CN113794764A/zh
Publication of CN113794764A publication Critical patent/CN113794764A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/50Network services
    • H04L67/56Provisioning of proxy services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/63Routing a service request depending on the request content or context

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及云技术领域,公开了一种服务器集群的请求处理方法、介质和电子设备。该服务器集群包括至少一个节点群,各节点群中包括多个节点,该方法包括:确定目标节点群中响应第一请求的第一目标节点,并向第一目标节点发送第一请求;在第一预设时间内未获取到第一请求的处理结果的情况下,向目标节点群中满足第一预设条件的第二目标节点发送第一请求,并在接收到第一目标节点和/或第二目标节点对第一请求的处理结果后即认为完成对第一请求的处理。如此,可以避免在第一目标节点响应请求速度较慢的情况下需要长时间等待第一请求的运行结果,进而提高服务器集群响应请求的速度,提升用户体验。

Description

服务器集群的请求处理方法、介质和电子设备
技术领域
本申请涉及云技术领域,特别涉及一种服务器集群的请求处理方法、介质、电子设备。
背景技术
随着云技术的发展,服务器集群,例如Redis(Remote Dictionary Server,远程字典服务)集群,在数据存储中的应用越来越广泛。为提高服务器集群的性能,例如并发访问能力、数据可用性等,服务器集群通常包括多个节点群,并在节点群设置多个节点,例如设置一个主节点和至少一个从节点。随着人们对数据访问速度需求越来越高,对服务器集群的性能参数,例如P99时延(服务器集群响应99%的请求的时间的最大值,P99时延越低,服务器集群性能越好),要求越来越高,因此亟需提高服务器集群中各节点群的对用户的数据交换请求的响应速度。
发明内容
有鉴于此,本申请实施例提供一种服务器集群的请求处理方法、介质、电子设备,在节点群的一个节点响应用户的数据交换请求较慢时切换至另一节点响应该请求,提高了服务器集群响应数据交换请求的速度。
第一方面,本申请实施例提供了一种服务器集群的请求处理方法,服务器集群包括至少一个节点群,各节点群中包括多个节点,方法包括:确定目标节点群中响应第一请求的第一目标节点,并向第一目标节点发送第一请求;在第一预设时间内未获取到第一请求的处理结果的情况下,向目标节点群中满足第一预设条件的第二目标节点发送第一请求。
在本申请实施例中,可以在第一目标节点响应第一请求的速度较慢时切换并且第二目标节点满足第一预设条件的情况下切换至第二目标节点响应第一请求,避免由于第一目标节点响应第一速度较慢影响目标节点为群响应第一请求的速度,从而提高服务器集群响应请求的速度,提升计算用户体验。
在上述第一方面的一种可能实现中,上述确定目标节点群中响应第一请求的第一目标节点,具体包括:根据目标节点群多个节点的历史运行状态确定响应第一请求的第一目标节点。
在上述第一方面的一种可能实现中,上述根据目标节点群中多个节点的历史运行状态确定响应第一请求的第一目标节点,具体包括:将目标节点群的多个节点中,第二预设时间内P99时延最小的一个确定为第一目标节点。
在上述第一方面的一种可能实现中,上述第一预设时间为第一目标节点在第二预设时间内的P99时延。
在本申请实施例中,由于P99时延反应了第一目标节点正常情况下处理请求的平均时延,当等待请求处理结果的时间超过P99时延时,第一目标节点发生时延抖动概率较大。因此,将第一阈值设置为第一目标节点预设时间内的P99时延可以更准确反应第一目标节点的运行状态,从而可以避免第一阈值设置过高不能即时切换目标节点,也可以避免第一阈值设置过低占用目标节点群的资源。
在上述第一方面的一种可能实现中,上述第一预设条件,包括:第二目标节点对已发送但是没有返回的第一请求响应的等待时间小于第三预设时间。
在上述第一方面的一种可能实现中,上述第三预设时间为第二目标节点第四预设时间内的P50时延。
在本申请实施例中,由于P50时延反应了第二目标节点正常情况下处理请求的平均时延,在上述第二目标节点对已发送但是没有返回的第一请求响应的等待时间,小于第三预设时间即可说明第二目标节点运行状态良好,此时将第一请求发送至第二目标设备,如此可以避免在第二目标节点运行状态较差时将待处理请求分发至该节点,影响第二目标节点的性能。
在上述第一方面的一种可能实现中,上述第一预设条件,还包括:第二目标节点的并发访问量小于第一预设数量。
在本申请实施例中,可以避免在第二目标节点的并发访问量超过第一预设数量的情况下,即第二目标节点负荷较重的情况下将第一请求发送给第二目标节点,影响第二目标节点的性能。
在上述第一方面的一种可能实现中,上述方法还包括:获取第一请求的处理结果,第一请求的处理结果由第一目标节点和/或第二目标节点中的至少一个生成。
在上述第一方面的一种可能实现中,上述第一目标节点进一步被用于响应第二请求,其中第二请求和第一请求为有序请求,并且第二请求为第一请求的后一请求。
在本申请实施例中,可以无需确定响应第二请求的目标设备,而是将第二请求发送至响应第一目标节点,从而减小确定响应第二请求的第一目标节点的计算量,降低目标节点群的负荷。
在上述第一方面的一种可能实现中,上述方法还包括:更新第一目标节点和/或第二目标节点的历史运行状态。
在上述第一方面的一种可能实现中,上述第一目标节点为从节点。
在本申请实施例中,由于主节点通常要同时处理数据读取请求和数据写入请求,将第一目标节点指定为从节点可以减少主节点处理请求的数量,从而主节点可以将更多的资源用于处理数据写入请求,提高主节点的性能,进而提高目标节点群以及服务器集群的性能。
在上述第一方面的一种可能实现中,上述第二目标节点为主节点。
在本申请实施例中,由于从节点的数据是由主节点同步而得,将第二目标节点设置为主节点可以避免第一请求对应的数据还未由主节点同步至从节点导致无法获取到处理结果或获取到的处理结果不是最新的数据。
在上述第一方面的一种可能实现中,在第一请求包括多个子请求的情况下,向目标节点群中满足第一预设条件的第二目标节点发送第一请求,具体包括:分次向第二目标节点发送多个子请求,并且单次发送子请求的数量不超过第二预设数量。
在本申请实施例中,通过限制单次发送给第二目标节点的请求的数量,避免过多的向第二目标节点分发请求影响第二目标节点的性能。
在上述第一方面的一种可能实现中,上述目标节点群是根据第一请求对应中数据的标识信息确定,其中,标识信息为第一请求对应数据的键。
第二方面,本申请实施例提供了一种可读介质,该可读介质上存储有指令,指令在电子设备上执行时使电子设备实现上述第一方面及其可能实现提供的任一种请求处理方法。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括:存储器,用于存储由电子设备的一个或多个处理器执行的指令;以及处理器,是电子设备的处理器之一,用于执行存储器中存储的指令以实现上述第一方面及其可能实现提供的任一种请求处理方法。
附图说明
图1根据本申请的一些实施例,示出了一种Redis集群的结构示意图;
图2根据本申请的一些实施例,示出了一种客户端10与Redis集群20进行数据交换的交互流程图;
图3根据本申请的一些实施例,示出了Redis集群对有序请求进行处理的过程示意图;
图4根据本申请的一些实施例,示出了一种请求处理方法的流程示意图
图5A根据本申请的一些实施例,示出了Redis集群20各节点群未使用本申请实施例提供的请求处理方法时一段时内的P99时延曲线变化图;
图5B根据本申请的一些实施例,示出了Redis集群20各节点群使用本申请实施例提供的请求处理方法后一段时间内的P99曲线变化图;
图6据本申请的一些实施例,示出了一种请求处理方法的流程示意图;
图7根据本申请的一些实施例,示出了一种电子设备100的结构示意图。
具体实施方式
本申请的说明性实施例包括但不限于服务器集群的请求处理方法、介质、电子设备。
为便于理解本申请的技术方案,首先以Redis集群为例介绍服务器集群的结构及请求处理过程。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型的键值对(Key-Value,KV)数据库。其中,键值对数据库中存储的数据以“键”和“值”的形式进行存储,“键”对应一条数据的标识,“值”对应一条数据的具体内容。例如某一条数据为“name”-“Kevin”,则“name”为键,“Kevin”为值。在使用Redis时可以通过一条数据的“键”查询到该条数据,以对“值”进行读取或修改。Redis集群通常包括多个节点群,每一个节点群都有一个主节点(Master worker)和至少一个从节点(Slave worker),主节点和从节点都部署有Redis数据库,并且从节点和主节点存储的数据一致。
可以理解,在一些实施例中,节点群中的主节点可以处理数据读取请求,也可以处理数据写入请求。在另一些实施例中,节点群中的从节点只可以处理数据读取请求,并且从节点中存储的数据是由主节中存储的数据同步而得。
可以理解,一个节群包括至少一个电子设备,在一些实施例中,节点群的主节点和从节点可以是独立的电子设备,例如独立的服务器;在另一些实施例,节点群的主节点和从节点也可以是运行于电子设备中虚拟机,也即是说主节点和从节点可以为运行于相同或不同电子设备中的虚拟机,在此不做限定。
图1根据本申请的一些实施例,示出了一种Redis集群的结构示意图。如图1所示,Redis集群20包括代理节点201、节点群202、节点群203、节点群204,其中Redis集群中的数据存储于各节点群中。
此外,Redis集群20定义了客户端10与Redis集群20进行数据交换的执行流程,客户端10在获取到用户与Redis集群的数据交换请求(例如数据读取请求、数据写入请求等,以下简称请求)后,即将请求发送至代理节点201,代理节点201根据请求中的标识,例如“键”值,确定该请求对应的数据在哪一个节点群,并将该请求发给对应的节点群。节点群收到代理节点发送的请求后,即根据请求的具体内容对该请求进行处理,例如读取“值”、写入“值”等,并将处理结果传送给代理节点201。代理节点201收到节点群发送的处理结果后即发送给客户端10。
在一些实施例中,各节点群可以包括一个主节点和至少一个从节点,其中从节点与主节点存储的内容相同。例如,节点群202包括主节点2021和从节点2022、节点群203包括主节点2031和从节点2032、节点群204包括主节点2041和从节点2042。
可以理解,图1所示的Redis集群20的结构只是一种示例,在另一些实施例中,Redis集群20也可以包括更多或更少的模块,例如一个节点群中可以有多个从节点;还可以改变各模块的位置的连接关系,例如代理节点201可以设置于Redis集群20的外部,在此不做限定。
下面结合Redis集群20的结构介绍Redis集群20对数据交换请求的处理过程。
图2根据本申请的一些实施例,示出了通过客户端10与Redis集群20进行数据交换的交互流程图。图3根据本申请的一些实施例,示出了服务器集群对有序请求进行处理的过程示意图。下面结合图2和图3对Redis集群20对数据交换请求的处理过程进行描述。如图2所示,该交互流程包括如下步骤:
S201:客户端10将多个有序请求传送至代理节点201。例如,参考图3,在客户端接收到有序请求1、2、……、9时,即将有序请求1、请求2、……、请求9传送给代理节点201。其中,多个有序请求为处理结果需要按照多个请求的顺序返回至客户端10的请求。
S202:代理节点201确定响应请求的至少一个节点群。代理节点201根据接收到的有序请求的具体内容,确定响应请求的至少一个节点群。例如,参考图3,确定响应请求1、请求4和请求7的节点群为节点群202,响应请求2、请求5和请求8的节点群为节点群203,响应请求3、请求6和请求9的节点群为节点群204。
S203:代理节点201将请求传送至确定出的节点群。代理节点201根据确定出的响应请求的节点,将请求发送至对应的节点。例如,参考图3,将请求1、请求4和请求7发送到节点群202,将请求2、请求5和请求8发送至节点群203,将响应请求3、请求6和请求9的节点群为204。
S204:节点群按顺序处理请求。节点群在接收到代理节点201发送的请求后,即对请求进行处理,例如,获取请求对应的数据。在一些实施例中,如果一个节点群需要处理多个请求,则需要按照请求的顺序进行处理。例如,参考图3,节点群202依次从节点2022中读取请求1、请求4和请求7对应的数据R1、R4和R7,其他节点群的处理过程类似,在此不再赘述。
S205:节点群按请求的顺序将请求的处理结果传送至代理节点201。例如,参考图3,节点群202依次将请求1、请求4和请求7对应的数据R1、R4和R7传送给代理节点201,其他节点群的处理过程类似,在此不再赘述。
S206:代理节点201按请求的顺序将请求的处理结果传送至客户端10。代理节点201在获取到各个请求的对应的数据后,按照各个请求的先后顺序将各个请求对应的处理结果传送给客户端。例如,参考图3,代理节点201在接收到节点群202/203/204传送的各请求的处理结果后,即按照R1、R2、……、R9的顺序将结果传送给客户端10。
从上述Redis集群20对请求的处理过程可知,若响应请求的节点群中的节点所在的设备发生时延抖动会导致请求处理较慢,影响客户端10与Redis集群20进行数据交换的速度。并且,对于有序请求,Redis集群20需要按照请求的顺序将各请求的处理结果返回给客户端,在其中一个节点群的处理速度较慢时,会影响后续请求结果的传送。例如,当节点群203已经完成请求2的处理并将请求2对应的数据传送给代理节点201后,由于从节点2022网络波动,导致请求1并未完成。此时,代理节点201需要等到节点群202完成对请求1的处理,并在将请求1对应的数据R1发送至客户端10后才发送数据R2,如此增加了客户端10与Redis集群20进行数据交换的时间。
可以理解,时延抖动及节点响应请求的时延增加。例如,在一些实施例中,节点所在电子设备中的其他虚拟机大量占用资源会导致节点由于资源不足发生时延抖动;在另一些实施例中,节点所在电子设备网络吞吐量较大导致该电子设备中的至少部分节点网络波动也会导致时延抖动等;在另一些实施例中,当节点群进行数据压缩、数据整理(同步)时也可能会导致节点发生时延抖动。
为了解决上述问题,本申请实施例提供了一种服务器集群的请求处理方法,代理节点201在向第一节点(例如从节点)发送待处理请求后,在预设时间内未获取到节点群中第一节点对请求的处理结果的情况下,若该节点群中第二节点的运行状态满足预设条件,则向第二节点(例如主节点)发送该请求,代理节点201接收到第一节点或第二节点的处理结果即认为已完成该请求的处理。由于第一节点与第二节点同时发生时延抖动的概率较低,因此,可以提高节点群对请求的响应速度,从而可以减小后续请求的等待时间。
下面结合Redis集群20的结构,对申请实施例提供的请求处理方法进行详细介绍。
图4根据本申请的一些实施例,示出了一种服务器集群的请求处理方法的流程示意图。该请求处理方法的执行主体为代理节点201,如图4所示,该流程包括如下步骤:
S401:获取待处理请求,确定待处理请求的目标节点群,并根据该节点的主节点与从节点的历史运行状态确定运行待处理请求的第一目标节点。
可以理解,Redis集群20中不同的键值对存储于不同的节点群中,代理节点201在收到请求时,需要确定该请求对应的键值对存储的节点,也即是目标节点群。
在一些实施例中,参考图1,可以在Redis集群20的节点群中设置多个哈希槽(HashSlot),例如设置16384个哈希槽,每个哈希槽有不同的标识,例如哈希槽号,并将哈希槽分配给Redis集群20的各节点群,例如节点群202对应的哈希槽(Hash Slot)号为0~5500,节点群203对应的哈希槽(Hash Slot)号为5501~11000,节点群204对应的哈希槽(HashSlot)号为11001~16383。如此,代理节点201在收到一个请求时,可以对该请求对应的键进行哈希运算,例如通过16位CRC(Cyclic Redundancy Check,循环冗余校验)算法进行对该请求对应的键哈希运算,并将运算结果对16384求余得到该请求对应的哈希槽号,从而根据哈希槽号确定该请求对应的节点群。例如,待处理请求1对应的键为“name”,通过16位CRC算法对“name”进行哈希运算结果为十进制的36257,36257对16384求余的结果为3489,则请求1对应的哈希槽号为3489,也即是请求1对应的节点群为节点群202。
可以理解,通过16位CRC算法对待处理请求对应的键进行哈希运算只是一种示例,在另一些实施例中,也可以采用其他哈希运算方法对待处理请求的键进行处理,例如信息摘要算法中的MD4、MD5、SHS等,在此不做限定。
代理节点201在确定待处理请求的目标节点后,例如确定节点群202响应请求1后,即根据节点群202的主节点和从节点的历史运行状态,确定响应请求1的第一目标节点(主节点2021或从节点2022)。在一些实施例中,代理节点201可以根据主节点2021和从节点2022预设时长内响应请求的平均时延,例如过去10分钟内的P99时延,选取主节点2021和从节点2022中平均时延较小的一个作为第一目标节点。例如主节点2022的P99为40ms(毫秒),从节点2022的P99为20ms,则选取从节点2022作为第一目标节点。
在另一些实施例中,代理节点201也可以通过其他方式确定第一目标节点,例如根据主节点2021和从节点2022预设时间内响应请求最大时延等、主节点2021和从节点2022已经分发的请求数量、待处理请求的类型等,在此不做限定。
可以理解,在一些实施例中,代理节点201也可以指定在从节点中确定第一目标节点,以减轻主节点的负荷。例如,在一些实施例中,代理节点201可以指定从节点2022为第一目标节点,由于主节点2021要同时处理数据读取请求和数据写入请求,将第一目标节点指定为从节点2022可以减少主节点处理请求的数量,从而主节点2021可以将更多的资源用于处理数据写入请求,提高主节点2021的性能,进而提高目标节点群的性能。
可以理解,在一些实施例中,待处理请求可以包括多个请求的有序请求队列,此时代理节点201可以根据待处理请求中各个子请求对应的键确定响应不同子请求的节点群及该节点群中响应子请求的第一目标节点。
S402:向第一目标节点分发待处理请求。代理节点201根据确定出的第一目标节点,向该节点发送待处理请求,例如向从节点2022发送请求1。
例如,在一些实施例中,代理节点201中预设有Redis集群20各节点群及节点群中的各节点的IP(Internet Protocol)地址及端口号,代理节点201可以通过IP地址和端口号向不同的节点群或节点发送请求。
S403:检测是否获取到待处理请求的处理结果。
在一些实施例中,代理节点201可根据是否收到待处理请求对应的值或是否收到由第一目标节点发送的写入数据完成的标识确定是否获取到待处理请求的处理结果。代理节点201如果获取到待处理请求的处理结果,即转至步骤S408;否则转至步骤S404。
S404:检测等待处理结果的时间是否超过第一阈值。代理节点201可以在向第一目标节点分发待处理请求时开始计时,并根据计时时长确定等待处理结果的时间是否超过第一阈值。如果等待处理结果的时间超过第一阈值,则第一目标节点可能发生时延抖动,此时转至步骤S405;否则,如果等待处理结果的时间未超过第一阈值,则转至步骤S403继续等待处理结果。
可以理解,在一些实施例中,第一阈值可以为一个常量,例如50ms。另外一些情况中,本申请的实施例中,第一阈值被设置成第一目标节点预设时间内的P99时延。可以理解,P99时延反应了第一目标节点正常情况下处理请求的平均时延,当等待请求处理结果的时间超过P99时延时,第一目标节点发生时延抖动概率较大。因此,将第一阈值设置为第一目标节点预设时间内的P99时延可以更准确反应第一目标节点的运行状态,从而可以避免第一阈值设置过高不能即时切换目标节点,也可以避免第一阈值设置过低占用目标节点群的资源。
S405:检测第二目标节点的运行状态是否满足预设条件。代理节点201检测第二目标节点的运行状态是否满足预设条件,以确定第二目标节点是否有能力待处理请求。在第二目标节点的运行状态满足预设条件的情况下,即说明可以将待处理请求分发至第二目标节点,转至步骤S406;否则转至步骤S407。
可以理解,第二目标节点可以为目标节点中未分发过待处理请求的节点。在一些实施例中,第二目标节点可为主节点2021,此时由于从节点的数据是由主节点同步而得,将第二目标节点设置为主节点2021可以避免待处理请求对应的数据还未由主节点同步至从节点导致无法获取到处理结果或获取到的处理结果不是最新的数据。在另一些实施例中,若目标节点群中有多个从节点,第二目标节点也可以为从节点,以减小主机点的负荷。
可以理解,前述预设条件表征第二目标节点的运行状态,若第二目标节点的运行状态满足预设条件,即说明第二目标节点可以及时处理待响应请求,在一些实施例中,预设条件可包括以下条件中的至少一项:
a.第二目标节点处理待处理请求的等待时间小于第二阈值,其中,第二阈值可以为P50时延(响应50%的请求的时间的最大值,P50时延越低,服务器集群性能越好),也可以是一个常量,例如30ms,在此不做限定。也即是说第二目标节点在有待处理的其他任务,需要等待一定时间后才能开始处理待处理请求。在等待时间小于第二阈值,例如小于P50时延时,即表明第二目标节点运行状态良好,可以及时处理待处理请求;否则表明第二目标节点不能及时处理待处理请求,即不能向第二目标节点发送待处理请求。如此,可以避免在第二目标节点运行状态不佳时向第二目标节点分发待处理请求,影响第二节点的性能,进而影响节点群对待处理请求的响应速度。
可以理解,在一些实施例中,所有由第二目标节点处理的请求都会记录在第二目标节点中,例如存储于一个链表当中。代理节点201可以获取该链表中时间最早的请求的发送时间以及当前时间,当前时间与最早请求的发送时间即为前述等待时间。
b.第二目标节点的并发请求的数量小于第三阈值,例如10个。从而可以避免在第二目标节点运行状态较差和/或第二目标节点负荷较大时将待处理请求分发至该节点,影响第二目标节点的性能。
可以理解,在一些实施例中,预设条件也可以是其他可以确定第二目标节点是否能够处理待处理请求的条件,在此不做限定。
可以理解,在一些实施例中,若目标节点群有2个以上节点,在一个第二目标节点的运行状态不满足预设条件的情况下,代理节点201还可以检测另外的第二目标节点的运行状态,并在该节点的运行状态满足预设条件的情况下转至步骤S406。
S406:向第二目标节点分发待处理请求。代理节点201将等待时间超过第一阈值的待处理任务分发至步骤S405中确定的满足预设条件的第二目标节点。
在一些实施例中,如果分发至第二目标节点的待处理请求有多个或待处理请求包括有多个子请求,可以限制单次分发给第二目标节点的请求的数量,例如单次上限为10个,以避免过多的向第二目标节点分发请求影响第二目标节点的性能。可以理解,单次分发给第二目标节点的待处理请求的数量为10个只是一种示例,在另一些实施例中也可以采用其他数量,
S407:检测是否获取到待处理请求的处理结果。代理节点201检测是否获取到第一目标节点和/或第二目标节点发送的待处理请求的处理结果。代理节点201如果获取到待处理请求的处理结果,则转至步骤S408存储/输出处理结果;否则重复步骤S407继续等待运行结果。
可以理解,代理节点201收到的待处理请求的处理结果可以是来自第一目标节点,也可以来自第二目标节点。例如,在一些实施例中,若代理节点201向主节点2021分发待处理请求后,从节点2022先于主节点2021完成待处理请求,则代理节点201接收到的待处理请求的处理结果来自于从节点2022;若代理节点201向主节点2021分发待处理请求后,主节点2021先于从节点2022完成待处理请求,则代理节点201接收到的待处理请求的处理结果来自于主节点2021。
S408:保存/输出处理结果,并更新目标节点群主节点和/或从节点的历史运行状态。代理节点201获取到待处理请求的处理结果后,如果排在该请求前的请求的处理结果已经发送组客户端,则将该请求的处理结果发送至客户端;如果排在该请求前的请求的处理结果未发送至客户端10,则存储该请求的处理结果,待该请求前的请求的处理结果发送至客户端10后再发送该请求的处理结果。
可以理解,代理节点201在保存/输出处理结果后,还可以更新目标节点群主节点和/或从节点的历史运行状态,例如P99时延、P50时延等,以便于处理后续请求时能以最新的历史运行状态确定目标节点群中的第一目标节点。在一些实施例,若代理节点201只接收到主节点的处理结果,则可以更新主节点的历史运行状态;若代理节点201只接收从节点的处理结果,则可以更新从节点的历史运行状态;若代理节点201接收到了主节点和从节点的处理结果,则可以更新主节点和从节点的历史运行状态。
可以理解,在一些实施例中,代理节点201如果第二目标节点超过预设时间仍然没有获取到待处理请求的处理结果,并且目标节点群还有没有分发过待处理请求的节点,代理节点201可以参照上述步骤向第三目标节点分发待处理请求。
可以理解,在一些实施例中,若待处理请求为有序请求中的一个,并且待处理请求后还有其他后续请求,在获取到待处理请求的处理结果后,可以直接将后续请求分发至前述步骤S401确定的第一目标节点,从而减小确定第一目标节点的计算量,降低目标节点群的负荷。例如当待处理请求为图2所示的请求1,其后还有请求4,在获取到请求1的处理结果后,即可将请求4分发至前述步骤S401确定的第一目标节点,从而减小确定响应请求4的第一目标节点的计算量,降低目标节点群的负荷。
可以理解,前述步骤S401至步骤408的执行顺序只是一种示例,在另一些实施例中,可以合并或拆分部分步骤,也可以改变各步骤的执行顺序,在此不做限定。
通过本申请实施例提供的服务器集群的请求处理方法,可以提高Redis集群20中各节点群对请求的响应速度,从而可以减小后续请求的等待时间。
为进一步说明本申请实施例的效果,5A示出了Redis集群20各节点群未使用本申请实施例提供的服务器集群的请求处理方法时一段时内的P99时延曲线变化图、图5B示出了Redis集群20各节点群使用本申请实施例提供的服务器集群的请求处理方法后一段时间内的P99曲线变化图,其中横坐标表示时间,单位为小时,纵轴表示Redis集群20的P99时延,单位为毫秒。参考图5A在未使用本申请实施例提供的请求处理方法的情况下,Redis集群20中各节点群的P99时延集中在30ms附近;参考图5B,在使用本申请实施例提供的服务器集群的请求处理方法后,Redis集群20各节点群的P99时延集中在3.2ms附近。也即是说,使用本申请实施例提供的服务器集群的请求处理方法后,Redis集群20各节点群的P99时延降低约10倍,显著提高了Redis集群20各节点群响应请求的速度。
如前所述,图4所示的实施例提供的服务器集群的请求处理方法的执行主体为代理节点201,本申请实施例还提供一种服务器集群的请求处理方法,代理节点201确定待处理请求的目标节点群后,由目标节点群根据前述方法处理待处理请求,从而可以在提高Redis集群20中各节点群对请求的响应速度的同时,降低代理节点201的运行负荷,进一步提高Redis集群20的性能。
具体的,图6根据本申请的一些实施例,示出了一种请求处理方法的流程示意图。该方法的各流程由目标节点群执行,例如由节点群202/203/204执行,如图6所示,该方法具体包括步骤S601至S608,其中,步骤S602至步骤S607的执行过程可以参考步骤S402至步骤407,在此不再赘述。下面介绍步骤S601和步骤S608。
S601:获取待处理请求,并根据主节点与从节点的历史运行状态确定运行待处理请求的第一目标节点。目标节点群,例如节点群202/203/204从代理节点201获取待处理的请求,并在获取到待处理请求后根据主节点与从节点的历史运行状态确定运行待处理请求的第一目标节点。其中,确定第一目标节点的方法可以参考步骤S401,在此不再赘述。
S608:向代理节点201传送处理结果,并更新目标节点群主节点和/或从节点的历史运行状态。可以理解,目标节点群在获取到待处理请求的处理结果后,即向代理节点201发送该运行结果。
通过本申请实施例提供的服务器集群的请求处理方法,可以在提高Redis集群20中各节点群对请求的响应速度的同时,降低代理节点201的运行负荷,进一步提高Redis集群20的性能。
可以理解,前述各实施例以Redis集群为例介绍本申请实施例的服务器集群的请求处理方法只是一种示例,本申请各实施例提供的请求处理方法也适用于其他服务器集群,本申请实施例不做限定。
进一步,图7根据本申请的一些实施例,示出了一种可以执行前述各实施例提供的请求处理方法的电子设备100的结构示意图。可以理解,电子设备100可以是运行代理节点201的电子设备,也可也是Redis集群中的各个节点群,例如节点群202/203/204。如图7所示,电子设备100可以包括一个或多个处理器101、系统内存102、非易失性存储器(Non-Volatile Memory,NVM)103、通信接口104、输入/输出(I/O)设备105、以及用于耦接处理器101、系统内存102、非易失性存储器103、通信接口104和输入/输出(I/O)设备105的系统控制逻辑106。其中:
处理器101可以包括一个或多个单核或多核处理器。在一些实施例中,处理器101可以包括通用处理器和专用处理器(例如,图形处理器,应用处理器,基带处理器等)的任意组合。在一些实施例中,处理器101可以执行前述各实施例提供的请求处理方法的指令,例如对待处理请求对应的“键”进行哈希运算的指令等。
系统内存102是易失性存储器,例如随机存取存储器(Random-Access Memory,RAM),双倍数据率同步动态随机存取存储器(Double Data Rate Synchronous DynamicRandom Access Memory,DDR SDRAM)等。系统内存用于临时存储数据和/或指令,例如,在一些实施例中,系统内存102可以用于临时存储待处理请求的指令、待处理请求的处理结果等。
非易失性存储器103可以包括用于存储数据和/或指令的一个或多个有形的、非暂时性的计算机可读介质。在一些实施例中,非易失性存储器103可以包括闪存等任意合适的非易失性存储器和/或任意合适的非易失性存储设备,例如硬盘驱动器(Hard Disk Drive,HDD)、光盘(Compact Disc,CD)、数字通用光盘(Digital Versatile Disc,DVD)、固态硬盘(Solid-State Drive,SSD)等。非易失性存储器103也可以是可移动存储介质,例如安全数字(Secure Digital,SD)存储卡等。在一些实施例中,非易失性存储器103可以用于存储前述各实施例提供的请求处理方法的指令,也可以用于存储的键值对。
特别地,系统内存102和非易失性存储器103可以分别包括:指令107的临时副本和永久副本。指令107可以包括:由处理器101中的至少一个执行时使电子设备100实现本申请各实施例提供的请求处理方法。
网络接口104可以包括收发器,用于为电子设备100提供有线或无线通信接口,进而通过一个或多个网络与任意其他合适的设备进行通信。在一些实施例中,网络接口104可以集成于电子设备100的其他组件,例如网络接口104可以集成于处理器101中。在一些实施例中,电子设备100可以通过网络接口104和其他设备通信,例如Redis集群20的节点群202/203/204之间可以通过各自的网络接口104耦接,从而实现Redis集群20内部工作节点中指令、数据的传递。
输入/输出(I/O)设备105可以包括用户界面,使得用户能够与电子设备100进行交互。例如,在一些实施例中,输入/输出(I/O)设备105可以包括显示器等输出设备,用于显示Redis集群20的用户界面,还可以包括键盘、鼠标、触摸屏等输入设备。用户可以通过用户界面以及键盘、鼠标、触摸屏等输入设备与Redis集群20进行交互,以便于提交请求、查询数据等。
系统控制逻辑106可以包括任意合适的接口控制器,以电子设备100的其他模块提供任意合适的接口。例如在一些实施例中,系统控制逻辑106可以包括一个或多个存储器控制器,以提供连接到系统内存102和非易失性存储器103的接口。
在一些实施例中,处理器101中的至少一个可以与用于系统控制逻辑106的一个或多个控制器的逻辑封装在一起,以形成系统封装(System in Package,SiP)。在另一些实施例中,处理器101中的至少一个还可以与用于系统控制逻辑106的一个或多个控制器的逻辑集成在同一芯片上,以形成片上系统(System-on-Chip,SoC)。
可以理解,电子设备100可以是能够实现Redis集群20各部相关功能的任意电子设备,包括但不限于计算机、服务器、平板电脑、手持计算机等,本申请实施例不做限定。
可以理解,本申请实施例示出的电子设备100的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
本申请公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本申请的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
可将程序代码应用于输入指令,以执行本申请描述的各功能并生成输出信息。可以按已知方式将输出信息应用于一个或多个输出设备。为了本申请的目的,处理系统包括具有诸如例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器之类的处理器的任何系统。
程序代码可以用高级程序化语言或面向对象的编程语言来实现,以便与处理系统通信。在需要时,也可用汇编语言或机器语言来实现程序代码。事实上,本申请中描述的机制不限于任何特定编程语言的范围。在任一情形下,该语言可以是编译语言或解释语言。
在一些情况下,所公开的实施例可以以硬件、固件、软件或其任何组合来实现。所公开的实施例还可以被实现为由一个或多个暂时或非暂时性机器可读(例如,计算机可读)存储介质承载或存储在其上的指令,其可以由一个或多个处理器读取和执行。例如,指令可以通过网络或通过其他计算机可读介质分发。因此,机器可读介质可以包括用于以机器(例如,计算机)可读的形式存储或传输信息的任何机制,包括但不限于,软盘、光盘、光碟、只读存储器(CD-ROMs)、磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、磁卡或光卡、闪存、或用于利用因特网以电、光、声或其他形式的传播信号来传输信息(例如,载波、红外信号数字信号等)的有形的机器可读存储器。因此,机器可读介质包括适合于以机器(例如,计算机)可读的形式存储或传输电子指令或信息的任何类型的机器可读介质。
在附图中,可以以特定布置和/或顺序示出一些结构或方法特征。然而,应该理解,可能不需要这样的特定布置和/或排序。而是,在一些实施例中,这些特征可以以不同于说明性附图中所示的方式和/或顺序来布置。另外,在特定图中包括结构或方法特征并不意味着暗示在所有实施例中都需要这样的特征,并且在一些实施例中,可以不包括这些特征或者可以与其他特征组合。
需要说明的是,本申请各设备实施例中提到的各单元/模块都是逻辑单元/模块,在物理上,一个逻辑单元/模块可以是一个物理单元/模块,也可以是一个物理单元/模块的一部分,还可以以多个物理单元/模块的组合实现,这些逻辑单元/模块本身的物理实现方式并不是最重要的,这些逻辑单元/模块所实现的功能的组合才是解决本申请所提出的技术问题的关键。此外,为了突出本申请的创新部分,本申请上述各设备实施例并没有将与解决本申请所提出的技术问题关系不太密切的单元/模块引入,这并不表明上述设备实施例并不存在其它的单元/模块。
需要说明的是,在本专利的示例和说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
虽然通过参照本申请的某些优选实施例,已经对本申请进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本申请的精神和范围。

Claims (16)

1.一种服务器集群的请求处理方法,所述服务器集群包括至少一个节点群,各节点群中包括多个节点,其特征在于,所述方法包括:
确定目标节点群中响应第一请求的第一目标节点,并向所述第一目标节点发送所述第一请求;
在第一预设时间内未获取到所述第一请求的处理结果的情况下,向所述目标节点群中满足第一预设条件的第二目标节点发送所述第一请求。
2.根据权利要求1所述的方法,其特征在于,所述确定目标节点群中响应第一请求的第一目标节点,具体包括:
根据所述目标节点群多个节点的历史运行状态确定响应第一请求的第一目标节点。
3.根据权利要求2所述的方法,其特征在于,所述根据目标节点群中多个节点的历史运行状态确定响应第一请求的第一目标节点,具体包括:
将所述目标节点群的多个节点中,第二预设时间内P99时延最小的一个确定为第一目标节点。
4.根据权利要求1所述的方法,其特征在于,所述第一预设时间为所述第一目标节点在第二预设时间内的P99时延。
5.根据权利要求1所述的方法,其特征在于,所述第一预设条件,包括:
所述第二目标节点对已发送但是没有返回的所述第一请求响应的等待时间小于第三预设时间。
6.根据权利要求5所述的方法,其特征在于,所述第三预设时间为所述第二目标节点第四预设时间内的P50时延。
7.根据权利要求6所述的方法,其特征在于,所述第一预设条件,还包括:
所述第二目标节点的并发访问量小于第一预设数量。
8.根据权利要求1所述的方法,其特征在于,还包括:
获取所述第一请求的处理结果,所述第一请求的处理结果由所述第一目标节点和/或第二目标节点中的至少一个生成。
9.根据权利要求1所述的方法,其特征在于:
所述第一目标节点进一步被用于响应第二请求,其中所述第二请求和所述第一请求为有序请求,并且所述第二请求为所述第一请求的后一请求。
10.根据权利要求2所述的方法,其特征在于,还包括:更新所述第一目标节点和/或第二目标节点的历史运行状态。
11.根据权利要求1至10任一项所述的方法,其特征在于,所述第一目标节点为从节点。
12.根据权利要求11所述的方法,其特征在于,所述第二目标节点为主节点。
13.根据权利要求1至12任一项所述的方法,其特征在于,在所述第一请求包括多个子请求的情况下,所述向所述目标节点群中满足第一预设条件的第二目标节点发送所述第一请求,具体包括:
分次向所述第二目标节点发送所述多个子请求,并且单次发送子请求的数量不超过第二预设数量。
14.根据权利要求1至12任一项所述的方法,其特征在于:
所述目标节点群是根据所述第一请求对应中数据的标识信息确定,其中,所述标识信息为所述第一请求对应数据的键。
15.一种可读介质,其特征在于,所述可读介质上存储有指令,所述指令在电子设备上执行时使所述电子设备执行权利要求1至14任一项所述的请求处理方法。
16.一种电子设备,其特征在于,包括:
存储器,用于存储由电子设备的一个或多个处理器执行的指令;
以及处理器,是所述电子设备的处理器之一,用于执行所述存储器中存储的指令以实现权利要求1至14任一项所述的请求处理方法。
CN202111060159.9A 2021-09-10 2021-09-10 服务器集群的请求处理方法、介质和电子设备 Pending CN113794764A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111060159.9A CN113794764A (zh) 2021-09-10 2021-09-10 服务器集群的请求处理方法、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111060159.9A CN113794764A (zh) 2021-09-10 2021-09-10 服务器集群的请求处理方法、介质和电子设备

Publications (1)

Publication Number Publication Date
CN113794764A true CN113794764A (zh) 2021-12-14

Family

ID=78879913

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111060159.9A Pending CN113794764A (zh) 2021-09-10 2021-09-10 服务器集群的请求处理方法、介质和电子设备

Country Status (1)

Country Link
CN (1) CN113794764A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114285903A (zh) * 2021-12-16 2022-04-05 奇安信科技集团股份有限公司 请求处理方法、装置、系统及电子设备
CN116915867A (zh) * 2023-09-13 2023-10-20 北京嗨飞科技有限公司 一种网络数据传输方法、装置及系统
CN117112701A (zh) * 2023-10-20 2023-11-24 武汉吧哒科技股份有限公司 分布式数据库中的节点切换方法、计算机设备及存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375872A (zh) * 2018-09-27 2019-02-22 腾讯科技(深圳)有限公司 数据访问请求的处理方法、装置和设备及存储介质
CN110048896A (zh) * 2019-04-29 2019-07-23 广州华多网络科技有限公司 一种集群数据获取方法、装置及设备
CN110445828A (zh) * 2019-06-14 2019-11-12 平安科技(深圳)有限公司 一种基于Redis的数据分布式处理方法及其相关设备
CN111541762A (zh) * 2020-04-20 2020-08-14 广州酷狗计算机科技有限公司 数据处理的方法、管理服务器、设备及存储介质
CN112035215A (zh) * 2020-08-31 2020-12-04 腾讯科技(深圳)有限公司 节点集群的节点自治方法、系统、装置及电子设备
CN112202687A (zh) * 2020-12-03 2021-01-08 苏州浪潮智能科技有限公司 一种节点同步方法、装置、设备及存储介质
CN113014608A (zh) * 2019-12-19 2021-06-22 深圳云天励飞技术有限公司 一种流量分发控制方法、装置、电子设备及存储介质
CN113364874A (zh) * 2021-06-09 2021-09-07 网易(杭州)网络有限公司 基于区块链的节点同步方法、装置、存储介质及服务器

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109375872A (zh) * 2018-09-27 2019-02-22 腾讯科技(深圳)有限公司 数据访问请求的处理方法、装置和设备及存储介质
CN110048896A (zh) * 2019-04-29 2019-07-23 广州华多网络科技有限公司 一种集群数据获取方法、装置及设备
CN110445828A (zh) * 2019-06-14 2019-11-12 平安科技(深圳)有限公司 一种基于Redis的数据分布式处理方法及其相关设备
CN113014608A (zh) * 2019-12-19 2021-06-22 深圳云天励飞技术有限公司 一种流量分发控制方法、装置、电子设备及存储介质
CN111541762A (zh) * 2020-04-20 2020-08-14 广州酷狗计算机科技有限公司 数据处理的方法、管理服务器、设备及存储介质
CN112035215A (zh) * 2020-08-31 2020-12-04 腾讯科技(深圳)有限公司 节点集群的节点自治方法、系统、装置及电子设备
CN112202687A (zh) * 2020-12-03 2021-01-08 苏州浪潮智能科技有限公司 一种节点同步方法、装置、设备及存储介质
CN113364874A (zh) * 2021-06-09 2021-09-07 网易(杭州)网络有限公司 基于区块链的节点同步方法、装置、存储介质及服务器

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114285903A (zh) * 2021-12-16 2022-04-05 奇安信科技集团股份有限公司 请求处理方法、装置、系统及电子设备
CN114285903B (zh) * 2021-12-16 2024-04-19 奇安信科技集团股份有限公司 请求处理方法、装置、系统及电子设备
CN116915867A (zh) * 2023-09-13 2023-10-20 北京嗨飞科技有限公司 一种网络数据传输方法、装置及系统
CN117112701A (zh) * 2023-10-20 2023-11-24 武汉吧哒科技股份有限公司 分布式数据库中的节点切换方法、计算机设备及存储介质
CN117112701B (zh) * 2023-10-20 2024-01-19 武汉吧哒科技股份有限公司 分布式数据库中的节点切换方法、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
CN113794764A (zh) 服务器集群的请求处理方法、介质和电子设备
CN108055343B (zh) 用于机房的数据同步方法及装置
US11550819B2 (en) Synchronization cache seeding
CN110096220B (zh) 一种分布式存储系统、数据处理方法和存储节点
CN105468718B (zh) 数据一致性处理方法、装置和系统
CN110119304B (zh) 一种中断处理方法、装置及服务器
CN109901798B (zh) 数据存储方法及装置
US20190199794A1 (en) Efficient replication of changes to a byte-addressable persistent memory over a network
CN111061431B (zh) 一种分布式存储方法、服务器及客户端
CN109857545B (zh) 一种数据传输方法及装置
CN107861691B (zh) 一种多控存储系统的负载均衡方法和装置
CN106385377B (zh) 一种信息处理方法和系统
CN113094430B (zh) 一种数据处理方法、装置、设备以及存储介质
WO2017095820A1 (en) Methods and devices for acquiring data using virtual machine and host machine
US10521371B2 (en) Cache system and associated method
CN110910249B (zh) 一种数据处理方法、装置、节点设备及存储介质
CN107329798B (zh) 数据复制的方法、装置和虚拟化系统
CN117407159A (zh) 内存空间的管理方法及装置、设备、存储介质
CN112631994A (zh) 数据迁移方法及系统
CN110235113B (zh) 存储器控制器和用于数据处理的系统和方法
US11875152B2 (en) Methods and systems for optimizing file system usage
CN111858418B (zh) 一种基于远程直接内存访问rdma的内存通信方法及装置
US10374893B1 (en) Reactive non-blocking input and output for target device communication
CN115495433A (zh) 一种分布式存储系统、数据迁移方法及存储装置
JP5464449B2 (ja) 障害によるリブートを考慮した処理部間の不整合検出方法並びに共有装置及びクラスタシステム

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