HK40024765B - 一种业务控制方法及装置 - Google Patents
一种业务控制方法及装置 Download PDFInfo
- Publication number
- HK40024765B HK40024765B HK42020014470.7A HK42020014470A HK40024765B HK 40024765 B HK40024765 B HK 40024765B HK 42020014470 A HK42020014470 A HK 42020014470A HK 40024765 B HK40024765 B HK 40024765B
- Authority
- HK
- Hong Kong
- Prior art keywords
- node
- service
- service node
- identification information
- newly added
- Prior art date
Links
Description
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种业务控制方法及装置。
背景技术
目前,随着互联网的普及,互联网用户急速增长以及大数据应用场景的不断增加,为了提高数据处理效率,通常采用分布式系统进行数据处理。在分布式系统中,由于数据的持续增长,为了提升系统的响应速度以及系统的数据存储容量,则需要进行分布式系统扩容,增加响应业务的业务节点,并将原有业务节点中的部分数据迁移至新增业务节点中存储。
但是在扩容过程中,由于新增加了业务节点,会造成分布式系统中的拓扑架构发生变更,导致处理业务请求的处理逻辑紊乱,进一步造成分布式系统中数据稳定性下降、业务处理效率低的问题。
发明内容
本申请实施例提供一种业务控制方法及装置,用以在扩容过程中,能够有效的提高分布式系统中数据的稳定性以及业务处理效率。
一方面,本申请实施例提供一种业务控制方法,应用于由业务节点集群构成的分布式系统中,方法包括:
第一路由节点在接收到控制节点发送的新增业务节点消息时,从新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,新增业务节点消息是控制节点在确定有新增业务节点加入到业务节点集群时发送的;
第一路由节点在接收到终端发送的业务请求,且确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息时,缓存业务请求;
第一路由节点在接收到控制节点发送的新增业务节点状态变更消息后,将缓存的业务请求转发给新增业务节点,新增业务节点状态变更消息是控制节点在确定新增业务节点完成数据迁移后发送的。
一方面,本申请实施例提供一种业务控制装置,应用于由业务节点集群构成的分布式系统中,包括:
接收单元,用于在接收到控制节点发送的新增业务节点消息时,从新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,新增业务节点消息是控制节点在确定有新增业务节点加入到业务节点集群时发送的;
缓存单元,用于在接收到终端发送的业务请求,且确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息时,缓存业务请求;
发送单元,用于在接收到控制节点发送的新增业务节点状态变更消息后,将缓存的业务请求转发给新增业务节点,新增业务节点状态变更消息是控制节点在确定新增业务节点完成数据迁移后发送的。
一方面,本申请实施例提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行计算机程序时实现上述业务控制方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行上述业务控制方法的步骤。
本申请实施例提供的业务控制方法,第一路由节点能够接收到客户端发送的业务请求,业务请求是由对应的业务节点进行处理的,而各业务节点也保存了业务请求对应的业务数据等信息。
同时,在本申请实施例中,当第一路由节点接收到控制节点发送的新增业务节点消息时,能够确定在分布式系统中,新加入了业务节点,也就是有扩容的行为发生,此时,第一路由节点能够从控制节点发送的新增业务节点消息中获得正在扩容的新增业务节点的标识信息,且控制节点通知第一路由节点,当前新增业务节点还在扩容中,即新增业务节点还在将原有业务节点中的部分或者全部数据进行转移时,状态为不可用状态。
第一路由节点获得了新增业务节点消息后,若接收到了终端发送的业务请求,确定该业务请求对应的业务节点的标识信息是新增业务节点的标识信息时,则第一路由节点确定该新增业务节点还处于扩容状态,若此时使用该新增业务节点会造成数据处理紊乱的情况,所以在本申请实施例中,第一路由节点将该业务请求进行缓存。
第一路由节点若接收到控制节点发送的新增业务节点状态变更消息,则可以确定该新增业务节点已经扩容完毕,可以使用,则将缓存的业务请求发送给新增业务节点,新增服务节点来处理该业务请求。
也就是说,在本申请实施例中,当新增业务节点没有扩容完毕时,第一路由节点不会将该业务请求发送给新增业务节点处理,当新增业务节点扩容完毕时,则第一路由节点将该业务请求发送给新增业务节点处理,新增业务节点可以及时处理该业务请求。
综上所述,本申请实施例中的业务控制方法,可以在分布式系统中有新增业务节点加入,且新增业务节点还处于数据迁移状态时,则不会将终端发送的业务请求发送给该新增业务节点,也不会发送给原有业务节点进行处理,而是将该业务请求进行缓存,在确定新增业务节点数据迁移完毕后,第一路由节点将业务请求发送给新增业务节点进行处理,通过第一路由节点的缓存方式,能够实现有序的处理业务请求的过程,不会因为扩容而导致在业务请求处理过程中出现处理顺序紊乱的问题,所以能够有效的提高分布式系统中数据的稳定性以及业务处理效率。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种分布式系统扩容架构示意图;
图2为本申请实施例提供的一种分布式系统的架构示意图;
图3为本申请实施例提供的一种业务控制方法的流程示意图;
图4为本申请实施例提供的一种一致性哈希环的结构示意图;
图5为本申请实施例提供的一种业务控制方法的流程示意图;
图6为本申请实施例提供的一种游戏场景下的业务控制方法的流程示意图;
图7为本申请实施例提供的一种业务控制装置的结构示意图;
图8为本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了方便理解,下面对本申请实施例中涉及的名词进行解释:
分布式系统:是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统,在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,系统拥有多种通用的物理和逻辑资源,可以动态的分配任务,分散的物理和逻辑资源通过计算机网络实现信息交换。按照应用方式不同,分布式系统可以分为分布式文件系统,如Hadoop 的HDFS ,还有 google的 GFS , 淘宝的 TFS ,分布式缓存系统,如memcache, hbase , mongdb 等以及分布式数据库 MySQL , Mariadb, PostgreSQL 等。
负载均衡:将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行的一种方法,在本申请实施例中,第一路由节点负责进行负载均衡的处理过程。
哈希:Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
一致性哈希:是一种特殊的哈希算法,目的是解决分布式缓存的问题。在移除或者添加一个服务器或者业务节点时,能够尽可能小地改变已存在的业务请求与处理请求的业务节点之间的映射关系。一致性哈希是把业务请求对应的业务数据和业务节点全部映射到0~231的数值空间上,同时将这个数值空间首尾相连,即231后面就是0,作为哈希环。对业务节点进行哈希运算,会映射到哈希环上的一个数字,将这个数字与业务节点的对应关系保存下来就是哈希映射表。插入业务数据或者业务请求时,对业务请求进行哈希,业务请求将会存储在哈希值比业务请求哈希值要大的最近的节点上。
路由表:指的是路由器或者其他互联网网络设备上存储的表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。在本申请实施例中,分布式系统中的第一路由节点以及第二路由节点都保存有路由表,其保存的路由表用于服务各个分布式系统中的各节点的路由查询请求。
扩容:指的是在分布式系统中增加节点或者增加存储空间的一种方法,例如分布式系统中,每个业务节点存储的数据量都很大,比如一个硬盘的实际数据量2.8T。当系统处理能力不足,需要增加业务节点来提升分布式系统中的数据处理能力,增加业务节点的过程就是扩容过程。
在具体实践过程中,本申请的发明人发现,现有技术中在分布式系统中,由于数据量持续增加,需要增加分布式系统的业务节点,来提升分布式系统中的数据处理能力。
但是现有技术在扩容过程中,若新增业务节点还在数据迁移过程中,此时若有需要发送给新增业务节点的业务请求时,在分布式系统中的第一路由节点可能会将业务请求发送给原有业务节点进行处理,也可能将业务请求发送给新增业务节点处理,但是由于原有业务节点中的数据正在向新增业务节点进行数据迁移处理,则会出现数据处理紊乱的问题,即原有业务节点以及发生数据迁移的新增业务节点都不能有效的处理该业务请求,所以影响了分布式系统中数据的稳定性以及业务处理效率。
进一步地,为了便于理解现有技术中存在的问题,通过图1所示的扩容场景进行解释,图1所示的是一个适用于各个游戏玩家的分布式系统的扩容过程,在该分布式系统中游戏玩家P1通过终端发送游戏场景切换请求OP1,路由节点在接收到请求后,确定游戏玩家P1的请求都是发送给游戏场景1业务节点的,该业务节点中保存了游戏玩家P1的游戏数据。所以路由节点将OP1发送给了游戏场景1业务节点。需要进一步说明的是,上述分布式系统可以是多个物理服务器构成的服务器集群,可以提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。而下文的终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
但是由于游戏玩家人数的增加,分布式系统开始扩容,并且游戏玩家P1的游戏数据需要转移到新增的业务节点,即图1中的游戏场景2业务节点,所以若路由节点将OP1发送给了游戏场景1业务节点处理,则由于游戏数据正在转移,则游戏场景1业务节点不能正确的处理该游戏场景切换请求;同样的,若路由节点将OP1发送给了游戏场景2业务节点,由于游戏数据没有转移完毕,同样的,游戏场景2业务节点不能正确的处理该游戏场景切换请求。
基于上述问题,本申请的发明人提出一种业务控制方法,应用于上述分布式系统,控制节点会监控是否有新的业务节点加入,并在分布式系统中新加入业务节点时,向第一路由节点发送新增业务节点消息,通知第一路由节点有哪些新增业务节点,并且通知第一路由节点这些新增业务节点并不能处理业务请求;第一路由节点在接收到新增业务节点消息后,能够得到新增业务节点的信息,且确定这些新增业务节点并不能处理业务请求。
当第一路由节点接收到终端发送的业务请求时,若确定该业务请求是发送给新增业务节点的,则暂时将该业务请求进行缓存;控制节点监测各新增节点是不是已经数据迁移完毕,若是,则向第一路由节点发送新增业务节点状态变更消息,通知第一路由节点新增节点已经可以处理业务请求了,所以第一路由节点在接收到新增业务节点状态变更消息后,将缓存的业务请求发送给新增业务节点。
通过第一路由节点的缓存方式,能够实现有序的处理业务请求的过程,不会因为扩容而导致在业务请求处理过程中出现处理顺序紊乱的问题,所以能够有效的提高分布式系统中数据的稳定性以及业务处理效率。
在介绍完本申请实施例的设计思想之后,下面对本申请实施例的技术方案能够适用的应用场景做一些简单介绍,需要说明的是,以下介绍的应用场景仅用于说明本申请实施例而非限定。在具体实施时,可以根据实际需要灵活地应用本申请实施例提供的技术方案。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。
参考图2,其为本申请实施例提供的分布式系统的架构图。该系统至少包括业务节点集群201,业务节点集群201中包括多个业务节点2011,各业务节点2011可以处理同一类型的业务请求,也可以处理不同类型的业务请求。
各业务节点2011既可以是具有业务处理能力的实体节点,也可以是具有业务处理能力的虚拟节点。若各业务节点2011为虚拟节点,则各业务节点2011可以为同一物理机中的各虚拟节点,也可以为不同物理机之间的虚拟节点。
根据各业务节点2011处理业务请求的类型不同,可以划分为多个业务节点集群201,各业务节点集群201之间通过路由节点202连接,同时在分布式系统中,路由节点202还可以接收终端203发往各业务节点2011的业务请求,所以在本申请实施例中,将与终端203连接的路由节点202作为第一路由节点2021,将与各业务节点2011连接的路由节点202作为第二路由节点2022。当然,在本申请实施例中,第一路由节点2021与第二路由节点2022可以为同一路由节点202中的两个功能模块。
在本申请实施例中,第一路由节点2021与第二路由节点2022是一种负载均衡设备,位于终端203与业务节点集群201之间,用于接收终端203发送的业务请求,将业务请求发送至业务节点集群201中的一个业务节点2011。
本申请实施例中,负载均衡设备可根据某种分配策略,决定终端203发送的业务请求应发送至业务节点集群201中的哪个业务节点2011处理。作为终端203与业务节点集群201之间的调度者,负载均衡设备设置分配策略的目的在于,将终端203总体发送的业务请求尽可能均匀地发送至业务节点集群201中的各个业务节点2011,以使各个业务节点2011协同对外提供业务,共同承担来自终端203的访问业务,避免业务节点集群201中各业务节点2011的负载不均,出现部分业务节点2011过载的情况,从而提高整个分布式系统的可用性。
在本申请实施例中的分布式系统中还包括控制节点204,控制节点204用于管理分布式系统中的其它节点,例如业务节点集群201以及路由节点202,控制节点204能够通过心跳信号确定业务节点集群201中各业务节点2011的运行状态,也可以确定业务节点集群201中是否有新增业务节点2011。
同时,控制节点204还能够将获取到的新增业务节点2011的消息发送给路由节点202,即第一路由节点2021以及第二路由节点2022,第一路由节点2021接收到消息后,则将发送给新增业务节点2011的业务请求进行缓存。
控制节点204还能够在确定新增业务节点2011的数据转移完成后,将新增业务节点2011的状态变更消息发送给第一路由节点2021,则第一路由节点2021将缓存的业务请求发送给新增业务节点2011。
在本申请实施例中,分布式系统中的各节点可以在公共网络中交互,也可以在私有网络中交互,例如私有云网络或者受限局域网。在本申请中不做限定。
一种可选的实施例中,每个业务节点集群201中的各个业务节点2011是通过区块链的数据共享系统来完成业务请求处理能力的,具体的,如图2所示,数据共享系统205是指用于进行业务节点2011与业务节点2011之间数据共享的系统,该数据共享系统中可以包括多个业务节点2011,可以进行数据共享。
每个业务节点2011在进行正常工作可以接收到业务请求,并基于接收到的业务请求或者业务数据维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,每个业务节点2011之间可以进行信息传输。例如,当数据共享系统中的任意业务节点2011接收到业务请求时,数据共享系统中的其他业务节点2011便根据共识算法获取该业务请求,将该业务请求中的请求数据作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个业务节点2011,均具有与其对应的业务节点2011标识,而且数据共享系统中的每个业务节点2011均可以存储有数据共享系统中其他业务节点2011的节点标识,以便后续根据其他业务节点2011的节点标识,将生成的区块广播至数据共享系统中的其他业务节点2011。每个业务节点2011中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
当然,本申请实施例提供的方法并不限用于图2所示的应用场景中,还可以用于其它可能的应用场景,本申请实施例并不进行限制。对于图2所示的应用场景的各设备所能实现的功能将在后续的方法实施例中一并进行描述,在此先不过多赘述。
为进一步说明本申请实施例提供的技术方案,下面结合附图以及具体实施方式对此进行详细的说明。虽然本申请实施例提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在方法中可以包括更多或者更少的操作步骤。在逻辑上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。
下面结合图2所示的应用场景,对本申请实施例提供的技术方案进行说明。
具体的,在本申请实施例中,由于第一路由节点具有缓存业务请求的能力,所以首先介绍在业务控制方法中,第一路由节点的处理流程,如图3所示,包括:
步骤S301,第一路由节点在接收到控制节点发送的新增业务节点消息时,从新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,新增业务节点消息是控制节点在确定有新增业务节点加入到业务节点集群时发送的。
在步骤S301中,第一路由节点能够接收到控制节点发送的指令信息,当第一路由节点接收到控制节点发送的新增业务节点消息时,能够从该消息中确定当前新增加的业务节点的信息。
可选的,在本申请实施例中,新增业务节点的信息可以包括新增业务节点的标识信息,该标识信息是每个新增业务节点唯一性的表征,该标识信息可以是新增业务节点的设备标识,也可以是新增业务节点的IP标识等。
在本申请实施例中,控制节点需要通知第一路由节点有新加入的业务节点,且需要通知第一路由节点,此时新增业务节点还不能处理业务请求,所以在新增业务节点消息中还包括各新增业务节点的状态为不可用状态信息,第一路由节点在得到新增业务节点的状态为不可用状态信息后,则确定新增业务节点的不能处理业务请求。
可选的,在本申请实施例中,新增业务节点消息中包括多个新增业务节点的信息,在此不限定消息中包括的信息的数量。
在描述了第一路由节点接收新增业务节点消息并得到消息内容的过程,下面介绍控制节点如何发送新增业务节点消息的。
在本申请实施例中,当新增业务节点加入到分布式系统中时,新增业务节点是加入到了某个业务节点集群中,该业务节点集群连接的第二路由节点能够确定有新的业务节点加入,并为该新的业务节点分配标识信息,例如IP信息,将该新增业务节点的标识信息发送给控制节点,控制节点在接收到新增业务节点的标识信息后,向第一路由节点发送新增业务节点消息。
一种可选的实施例中,第二路由节点可以在控制节点发送心跳信号时,将新增业务节点的标识信息一同返回给控制节点,在本申请实施例中,不限定控制节点与第二路由节点之间的交互方式。
可选的,在本申请实施例中,控制节点可以在确定有新增业务节点时,就向第一路由节点发送新增业务节点消息,也可以在确定有设定数量个新增业务节点时,向第一路由节点发送新增业务节点消息,或者,控制节点根据设定时间内获取到的新增业务节点生成新增业务节点消息,发送给第一路由节点。
可选的,在本申请实施例中,第一路由节点在接收到新增业务节点消息后,可以根据新增业务节点的标识信息以及新增业务节点的不可用状态信息建立新增业务节点信息表,例如表1所示,在表1中保存了新增业务节点的标识信息以及状态。
表1
步骤S302,第一路由节点在接收到终端发送的业务请求,且确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息时,缓存业务请求。
具体的,第一路由节点在获取到新增业务节点消息后,还会持续接收终端发送的业务请求,这些业务请求需要发送给业务节点进行处理。可选的,业务请求可以是数据获取请求,数据查询请求,数据删除请求等等,也可以是其它数据加工请求,在这里不做限定。
当第一路由节点确定收到的终端发送的业务,且确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息时,第一路由节点确定该新增业务节点不能进行业务处理,所以将该业务请求缓存。
在本申请实施例中,第一路由节点接收的业务请求对应有业务节点的标识信息,所以当第一路由节点确定需要处理业务请求的节点的标识信息就是新增节点的标识信息时,就进行缓存处理,下面示例性介绍几种确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息的方法。
一种可选的实施例中,第一路由节点接收到的业务请求中,包括业务请求对应的业务节点标识信息,第一路由节点根据得到的新增业务节点的标识信息就能够确定收到的业务请求对应的业务节点标识信息是否就是新增业务节点的标识信息。可选的,第一路由节点还可以根据表1中保存的各标识信息进行匹配,若匹配到,则确定收到的业务请求对应的业务节点标识信息是否就是新增业务节点的标识信息。
另一种可选的实施例中,各业务节点在分布式系统中是根据哈希值进行分布的,所以第一路由节点需要确定业务请求对应的哈希值是否与新增业务节点的标识信息匹配,若匹配,则确定收到的业务请求对应的业务节点标识信息是否就是新增业务节点的标识信息。
具体的,在本申请实施例中,业务请求中包括请求标识信息,这个标识信息可以是发送业务请求的用户的用户标识ID,或者是用户使用的终端设备标识ID,或者终端使用的IP地址等信息。
第一路由节点根据请求标识信息,确定请求标识信息的请求哈希值,然后对请求哈希值进行取模,得到余数,若确定余数是新增业务节点的标识信息,则需要确定业务请求对应的哈希与新增业务节点的标识信息匹配,也就确定收到的业务请求对应的业务节点标识信息就是新增业务节点的标识信息。上述实施例中的新增业务节点的标识信息指的是业务节点的节点标识号,例如标识1、标识2、标识3等,业务节点的标识数量与业务节点的数量相关,每个业务节点具有唯一节点标识号。
还有一种可选的实施例,第一路由节点可以根据一致性哈希环,来确定业务请求对应的哈希值是否与新增业务节点的标识信息匹配,进一步确定收到的业务请求对应的业务节点标识信息是否就是新增业务节点的标识信息。
具体的,第一路由节点构造一个0~2^32的整数环,即哈希环,再对分布式存储系统中的各个业务节点的标识取哈希值,从而将各个业务节点映射到这个哈希环上,这里的映射包括分布式系统中的原有业务节点以及新增业务节点,也就是说,在哈希环中各个业务节点都具有第一位置,即映射的位置。
第一路由节点根据请求哈希值,将业务请求也映射到这个哈希环上,得到业务请求映射的第二位置。
第一路由节点以第二位置为基准,以顺时针方向沿着哈希环确定的第一个第一位置就是该业务请求对应的业务节点的位置,也就能够确定请求哈希值与所述新增业务节点的标识信息匹配,进一步确定收到的业务请求对应的业务节点标识信息就是新增业务节点的标识信息。
示例性的,如图4所示,示出了一种一致性哈希环,在一致性哈希环中的一个实心圆点表示的是各业务节点映射的第一位置,一致性哈希环中的空心圆点是业务请求映射的第二位置,从第二位置出发,沿着一致性哈希环的顺时针方向,确定了第一位置A,并确定第一位置A对应的业务节点为新增业务节点,则确定请求哈希值与所述新增业务节点的标识信息匹配,进一步确定收到的业务请求对应的业务节点标识信息就是新增业务节点的标识信息。
步骤S303,第一路由节点在接收到控制节点发送的新增业务节点状态变更消息后,将缓存的业务请求转发给新增业务节点,新增业务节点状态变更消息是控制节点在确定新增业务节点完成数据迁移后发送的。
具体的,在本申请实施例中,第一路由节点若接收到控制节点发送的新增业务节点状态变更消息,则能够确定新增节点已经完成了数据迁移,则可以将业务请求发送给新增业务节点。
可选的,在本申请实施例中,第一路由节点若确定新增业务节点状态变更消息中包括该缓存的所有业务请求对应的新增业务节点,则将业务请求发送给新增业务节点,该新增业务节点为一个或者多个。
示例性的,第一路由节点缓存了需要发送给新增业务节点1、新增业务节点2以及新增业务节点3的3个对应的业务请求,第一路由节点接收到新增业务节点状态变更消息,新增业务节点状态变更消息指示的是新增业务节点1的状态发生了变化,则第一路由节点将缓存的需要发送给新增业务节点1的业务请求发送给新增业务节点1。
或者,第一路由节点缓存了需要发送给新增业务节点1、新增业务节点2以及新增业务节点3的3个对应的业务请求,第一路由节点接收到新增业务节点状态变更消息,新增业务节点状态变更消息指示的是新增业务节点1、新增业务节点2的状态发生了变化,则第一路由节点将缓存的需要发送给新增业务节点1的业务请求发送给新增业务节点1,将缓存的需要发送给新增业务节点2的业务请求发送给新增业务节点2。
所以通过上述内容可知,新增业务节点状态变更消息可以是控制节点确定所有新增业务节点都已经完成数据迁移后发送的,也可以是控制节点确定每一个新增业务节点已经完成数据迁移后发送的,也可以是控制节点在设定时间到达时,根据设定时间内的新增业务节点已经完成数据迁移的信息发送的,当然还有其它确定方法,在此不做限定。
在本申请实施例中,由于业务节点是下挂在某个第二路由节点下的,所以在第一路由节点需要将缓存的业务请求发送给新增业务节点时,需要确定新增业务对应的第二路由节点,发送给第二路由节点的。
在本申请实施例中,第一路由节点根据路由表,确定第二路由节点,所以当分布式系统中有新增业务节点时,第二路由节点会更新路由表,并将更新后的路由表发送给控制节点,控制节点将路由表发送给第一路由节点,第一路由节点能够得到更新的路由表。
具体的,在本申请实施例中,路由表中保存了业务节点标识信息以及路由节点标识信息的关联关系,所以第一路由节点根据新增业务节点的标识信息确定了第二路由节点的标识信息,将缓存的业务请求发送给第二路由节点。
在本申请实施例中,为了保证在新增业务节点之前第一路由节点接收到的各业务请求能够正常处理完毕,所以在本申请实施例中,第一路由节点接收控制节点发送的清空未完成业务请求消息,控制节点通知第一路由节点来完成所有的业务请求。
第一路由节点获取未完成业务请求,根据各未完成业务请求的标识信息确定业务节点集群中的各原有业务节点,并在确定接收到所有原有业务节点发送的针对各未完成业务请求的已处理完成消息后,向控制节点发送已清空所有未完成业务请求消息。
控制节点接收到第一路由节点的已清空所有未完成业务请求消息后,向各新增业务节点发送开始数据迁移消息,开始进行扩容过程。
可选的,在本申请实施例中,控制节点接收到第一路由节点的已清空所有未完成业务请求消息后,还需要接收到第二路由节点发送的已清空所有未完成业务请求消息,当控制节点确定各第一路由节点以及各第二路由节点都已经发送了已清空所有未完成业务请求消息,向各新增业务节点发送开始数据迁移消息,开始进行扩容过程。
在介绍了第一路由节点缓存业务请求以及转发业务请求的流程后,下面以分布式系统为整体,介绍分布式系统中新增业务节点后触发的各处理流程。
具体的,如图5所示,包括:
步骤S501,新增业务节点加入分布式系统,向第二路由节点发送标识信息;
步骤S502,第二路由节点获取新增路由信息,更新路由表;
步骤S503,第二路由节点将新增路由信息以及更新路由表发送给控制节点;
步骤S504,控制节点根据新增路由信息生成新增业务节点消息;
步骤S505,控制节点将新增业务节点消息以及更新路由表发送给各第一路由节点以及其它第二路由节点;
步骤S506,第二路由节点将新增业务节点消息以及更新路由表发送给各业务节点;
步骤S507,各业务节点根据一致性哈希算法,确定各业务节点管理的数据是否需要迁移,并等待迁移;
步骤S508,控制节点向第一路由节点以及第二路由节点发送清空未完成业务请求消息;
步骤S509,第一路由节点以及第二路由节点清空未完成业务请求;
步骤S510,第一路由节点以及第二路由节点并向控制节点发送已清空所有未完成业务请求消息;
步骤S511,控制节点向各第二路由节点发送开始数据迁移消息;
步骤S512,第一路由节点接收终端发送的业务请求;
步骤S513,第一路由节点确定业务请求对发送给新增业务节点时,缓存业务请求;
步骤S514,第二路由节点将开始数据迁移消息发送给各业务节点;
步骤S515,各业务节点进行数据迁移;
步骤S516,各业务节点在数据迁移完成后,向第二路由节点发送已完成数据迁移消息;
步骤S517,第二路由节点将各新增业务节点已完成数据迁移消息发送给控制节点;
步骤S518,控制节点向第一路由节点以及第二路由节点发送新增业务节点状态变更消息;
步骤S519,第一路由节点将缓存的各业务请求发送给对应的第二路由节点;
步骤S520,第二路由节点将缓存的业务请求发送给对应的新增业务节点;
步骤S521,新增业务节点处理该业务请求。
在上述流程中,步骤S507以及步骤S508之间没有先后顺序的限定,步骤S512与步骤S513~步骤S517之间的任一步骤没有先后顺序的限定。
为了更好的解释本申请实施例,下面结合一种具体的实施场景描述本申请实施例提供的业务控制方法,如图6所示,在本申请实施例中,各业务节点为游戏节点,按照各游戏节点的功能进行划分,划分为功能集群1、功能集群2以及功能集群3,其中,功能集群1为公会集群,功能集群2为战斗集群,动能集群3为比赛集群。
各功能集群中有各个业务节点,功能集群1中具有业务节点1以及业务节点2,功能集群2中具有业务节点3、业务节点4以及业务节点5,功能集群3中有业务节点6。
功能集群1下挂在路由1中,功能集群2下挂在路由2中,功能集群3下挂在路由3中。并且控制节点与各路由进行数据交互。
路由3确定功能集群3中有新增业务节点,为业务节点7,通知控制节点有业务节点7加入,并将业务节点7的路由表信息发送给控制节点。路由3通知业务节点6根据游戏玩家的游戏账号以及业务节点的IP地址以及一致性哈希环,需要转移到业务节点7的数据,并等待转移。示例性的,在本申请实施例中,以用户G1以及用户G2的数据需要进行转移。
控制节点在接收到消息后,向路由1、路由2以及路由3广播通知,通知各路由,业务节点7加入,且不能使用,将更新路由表也发送给路由1、路由2以及路由3。
控制节点向各路由1、路由2以及路由3广播通知,清空已接收到的业务请求。
路由1、路由2以及路由3按照原有的业务处理逻辑,确定对应的业务节点,并发送给各业务节点处理。示例性的,路由1已接收到的,但未完成的业务请求Q1是用户G1发送的,按照原有业务处理逻辑,确定业务节点为业务节点6,则发送给路由3,路由3发送给业务节点6。
路由1、路由2以及路由3在确定都已经完成了业务请求后,通知控制节点都已经完成了业务请求,控制节点向路由1、路由2以及路由3发送开始数据迁移数据消息,路由3通知业务节点6以及业务节点7进行数据迁移。
当第一终端接收到功能集群1中的用户G2,且需要向比赛集群发送业务请求Q2时,此时,第一终端确定,G2对应的业务节点7正在数据迁移,所以缓存该业务请求Q2。
路由3在确定业务节点7完成数据迁移后,通知控制节点,控制节点通知路由1,业务节点7已经完成了数据迁移,所以路由1将Q2发送给路由3,路由3将Q2发送给业务节点7。
通过上述例子可知,接收游戏用户业务请求的路由是第一路由,上述示例中的路由1、路由2以及路由3都可以是第一路由节点,同样的,述示例中的路由1、路由2以及路由3都可以是第二路由节点。
基于相同的技术构思,本申请实施例还提供一种业务控制装置700,应用于由业务节点集群构成的分布式系统中,如图7所示,包括:
接收单元701,用于在接收到控制节点发送的新增业务节点消息时,从新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,新增业务节点消息是控制节点在确定有新增业务节点加入到业务节点集群时发送的;
缓存单元702,用于在接收到终端发送的业务请求,且确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息时,缓存业务请求;
发送单元703,用于在接收到控制节点发送的新增业务节点状态变更消息后,将缓存的业务请求转发给新增业务节点,新增业务节点状态变更消息是控制节点在确定新增业务节点完成数据迁移后发送的。
可选的,业务请求中包括请求标识信息,缓存单元702具体用于:
根据请求标识信息确定请求哈希值;
若确定请求哈希值与新增业务节点的标识信息匹配,则确定业务请求对应的业务节点的标识信息为新增业务节点的标识信息。
可选的,缓存单元702具体用于:
构建一致性哈希环;
根据各新增业务节点的标识信息以及原有业务节点的标识信息确定在一致性哈希环中各业务节点对应的各第一位置;
根据请求哈希值确定在一致性哈希环中业务请求对应的第二位置;
若确定与第二位置距离最近的第一位置对应的业务节点为新增业务节点,则确定请求哈希值与新增业务节点的标识信息匹配。
可选的,接收单元701还用于:
接收控制节点发送的清空未完成业务请求消息,获取未完成业务请求;
缓存单元702还用于:
根据各未完成业务请求的标识信息确定业务节点集群中的各原有业务节点;
发送单元703还用于:
在确定接收到所有原有业务节点发送的针对各未完成业务请求的已处理完成消息后,向控制节点发送已清空所有未完成业务请求消息,以使控制节点向各新增业务节点发送开始数据迁移消息。
可选的,接收单元701还用于:
接收控制节点发送的更新路由表并将更新路由表保存,更新路由表是第二路由节点在确定新增业务节点加入到业务节点集群时确定的并发送给控制节点的,更新路由表中包括新增业务节点的标识信息与第二路由节点的标识信息之间的关联关系;
发送单元703具体用于:
根据更新路由表以及新增业务节点的标识信息,确定新增业务节点对应的第二路由节点的标识信息;
根据第二路由节点的标识信息,将业务请求发送给第二路由节点,以使第二路由节点将业务请求转发给新增业务节点。
可选的,新增业务节点消息包括多个新增业务节点的标识信息,新增业务节点状态变更消息是控制节点在确定所有新增业务节点完成数据迁移后发送的。
基于相同的技术构思,本申请实施例提供了一种计算机设备,如图8所示,包括至少一个处理器801,以及与至少一个处理器连接的存储器802,本申请实施例中不限定处理器801与存储器802之间的具体连接介质,图8中处理器801和存储器802之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,存储器802存储有可被至少一个处理器801执行的指令,至少一个处理器801通过执行存储器802存储的指令,可以执行前述的联邦学习方法中所包括的步骤。
其中,处理器801是计算机设备的控制中心,可以利用各种接口和线路连接终端设备的各部分,通过运行或执行存储在存储器802内的指令以及调用存储在存储器802内的数据,从而获得客户端地址。待选的,处理器801可包括一个或多个处理单元,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。在一些实施例中,处理器801和存储器802可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
处理器801可以是通用处理器,例如中央处理器(CPU)、数字信号处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器802作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器802可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random AccessMemory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器802是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器802还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
基于相同的技术构思,本申请实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当程序在计算机设备上运行时,使得计算机设备执行联邦学习方法的步骤。
上述计算机可读存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NANDFLASH)、固态硬盘(SSD))等。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种业务控制方法,其特征在于,应用于由业务节点集群构成的分布式系统中,所述方法包括:
第一路由节点在接收到控制节点发送的新增业务节点消息时,从所述新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,所述新增业务节点消息是所述控制节点在确定有所述新增业务节点加入到所述业务节点集群时发送的;
所述第一路由节点在接收到终端发送的业务请求,且确定所述业务请求对应的业务节点的标识信息为所述新增业务节点的标识信息时,缓存所述业务请求;
所述第一路由节点在接收到所述控制节点发送的新增业务节点状态变更消息后,将缓存的所述业务请求转发给所述新增业务节点,所述新增业务节点状态变更消息是所述控制节点在确定所述新增业务节点完成数据迁移后发送的,其中所述业务请求对应的原业务节点与所述原业务节点对应的第二路由节点之间的拓扑关系未发生变化,所述第一路由节点通过所述第二路由节点与各业务节点进行通信。
2.根据权利要求1所述的方法,其特征在于,所述业务请求中包括请求标识信息,所述第一路由节点确定所述业务请求对应的业务节点的标识信息为所述新增业务节点的标识信息,包括:
所述第一路由节点根据所述请求标识信息确定请求哈希值;
若所述第一路由节点确定所述请求哈希值与所述新增业务节点的标识信息匹配,则确定所述业务请求对应的业务节点的标识信息为所述新增业务节点的标识信息。
3.根据权利要求2所述的方法,其特征在于,所述第一路由节点确定所述请求哈希值与所述新增业务节点的标识信息匹配,包括:
所述第一路由节点构建一致性哈希环;
所述第一路由节点根据各新增业务节点的标识信息以及原有业务节点的标识信息确定在所述一致性哈希环中各业务节点对应的各第一位置;
所述第一路由节点根据所述请求哈希值确定在所述一致性哈希环中所述业务请求对应的第二位置;
若所述第一路由节点确定与所述第二位置距离最近的第一位置对应的业务节点为新增业务节点,则确定所述请求哈希值与所述新增业务节点的标识信息匹配。
4.根据权利要求1所述的方法,其特征在于,所述第一路由节点接收控制节点发送的新增业务节点消息后,所述方法还包括:
所述第一路由节点接收所述控制节点发送的清空未完成业务请求消息,获取未完成业务请求;
所述第一路由节点根据各未完成业务请求的标识信息确定所述业务节点集群中的各原业务节点;
所述第一路由节点在确定接收到所有原业务节点发送的针对各未完成业务请求的已处理完成消息后,向所述控制节点发送已清空所有未完成业务请求消息,以使所述控制节点向各新增业务节点发送开始数据迁移消息。
5.根据权利要求1所述的方法,其特征在于,所述第一路由节点接收控制节点发送的新增业务节点消息后,所述方法还包括:
所述第一路由节点接收所述控制节点发送的更新路由表并将所述更新路由表保存,所述更新路由表是第二路由节点在确定新增业务节点加入到所述业务节点集群时确定的并发送给所述控制节点的,所述更新路由表中包括所述新增业务节点的标识信息与所述第二路由节点的标识信息之间的关联关系;
所述第一路由节点将缓存的所述业务请求转发给所述新增业务节点,包括:
所述第一路由节点根据所述更新路由表以及所述新增业务节点的标识信息,确定所述新增业务节点对应的第二路由节点的标识信息;
所述第一路由节点根据所述第二路由节点的标识信息,将所述业务请求发送给所述第二路由节点,以使所述第二路由节点将所述业务请求转发给所述新增业务节点。
6.根据权利要求1所述的方法,其特征在于,所述新增业务节点消息包括多个新增业务节点的标识信息,所述新增业务节点状态变更消息是所述控制节点在确定所有新增业务节点完成数据迁移后发送的。
7.一种业务控制装置,其特征在于,应用于由业务节点集群构成的分布式系统中,包括:
接收单元,用于在第一路由节点接收到控制节点发送的新增业务节点消息时,从所述新增业务节点消息中获得新增业务节点的标识信息以及新增业务节点的不可用状态信息,所述新增业务节点消息是所述控制节点在确定有所述新增业务节点加入到所述业务节点集群时发送的;
缓存单元,用于在接收到终端发送的业务请求,且确定所述业务请求对应的业务节点的标识信息为所述新增业务节点的标识信息时,缓存所述业务请求;
发送单元,用于在接收到所述控制节点发送的新增业务节点状态变更消息后,将缓存的所述业务请求转发给所述新增业务节点,所述新增业务节点状态变更消息是所述控制节点在确定所述新增业务节点完成数据迁移后发送的,其中所述业务请求对应的原业务节点与所述原业务节点对应的第二路由节点之间的拓扑关系未发生变化,所述第一路由节点通过所述第二路由节点与各业务节点进行通信。
8.根据权利要求7所述的装置,其特征在于,所述业务请求中包括请求标识信息,所述缓存单元具体用于:
根据所述请求标识信息确定请求哈希值;
若确定所述请求哈希值与所述新增业务节点的标识信息匹配,则确定所述业务请求对应的业务节点的标识信息为所述新增业务节点的标识信息。
9.根据权利要求8所述的装置,其特征在于,所述缓存单元具体用于:
构建一致性哈希环;
根据各新增业务节点的标识信息以及原有业务节点的标识信息确定在所述一致性哈希环中各业务节点对应的各第一位置;
根据所述请求哈希值确定在所述一致性哈希环中所述业务请求对应的第二位置;
若确定与所述第二位置距离最近的第一位置对应的业务节点为新增业务节点,则确定所述请求哈希值与所述新增业务节点的标识信息匹配。
10.根据权利要求7所述的装置,其特征在于,所述接收单元还用于:
接收所述控制节点发送的清空未完成业务请求消息,获取未完成业务请求;
所述缓存单元还用于:
根据各未完成业务请求的标识信息确定所述业务节点集群中的各原业务节点;
所述发送单元还用于:
在确定接收到所有原业务节点发送的针对各未完成业务请求的已处理完成消息后,向所述控制节点发送已清空所有未完成业务请求消息,以使所述控制节点向各新增业务节点发送开始数据迁移消息。
11.根据权利要求7所述的装置,其特征在于,所述接收单元还用于:
接收所述控制节点发送的更新路由表并将所述更新路由表保存,所述更新路由表是第二路由节点在确定新增业务节点加入到所述业务节点集群时确定的并发送给所述控制节点的,所述更新路由表中包括所述新增业务节点的标识信息与所述第二路由节点的标识信息之间的关联关系;
所述发送单元具体用于:
根据所述更新路由表以及所述新增业务节点的标识信息,确定所述新增业务节点对应的第二路由节点的标识信息;
根据所述第二路由节点的标识信息,将所述业务请求发送给所述第二路由节点,以使所述第二路由节点将所述业务请求转发给所述新增业务节点。
12.根据权利要求7所述的装置,其特征在于,所述新增业务节点消息包括多个新增业务节点的标识信息,所述新增业务节点状态变更消息是所述控制节点在确定所有新增业务节点完成数据迁移后发送的。
13.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1~6任一权利要求所述方法的步骤。
14.一种计算机可读存储介质,其特征在于,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行权利要求1~6任一权利要求所述方法的步骤。
Publications (2)
| Publication Number | Publication Date |
|---|---|
| HK40024765A HK40024765A (zh) | 2020-12-18 |
| HK40024765B true HK40024765B (zh) | 2021-04-23 |
Family
ID=
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111338806B (zh) | 一种业务控制方法及装置 | |
| CN111585887B (zh) | 基于多个网络的通信方法、装置、电子设备及存储介质 | |
| CN106161610A (zh) | 一种分布式存储的方法和系统 | |
| US11818209B2 (en) | State management and object storage in a distributed cloud computing network | |
| KR20120018178A (ko) | 객체 저장부들의 네트워크상의 스웜-기반의 동기화 | |
| CN115079935B (zh) | 用于存储和查询数据的方法、电子设备和计算机程序产品 | |
| CN114911602B (zh) | 一种服务器集群的负载均衡方法、装置、设备和存储介质 | |
| CN113361913A (zh) | 一种通信业务编排方法、装置、计算机设备及存储介质 | |
| US9760370B2 (en) | Load balancing using predictable state partitioning | |
| CN112165523B (zh) | 一种数据下载方法和装置 | |
| CN117579550A (zh) | 一种基于可编程交换机和容器状态信息卸载的路由方法 | |
| CN116708191B (zh) | 流量转发网元的容量调整方法、装置、设备及存储介质 | |
| US20220263759A1 (en) | Addressing method, addressing system, and addressing apparatus | |
| CN112711465B (zh) | 基于云平台的数据处理方法、装置、电子设备及存储介质 | |
| HK40024765B (zh) | 一种业务控制方法及装置 | |
| HK40024765A (zh) | 一种业务控制方法及装置 | |
| CN115883562A (zh) | 一种多层级cdn缓存方法、系统、存储介质、电子设备 | |
| CN118069412A (zh) | 数据存储方法、系统、装置、设备、存储介质及程序产品 | |
| CN116708170A (zh) | 服务器更新方法、服务执行方法及相关设备 | |
| CN116233057A (zh) | 数据传输方法、云中心、边缘节点及存储介质 | |
| US20200341968A1 (en) | Differential Update of Local Cache from Central Database | |
| CN116208559B (zh) | 基于负载均衡的区块同步的方法及系统 | |
| CN117057799B (zh) | 资产数据处理方法、装置、设备及存储介质 | |
| CN110958182B (zh) | 一种通信方法及相关设备 | |
| CN112988320B (zh) | 创建虚拟机的方法及装置 |