CN111355816A - 服务器选取方法、装置、设备及分布式服务系统 - Google Patents
服务器选取方法、装置、设备及分布式服务系统 Download PDFInfo
- Publication number
- CN111355816A CN111355816A CN202010439377.2A CN202010439377A CN111355816A CN 111355816 A CN111355816 A CN 111355816A CN 202010439377 A CN202010439377 A CN 202010439377A CN 111355816 A CN111355816 A CN 111355816A
- Authority
- CN
- China
- Prior art keywords
- server
- partition
- calling request
- logic layer
- servers
- 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
Links
- 238000010187 selection method Methods 0.000 title claims abstract description 20
- 238000005192 partition Methods 0.000 claims abstract description 137
- 238000000034 method Methods 0.000 claims description 85
- 230000015654 memory Effects 0.000 claims description 44
- 238000004364 calculation method Methods 0.000 claims description 43
- 238000004422 calculation algorithm Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 18
- 238000013507 mapping Methods 0.000 claims description 13
- 238000000638 solvent extraction Methods 0.000 abstract description 15
- 230000006870 function Effects 0.000 description 31
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 14
- 230000006872 improvement Effects 0.000 description 9
- 238000004590 computer program Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000000750 progressive effect Effects 0.000 description 3
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000007795 chemical reaction product Substances 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 229910021389 graphene Inorganic materials 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- 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
-
- 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
- H04L67/1004—Server selection for load balancing
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
Abstract
本说明书提供一种服务器选取方法、装置、设备及分布式服务系统,通过将业务逻辑层的服务器进行分组,再根据调用请求中的调用请求标识,确定出不同调用请求对应的分区标识,根据分区标识确定出调用请求所对应的目标服务器分组,再基于调用请求标识从目标服务器分组中选取出目标服务器,由目标服务器执行调用请求中的请求内容。通过对调用请求进行分区,实现不同分区内的调用请求由不同分组内的业务逻辑层的服务器来执行,进一步实现了对业务逻辑层服务器的二次分区,使得一个业务逻辑层的服务器只需要连接部分状态层的服务器,降低了服务器的压力。
Description
技术领域
本说明书属于计算机技术领域,尤其涉及一种服务器选取方法、装置、设备及分布式服务系统。
背景技术
在大型服务器端应用集群里,按照功能映射到三层架构中,业务逻辑层往往由多个同构服务组成,而状态层往往是按照特定字段进行分区的。在服务器的调用选取时,连接层如何选择一个合适的业务服务器进行调用,业务服务器怎样选择一个合适的下游业务服务进行调用,是本领域面临的技术难题。通常可以通过随机选择或轮询的方式选择服务器,但是,大多数服务器都可能接收任意一个请求,所以需要调用链路上的所有服务器对所有状态层都可能建立连接,使得服务器压力比较大,并且,可能会造成乱选择服务器的情况,影响系统的局部性。
发明内容
本说明书实施例的目的在于提供一种服务器选取方法、装置、设备及分布式服务系统,降低了服务器的工作压力,提高了系统性能。
一方面,本说明书实施例提供了一种服务器选取方法,应用在风险防控系统中,所述方法包括:
接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
另一方面,本说明书提供了一种服务器选取装置,包括:
请求接收模块,用于接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
服务器分组选取模块,用于根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
服务器调用选取模块,用于根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
还一方面,本说明书实施例提供了一种服务器选取处理设备,至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述服务器选取方法。
再一方面,本说明书实施例提供了一种分布式服务系统,包括:接入层服务器、逻辑层服务器、状态层服务器,其中,
所述接入层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述服务器选取方法,以调用对应的逻辑层服务器;
所述逻辑层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述服务器选取方法,以调用下游的逻辑层服务器;
被调用的逻辑层服务器执行调用请求时,与对应的状态层服务器建立链接,以获取对应的状态层服务器中存储的数据。
本说明书提供的服务器选取方法、装置、设备及分布式服务系统,通过将业务逻辑层的服务器进行分组,再根据调用请求中的调用请求标识,确定出不同调用请求对应的分区标识,根据分区标识确定出调用请求所对应的目标服务器分组,再基于调用请求标识从目标服务器分组中选取出目标服务器,由目标服务器执行调用请求中的请求内容。通过对调用请求进行分区,实现不同分区内的调用请求由不同分组内的业务逻辑层的服务器来执行,进一步实现了对业务逻辑层服务器的二次分区,使得一个业务逻辑层的服务器只需要连接部分状态层的服务器,降低了服务器的压力,并且,相同的调用请求可以由同一个业务逻辑层的服务器来执行,确保了系统的局部性,提高了系统的性能。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本说明书一个实施例中提供的具有三层架构的服务集群的系统示意图;
图2是本说明书实施例提供的服务器选取方法实施例的流程示意图;
图3是本说明书又一个实施例中服务器选取的流程示意图;
图4是本说明书提供的服务器选取装置一个实施例的模块结构示意图;
图5是本说明书一个实施例中进行服务器选取的服务器的硬件结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
随着计算机技术、互联网技术的发展,服务集群的应用场景越来越多。一般服务集可以基于功能,分为三层架构,图1是本说明书一个实施例中提供的具有三层架构的服务集群的系统示意图,其中,接入层可以指与用户app(应用程序)、网页等建立长、端连接的服务器,业务逻辑层可以指处理业务逻辑的服务器,这里指无状态的服务器。状态层可以指提供状态存储服务的服务器,这里状态可以是永久存储的状态,也可以是暂存的状态,例如,数据库、分布式缓存等,状态层通常是按照特定字段进行分区的,如图1所示,状态层包括多个分区(分区1~n)。如图1所示,本说明书实施例提供的服务器选取方法可以应用在服务集群的系统中,如图1所示,图1中的业务逻辑层可以包括多个同构服务器即图1中的应用A、应用B。当接入层的服务器接收到调用请求后,可以根据调用请求调用业务逻辑层的服务器(如:应用A)即图1中的字符1表示的数据流,业务逻辑层的服务器根据调用请求可以直接调用状态层的服务器,获取状态层对应分区内的数据。当然,业务逻辑层的服务器根据调用请求还可能会调用下游的业务逻辑层的服务器即图1中的字符2表示的数据流(应用A调用应用B)。
业务逻辑层通常是没有分区的,业务逻辑层的服务器都可能接收任意一个请求,所以需要调用链路上的所有服务器对所有状态层都可能建立连接,而且相同的调用请求在前后不同的请求时间可能会由不同的业务逻辑层的服务器处理。本说明书实施例提供一种服务器选取方法,可以预先将业务逻辑层的服务器进行分组,再根据调用请求中的调用请求标识,确定出不同调用请求对应的分区标识,根据分区标识确定出调用请求所对应的目标服务器分组,再基于调用请求标识从目标服务器分组中选取出目标服务器,由目标服务器执行调用请求中的请求内容。通过对调用请求进行分区,实现不同分区内的调用请求由不同分组内的业务逻辑层的服务器来执行,进一步实现了对业务逻辑层服务器的分区,使得一个业务逻辑层的服务器只需要连接部分状态层的服务器,降低服务器的压力,并且,相同的调用请求可以由同一个业务逻辑层的服务器来执行,确保了系统的局部性,提高了系统的性能。
图2是本说明书实施例提供的服务器选取方法实施例的流程示意图。虽然本说明书提供了如下述实施例或附图所示的方法操作步骤或装置结构,但基于常规或者无需创造性的劳动在所述方法或装置中可以包括更多或者部分合并后更少的操作步骤或模块单元。在逻辑性上不存在必要因果关系的步骤或结构中,这些步骤的执行顺序或装置的模块结构不限于本说明书实施例或附图所示的执行顺序或模块结构。所述的方法或模块结构的在实际中的装置、服务器或终端产品应用时,可以按照实施例或者附图所示的方法或模块结构进行顺序执行或者并行执行(例如并行处理器或者多线程处理的环境、甚至包括分布式处理、服务器集群的实施环境)。
具体的一个实施例如图2所示,本说明书提供的服务器选取方法的一个实施例中,所述方法可以应用于服务器选取系统中,所述方法可以包括如下步骤:
步骤202、接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区。
在具体的实施过程中,接入层或者业务逻辑层的服务器都可以接收调用请求,当接入层的服务器接收到调用请求后,可以调用其下游的业务逻辑层的服务器,当业务逻辑层的服务器接收到调用请求后,可以调用其下游的业务逻辑层的服务器,当然业务逻辑层的服务器接收到调用请求后若不需要其他服务器协助,也可以直接连接状态层的服务器,从状态层中获取对应的数据。本说明书实施例中的调用请求可以理解为请求服务器执行某项动作的请求,如:可以是查询请求、执行某个业务如:扣款、转账、风险识别等的请求。通常调用请求中会带有调用请求标识,调用请求标识可以理解为唯一标识请求的id(Identitydocument,身份标识),实际应用中,可以是用户id、业务id等,具体可以根据实际应用而定,本说明书实施例不作具体限定。调用请求中还可以带有其他的信息如:请求类型等信息,本说明书实施例不作具体限定。
此外,本说明书实施例中还可以基于调用请求中的调用请求标识确定出对应的分区标识,分区标识可以理解为标识一个请求对应状态层服务器的分区,其中状态层服务器及状态层中的服务器,可以理解为状态层,是服务集群中的系统架构的一部分,具体含义可以参考上述实施例的记载,此处不再赘述。本说明书实施例中,可以基于调用请求与状态层分区之间的关系将不同的调用请求中的调用请求标识进行分区处理,保存不同调用请求标识与分区标识之间的对应关系,在接收到调用请求后直接基于二者之间的关系获取对应的分区标识,具体分区的方法可以基于实际需要进行选择,如:采用某种分组或分区算法,或者指定分区的规则等。也可以在接收到调用请求后采用固定的算法或规则直接计算调用请求标识对应的分区标识。
本说明书一些实施例中,可以预先利用哈希算法对不同调用请求标识进行哈希计算,根据哈希计算结果确定出各个调用请求对应的分区标识。
哈希算法可以将一个数据转换为一个标志,这个标志和源数据的每一个字节都有十分紧密的关系。在具体的实施过程中,可以选择一种哈希函数,对各个调用请求中的调用请求标识进行哈希计算,根据哈希计算结果确定出各个调用请求对应的分区标识。如:可以根据哈希计算结果,将具有相同特征的哈希计算结果作为一个分区标识,以将不同的调用请求进行分区,进一步对接收调用请求的业务逻辑层的服务器进行分区,降低服务器的压力。其中,可以先统计收集出不同调用请求标识,对不同调用请求标识进行哈希计算获得不同调用请求标识对应的分区标识,将分区标识与调用请求标识之间的对应关系进行保存,在接收到调用请求后,直接基于二者后之间的关系获取到调用请求所对应额分区标识。也可以在接收到调用请求后,再对调用请求标识进行哈希计算获得该调用请求标识对应的分区标识。在对调用请求标识进行哈希计算时,可以对整个调用请求标识进行哈希计算,也可以选择调用请求标识中能够表征业务含义或与状态层分区有一定关系的字符进行哈希计算,以确定出能够对应状态层分区的分区标识。
通过哈希计算,对各个调用请求进行分区,再基于分区标识从业务逻辑层服务器的分组中选择分区标识所对应的服务器分组,实现对业务逻辑层服务器的一次分区操作。
本说明书另一些实施例中,还可以将各个调用请求标识的指定位置的字符作为对应调用请求标识对应的分区标识。
在具体的实施过程中,可以预先设定分区标识的定义规则,即将调用请求标识中某些指定位置处的字符作为该调用请求标识所对应的分区标识,如:可以定义调用请求标识的末尾两位字符作为该调用请求标识对应的分区标识。具体可以根据实际业务场景而定,若调用请求标识中某些位置的字符表征了业务含义或者某些位置的字符只会在固定的字符集合如:0-9中选择,则可以将该位置处的字符作为调用请求标识对应的分区标识。直接指定调用请求标识中某些位置处的字符作为分区标识,不需要复杂的计算过程,能够快速实现对调用请求的分区,进一步实现对业务逻辑层的服务器的分区,为后续服务器的选取奠定了数据基础。
步骤204、根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组。
在具体的实施过程中,本说明书实施例提供的方法可以用于调用业务逻辑层的服务器,业务逻辑层的服务器通常不会随时间改变其逻辑,多次调用的结果通常是相同的,业务逻辑层一般是由多个同构服务组成,同构是指业务逻辑相同的服务,例如用户查询服务器,他们都是同构的,因为他们都是提供用户查询服务。同构服务可以指功能完全rpc(Remote Procedure Call Protocol,远程过程调用协议)调用的服务的实例。对于同构服务,其业务逻辑相同,因此相同的调用请求,执行的结果也是相同。本说明书实施例可以用于根据调用请求选取一个业务逻辑层的服务器来执行该请求,选取的服务器不会影响业务的执行。
在具体的实施过程中,可以对业务逻辑层的服务器进行分组处理,获得多个下游逻辑层服务器分组,如:可以按照服务器在系统中的上下游顺序对服务器进行分组如:从第一个下游服务器开始每10个服务器作为一组,也可以随机分组,或者按照其他的规则进行分组,本说明书实施例不作具体限定。需要说明的是,通常接收到调用请求的服务器要调用的都是其下游的服务器,可以对连接层下游的业务逻辑层服务器以及业务逻辑层中各个服务器的下游服务器进行分组,分组的方法可以根据实际需要进行选择,本说明书实施例不作具体限定。
本说明书一些实施例中,可以采用下述方法对服务器进行分组:
获取下游各个逻辑层服务器的地址信息;
利用哈希算法根据获取到的各个逻辑层服务器的地址信息,对逻辑层服务器进行分组,获得多个下游逻辑层服务器分组。
在具体的实施过程中,可以从系统的配置中心获取下游各个逻辑层服务器(即业务逻辑层的服务器)的地址信息即服务器的IP(Internet Protocol,网际互连协议)地址,其中下游服务器可以理解为在系统中处于接收调用请求的服务器的下游的服务器,具体可以根据系统架构从系统中的配置中心中获得。获取到下游各个逻辑层服务器的地址信息后,可以利用哈希算法,对各个逻辑层服务器的地址信息进行哈希分组计算,将下游的各个逻辑层服务器分为多个下游逻辑层服务器分组。例如:可以对各个逻辑层服务器的地址信息进行哈希计算,将哈希计算的结果在相同取值范围的分为一组,当然,也可以采用其他的哈希分组方式,本说明书实施例不作具体计算。 其中,哈希分组选择的哈希函数可以根据实际需要而定,本说明书实施例不作具体计算。预先将业务逻辑层的服务器进行分组,以使得后续不同分组内的服务器只需要接收部分调用请求,进一步只需要连接部分状态层的分区,降低了服务器的压力,提高了系统的性能。
此外,对业务逻辑层的服务器分组除了可以使用哈希函数分组,也可以按照固定规则分组,需要注意的是分组需要稳定,即和服务器增删次序无关。
在接收到调用请求后,可以根据分区标识,从划分好的多个下游逻辑层服务器分组中选择出一个目标服务器分组。分区标识可以表示调用请求与状态层的服务器分区之间的对应关系,在对业务逻辑层服务器进行分组后,不同下游逻辑层服务器分组在一定程度上也可以对应于不同的状态层分区。在接收到调用请求后,可以根据分区标识对应的状态层分区,选择出属于同一个状态层分区的下游逻辑层服务器分组作为目标服务器分组。
本说明书一个实施例中,所述根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组,可以包括:
根据所述分区标识利用哈希算法,从划分好的下游逻辑层服务器分组中选择目标服务器分组。
在具体的实施过程中,可以利用哈希函数基于调用请求中的分区标识,从多个下游逻辑层服务器分组中选择一个分组作为目标服务器分组。如:可以先对多个下游逻辑层服务器分组进行排序,再对分区标识进行哈希计算,对哈希计算结果进行取模运算,基于取模结果和下游逻辑层服务器分组的排序选取目标服务器分组,如果分组为空,可以按照次序选择下一个分组。其中,哈希计算使用的哈希函数的具体形式可以根据实际需要进行选择,本说明书实施例不作具体限定。
例如:假设有10服务器分组,10个服务器分组的排序分别为[0,1,2,3,4,5,6,7,8,9]。接收到调用请求后,对分区标识进行哈希计算后获得的哈希计算结果为123,对123进行取模运算获得取模结果为3,则可以确定排序序号为3的服务器分组为目标服务器分组。
当然,根据实际使用需要,还可以采用其他方法选择对应的目标服务器分组,如:可以采用相同的哈希算法对分区标识以及各个服务器分组中的服务器数量或服务器的地址信息等进行哈希计算,选择哈希计算结果与分区标识的哈希计算结果最相近的服务器分组作为目标服务器分组,本说明书实施例不作具体限定。
本说明书另一些实施例中,所述根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组,还可以包括:
预先建立不同分区标识与各个下游逻辑层服务器分组之间的映射关系;
基于所述映射关系,从预先划分好的下游逻辑层服务器分组中选择所述调用请求对应的目标服务器分组。
在具体的实施过程中,可以预先建立不同的分区标识与不同下游逻辑层服务器分组之间的映射关系,例如:分区标识为xxx的对应于分组组号为1的下游逻辑层服务器分组。在获取到调用请求中的分区标识后,可以根据该映射关系,获得与该分区标识对应的下游逻辑层服务器分组,即获取到目标服务器分组。通过建立映射关系的方式,可以实现简单快速地找出与调用请求对应的目标服务器分组。
此外,对于业务逻辑的服务器的分组可以在接收到调用请求之后,获取接收调用请求的服务器的各个下游的服务器进行分组,也可以预先将各个服务器的下游服务器均分好组,接收到调用请求后,直接使用。
步骤206、根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
在具体的实施过程中,选择出一个下游逻辑层服务器分组作为目标服务器分组后,可以根据调用请求中的调用请求标识,从目标服务器分组中选择一个服务器作为调用请求调用的服务器,执行调用请求中的命令。如:可以从目标服务器分组中随机选择一个服务器作为目标服务器,或者可以根据调用请求标识所属的业务类型等选取目标服务器分组中的服务器,具体可以根据实际使用场景而定,本说明书实施例不作具体限定。
本说明书一些实施例中,所述根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,可以包括:根据所述调用请求标识利用一致性哈希算法,从所述目标服务器分组中选择目标服务器。
在具体的实施过程中,可以利用一致性哈希算法,对调用请求标识和目标服务器分组中的各个服务器的地址信息进行一致性哈希计算,选择出目标服务器。一致性哈希算法可以理解为一种特殊的哈希算法,例如:可以先将整个哈希值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织。再采用哈希函数对目标服务器分组中的各个服务器的地址信息进行哈希计算,根据哈希计算结果确定出目标服务器分组中的各个服务器在圆环中的位置,再利用相同的哈希函数对调用请求标识进行哈希计算,确定出调用请求标识在圆环中的位置。从调用请求标识在圆环中的位置沿顺时针滚动,遇到的第一台服务器就是目标服务器。
利用一致性哈希算法可以快速准确的从目标服务器组中选择出目标服务器,以便快速的响应调用请求。基于一致性哈希的算法,同一个请求链路都是一样的,整个体系结构自上而下都会带来好处,例如单台服务器接受的请求种类变少、单台服务器缓存命中率上升、内存锁粒度变小、方便查找日志等等。
当然,也可以采用其他的方法从目标服务器分组中选择出目标服务器,如:可以参考上述选择目标服务器分组的方法,可以先对目标服务器分组中的服务器进行排序,再对调用请求标识进行哈希计算,对哈希计算结果进行取模运算,将服务器排序的序号与取模运算结果相同的服务器作为目标服务器。具体可以根据实际确定选择目标服务器的方法,本说明书实施例不作具体限定。
当然,选择目标服务器分组和选择目标服务器均使用到了哈希算法,两次计算的哈希函数可以相同也可以不同,具体可以根据实际需要设置哈希函数的具体内容。
本说明书实施例中提供的服务器选取方法,通过将业务逻辑层的服务器进行分组,再根据调用请求中的调用请求标识,确定出不同调用请求对应的分区标识,根据分区标识确定出调用请求所对应的目标服务器分组,再基于调用请求标识从目标服务器分组中选取出目标服务器,由目标服务器执行调用请求中的请求内容。通过对调用请求进行分区,实现不同分区内的调用请求由不同分组内的业务逻辑层的服务器来执行,进一步实现了对业务逻辑层服务器的二次分区,使得一个业务逻辑层的服务器只需要连接部分状态层的服务器,降低了服务器的压力,并且,相同的调用请求可以由同一个业务逻辑层的服务器来执行,确保了系统的局部性,提高了系统的性能。
图3是本说明书又一个实施例中服务器选取的流程示意图,下面结合图3具体介绍本申请的技术方案:
步骤1、从配置中心拉取该服务所需要调用的下游服务器地址信息,并将这些信息存储起来。(一般一致性哈希是使用有序数据结构存储、maglev一致性哈希会生成一个lookup表)。即从配置中心获取各个业务逻辑层的服务器的下游服务器的地址信息并保存。
步骤2、使用哈希函数hash1对业务逻辑层的服务器进行分组 ,例如分成M个组,M是正整数。
步骤3、接收到上游请求Q,请求Q是除了带有qid(调用请求标识)唯一标识,还带有分区信息sid(分区标识)。例如: qid(调用请求标识)末两尾可以表示数据分区即可以将qid(调用请求标识)末两尾作为分区标识sid。
步骤4、根据请求Q中的分区信息sid(分区标识),在M个分组中选取合适的分组,例如:可以先对M分组进行排序,然后对分区标识进行哈希计算,对哈希计算结果进行取模运算,基于取模运算结果和服务器分组的排序结果确定出目标服务器分组,如果分组为空,可以按照次序选择下一个分组。
步骤5、表示根据请求Q中的qid(调用请求标识),使用一致性哈希算法选择分组里面的服务器作为请求Q调用的目标服务器。
其中,步骤2中将服务器分组,除了可以使用哈希函数分组,也可以按照固定规则分组,需要注意的是分组需要稳定,即和服务器增删次序无关。步骤4中除了使用取模、如果冲突寻找下一个节点,也可以使用定义良好的哈希函数来解决。
需要说明的是,本说明书实施例中多次使用了哈希算法,每一次使用哈希算法时采用的哈希函数可以相同也可以不同,哈希函数的具体形式可以根据实际使用需要而定,本说明书实施例不作具体限定。
本说明书实施例将服务器rpc请求选择进行了分层,第一层是分区层,第二层是一致性哈希层,这样既保证了一致性哈希带来的调用链路固定的好处,又能够大大减少服务器对状态层的压力,因为大多数服务器实例只需要处理部分区的请求。本书明书实施例提供的方法,能够结合一致性哈希算法带来的调用链路固定的好处,还能够减少整个分布式系统对状态层的压力,因为每台服务器只需要连接少数几个数据分区了。例如,目前对数据库连接的压力是每个业务服务器都会连接所有的服务器,而如果底层采用两层式一致性哈希服务器选择方案后,一台服务器只需要连接少数几个分区的数据库。同时,基于一致性哈希算法,同一个请求链路都是一样的,整个体系结构自上而下都会带来好处,例如单台服务器接受的请求种类变少、单台服务器缓存命中率上升、内存锁粒度变小、方便debug找日志等等,提高了系统的性能。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参考方法实施例的部分说明即可。
基于上述所述的服务器选取方法,本说明书一个或多个实施例还提供一种用于服务器选取的装置。所述装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参考前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图4是本说明书提供的服务器选取装置一个实施例的模块结构示意图,如图4所示,本说明书中提供的服务器选取装置可以包括:请求接收模块41、服务器分组选取模块42、服务器调用选取模块43,其中:
请求接收模块41,可以用于接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
服务器分组选取模块42,可以用于根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
服务器调用选取模块43,可以用于根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
本说明书实施例提供的服务器选取装置,通过将业务逻辑层的服务器进行分组,再根据调用请求中的调用请求标识,确定出不同调用请求对应的分区标识,根据分区标识确定出调用请求所对应的目标服务器分组,再基于调用请求标识从目标服务器分组中选取出目标服务器,由目标服务器执行调用请求中的请求内容。通过对调用请求进行分区,实现不同分区内的调用请求由不同分组内的业务逻辑层的服务器来执行,进一步实现了对业务逻辑层服务器的二次分区,使得一个业务逻辑层的服务器只需要连接部分状态层的服务器,减少服务器的压力,并且,相同的调用请求可以由同一个业务逻辑层的服务器来执行,确保了系统的局部性,提高了系统的性能。
在上述实施例的基础上,本说明书一些实施例中,所述装置还包括服务器分组模块用于:
获取下游各个逻辑层服务器的地址信息;
利用哈希算法根据获取到的各个逻辑层服务器的地址信息,对逻辑层服务器进行分组,获得多个下游逻辑层服务器分组。
本说明书实施例,预先将业务逻辑层的服务器进行分组,以使得后续不同分组内的服务器只需要接收部分调用请求,进一步只需要连接部分状态层的分区,减少了服务器的压力,提高了系统的性能。
在上述实施例的基础上,本说明书一些实施例中,所述服务器分组选取模块具体用于:
根据所述分区标识利用哈希算法,从划分好的下游逻辑层服务器分组中选择目标服务器分组。
本说明书实施例,利用哈希算法实现从各个下游逻辑层服务器分组中选择合适的目标服务器分组的目的,以实现对业务逻辑层服务器进行分区的目的。
在上述实施例的基础上,本说明书一些实施例中,所述服务器分组选取模块具体用于:
预先建立不同分区标识与各个下游逻辑层服务器分组之间的映射关系;
基于所述映射关系,从划分好的下游逻辑层服务器分组中选择所述调用请求对应的目标服务器分组。
本说明书实施例,通过建立映射关系的方式,可以实现简单快速地找出与调用请求对应的目标服务器分组。
在上述实施例的基础上,本说明书一些实施例中,所述服务器调用选取模块具体用于:
根据所述调用请求标识利用一致性哈希算法,从所述目标服务器分组中选取目标服务器。
本说明书实施例,利用一致性哈希算法可以快速准确的从目标服务器组中选择出目标服务器,以便快速的响应调用请求。基于一致性哈希的算法,同一个请求链路都是一样的,整个体系结构自上而下都会带来好处,例如单台服务器接受的请求种类变少、单台服务器缓存命中率上升、内存锁粒度变小、方便查找日志等等。
在上述实施例的基础上,本说明书一些实施例中,所述装置还包括分区标识确定模块用于:
预先利用哈希算法对不同调用请求标识进行哈希计算,根据哈希计算结果确定出各个调用请求对应的分区标识。
本说明书实施例,通过哈希计算,对各个调用请求进行分区,再基于分区标识从业务逻辑层服务器的分组中选择分区标识所对应的服务器分组,实现对业务逻辑层服务器的一次分区操作。
在上述实施例的基础上,本说明书一些实施例中,所述装置还包括分区标识确定模块用于:
将各个调用请求标识的指定位置的字符作为对应调用请求标识对应的分区标识。
本说明书实施例,直接指定调用请求标识中某些位置处的字符作为分区标识,不需要复杂的计算过程,能够快速实现对调用请求的分区,进一步实现对业务逻辑层的服务器的分区,为后续服务器的选取奠定了数据基础。
需要说明的,上述所述的系统根据对应方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种服务器选取处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例的信息推荐数据处理方法,如:
接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
本说明书实施例还提供一种分布式服务系统,包括:接入层服务器、逻辑层服务器、状态层服务器,具体可以参见图1所示的系统框架,其中,接入层服务器、逻辑层服务器、状态层服务器的功能和含义参考上述实施例的记载,此处不再赘述。其中,
所述接入层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例中的服务器调用方法,以调用对应的逻辑层服务器,即图1中字符1表示的数据流;
所述逻辑层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例中的服务器调用方法,以调用下游的逻辑层服务器,即图1中字符2表示的数据流;
被调用的逻辑层服务器执行调用请求时,与对应的状态层服务器建立链接,以获取对应的状态层服务器中存储的数据。
需要说明的,上述所述的处理设备、分布式服务系统根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。
本说明书提供的服务器选取系统,也可以应用在多种数据分析处理系统中。所述系统或服务器或终端或处理设备可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例系统或服务器或终端或处理设备的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述核对差异数据的检测系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图5是本说明书一个实施例中进行服务器选取的服务器的硬件结构框图,该计算机终端可以是上述实施例中的服务器选取服务器或服务器选取装置。如图5所示服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图5中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图5所示不同的配置。
存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的服务器选取方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及资源数据更新。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果,如:
接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书实施例提供的上述服务器选取方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
需要说明的是说明书上述所述的装置、计算机存储介质、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机资源数据更新和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device, PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20 以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式资源数据更新环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程资源数据更新设备的处理器以产生一个机器,使得通过计算机或其他可编程资源数据更新设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程资源数据更新设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程资源数据更新设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (16)
1.一种服务器选取方法,所述方法包括:
接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
2.如权利要求1所述的方法, 所述方法还包括:
获取下游各个逻辑层服务器的地址信息;
利用哈希算法根据获取到的各个逻辑层服务器的地址信息,对逻辑层服务器进行分组,获得多个下游逻辑层服务器分组。
3.如权利要求1所述的方法,所述根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组,包括:
根据所述分区标识利用哈希算法,从划分好的下游逻辑层服务器分组中选择目标服务器分组。
4.如权利要求1所述的方法,所述根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组,包括:
预先建立不同分区标识与各个下游逻辑层服务器分组之间的映射关系;
基于所述映射关系,从划分好的下游逻辑层服务器分组中选择所述调用请求对应的目标服务器分组。
5.如权利要求1所述的方法,所述根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,包括:
根据所述调用请求标识利用一致性哈希算法,从所述目标服务器分组中选取目标服务器。
6.如权利要求1所述的方法,所述方法还包括:
预先利用哈希算法对不同调用请求标识进行哈希计算,根据哈希计算结果确定出各个调用请求对应的分区标识。
7.如权利要求1所述的方法,所述方法还包括:
将各个调用请求标识的指定位置的字符作为对应调用请求标识对应的分区标识。
8.一种服务器选取装置,包括:
请求接收模块,用于接收调用请求,所述调用请求中包括调用请求标识和基于所述调用请求标识确定出的分区标识;所述分区标识用于标识所述调用请求对应的状态层服务器的分区;
服务器分组选取模块,用于根据所述分区标识,在划分好的下游逻辑层服务器分组中选择目标服务器分组;
服务器调用选取模块,用于根据所述调用请求标识,从所述目标服务器分组中选择出目标服务器,作为所述调用请求调用的服务器。
9.如权利要求8所述的装置,所述装置还包括服务器分组模块用于:
获取下游各个逻辑层服务器的地址信息;
利用哈希算法根据获取到的各个逻辑层服务器的地址信息,对逻辑层服务器进行分组,获得多个下游逻辑层服务器分组。
10.如权利要求8所述的装置,所述服务器分组选取模块具体用于:
根据所述分区标识利用哈希算法,从划分好的下游逻辑层服务器分组中选择目标服务器分组。
11.如权利要求8所述的装置,所述服务器分组选取模块具体用于:
预先建立不同分区标识与各个下游逻辑层服务器分组之间的映射关系;
基于所述映射关系,从划分好的下游逻辑层服务器分组中选择所述调用请求对应的目标服务器分组。
12.如权利要求8所述的装置,所述服务器调用选取模块具体用于:
根据所述调用请求标识利用一致性哈希算法,从所述目标服务器分组中选取目标服务器。
13.如权利要求8所述的装置,所述装置还包括分区标识确定模块用于:
预先利用哈希算法对不同调用请求标识进行哈希计算,根据哈希计算结果确定出各个调用请求对应的分区标识。
14.如权利要求8所述的装置,所述装置还包括分区标识确定模块用于:
将各个调用请求标识的指定位置的字符作为对应调用请求标识对应的分区标识。
15.一种服务器选取处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-7任一项所述的方法。
16.一种分布式服务系统,包括:接入层服务器、逻辑层服务器、状态层服务器,其中,
所述接入层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-7任一项所述的方法,以调用对应的逻辑层服务器;
所述逻辑层服务器包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现权利要求1-7任一项所述的方法,以调用下游的逻辑层服务器;
被调用的逻辑层服务器执行调用请求时,与对应的状态层服务器建立链接,以获取对应的状态层服务器中存储的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010439377.2A CN111355816B (zh) | 2020-05-22 | 2020-05-22 | 服务器选取方法、装置、设备及分布式服务系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010439377.2A CN111355816B (zh) | 2020-05-22 | 2020-05-22 | 服务器选取方法、装置、设备及分布式服务系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111355816A true CN111355816A (zh) | 2020-06-30 |
CN111355816B CN111355816B (zh) | 2020-08-25 |
Family
ID=71197717
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010439377.2A Active CN111355816B (zh) | 2020-05-22 | 2020-05-22 | 服务器选取方法、装置、设备及分布式服务系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111355816B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965818A (zh) * | 2021-02-26 | 2021-06-15 | 平安普惠企业管理有限公司 | 一种服务集群单元化分组方法、装置、设备以及介质 |
CN113014650A (zh) * | 2021-03-01 | 2021-06-22 | 中国工商银行股份有限公司 | 针对数据请求的处理方法、装置、计算设备和介质 |
CN113051456A (zh) * | 2021-05-11 | 2021-06-29 | 北京字节跳动网络技术有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN113382061A (zh) * | 2021-06-08 | 2021-09-10 | 中国工商银行股份有限公司 | 基于云环境的服务处理方法、装置及系统 |
CN114650252A (zh) * | 2022-03-25 | 2022-06-21 | 华润数字科技(深圳)有限公司 | 基于企业服务总线的路由方法、装置及计算机设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170163494A1 (en) * | 2015-12-07 | 2017-06-08 | Bank Of America Corporation | Messaging queue spinning engine |
CN108881448A (zh) * | 2018-06-27 | 2018-11-23 | 杭州贝购科技有限公司 | Api请求的处理方法及装置 |
CN109492013A (zh) * | 2018-11-02 | 2019-03-19 | 北京京东金融科技控股有限公司 | 应用于数据库集群的数据处理方法、装置和系统 |
CN109714183A (zh) * | 2017-10-26 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 一种集群中的数据处理方法及装置 |
CN110019481A (zh) * | 2017-12-28 | 2019-07-16 | 中国移动通信集团河北有限公司 | 内存数据库访问方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102014169B (zh) * | 2010-12-22 | 2013-03-20 | 国家电网公司 | 分布式服务系统、分布式服务系统的任务执行方法和装置 |
-
2020
- 2020-05-22 CN CN202010439377.2A patent/CN111355816B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170163494A1 (en) * | 2015-12-07 | 2017-06-08 | Bank Of America Corporation | Messaging queue spinning engine |
CN109714183A (zh) * | 2017-10-26 | 2019-05-03 | 阿里巴巴集团控股有限公司 | 一种集群中的数据处理方法及装置 |
CN110019481A (zh) * | 2017-12-28 | 2019-07-16 | 中国移动通信集团河北有限公司 | 内存数据库访问方法、装置、设备及介质 |
CN108881448A (zh) * | 2018-06-27 | 2018-11-23 | 杭州贝购科技有限公司 | Api请求的处理方法及装置 |
CN109492013A (zh) * | 2018-11-02 | 2019-03-19 | 北京京东金融科技控股有限公司 | 应用于数据库集群的数据处理方法、装置和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965818A (zh) * | 2021-02-26 | 2021-06-15 | 平安普惠企业管理有限公司 | 一种服务集群单元化分组方法、装置、设备以及介质 |
CN113014650A (zh) * | 2021-03-01 | 2021-06-22 | 中国工商银行股份有限公司 | 针对数据请求的处理方法、装置、计算设备和介质 |
CN113051456A (zh) * | 2021-05-11 | 2021-06-29 | 北京字节跳动网络技术有限公司 | 请求处理方法、装置、电子设备和计算机可读介质 |
CN113382061A (zh) * | 2021-06-08 | 2021-09-10 | 中国工商银行股份有限公司 | 基于云环境的服务处理方法、装置及系统 |
CN113382061B (zh) * | 2021-06-08 | 2023-02-03 | 中国工商银行股份有限公司 | 基于云环境的服务处理方法、装置及系统 |
CN114650252A (zh) * | 2022-03-25 | 2022-06-21 | 华润数字科技(深圳)有限公司 | 基于企业服务总线的路由方法、装置及计算机设备 |
CN114650252B (zh) * | 2022-03-25 | 2023-11-21 | 华润数字科技(深圳)有限公司 | 基于企业服务总线的路由方法、装置及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111355816B (zh) | 2020-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111355816B (zh) | 服务器选取方法、装置、设备及分布式服务系统 | |
CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
TWI662426B (zh) | 分布式流式資料處理的方法和裝置 | |
RU2442210C2 (ru) | Способы и устройства для осуществления операций по дереву каналов | |
TWI694700B (zh) | 資料處理方法和裝置、用戶端 | |
CN110765165B (zh) | 一种跨系统数据同步处理的方法、装置及系统 | |
CN110413845B (zh) | 基于物联网操作系统的资源存储方法及装置 | |
CN111767144B (zh) | 交易数据的交易路由确定方法、装置、设备及系统 | |
CN114327857A (zh) | 操作数据处理方法、装置、计算机设备和存储介质 | |
CN108399175A (zh) | 一种数据存储、查询方法及其装置 | |
CN109800236A (zh) | 支持多节点的分布式缓存方法及设备 | |
CN111078723A (zh) | 一种区块链浏览器的数据处理方法及装置 | |
CN115311399A (zh) | 图像渲染方法、装置、电子设备以及存储介质 | |
CN111813517A (zh) | 任务队列的分配方法、装置、计算机设备及介质 | |
CN115033551A (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN113239047A (zh) | 一种分库配置方法、业务处理方法、装置及设备 | |
CN112650710A (zh) | 数据迁移的发送方法及装置、存储介质、电子装置 | |
CN112559565A (zh) | 一种异常检测方法、系统及装置 | |
CN116048794A (zh) | 一种查询任务的执行方法、装置、存储介质及电子设备 | |
CN111221651B (zh) | 负载均衡配置方法、装置、服务器及可读存储介质 | |
CN110209645A (zh) | 任务处理方法、装置、电子设备及存储介质 | |
CN112258166A (zh) | 一种交易请求处理方法和装置 | |
CN114265869A (zh) | 数据报文的转发方法及装置、存储介质及电子设备 | |
CN112948593A (zh) | 知识图谱的生成方法、装置、设备和介质 | |
CN110019296B (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 |