信息传输方法、装置及系统与流程

文档序号:25543486发布日期:2021-06-18 20:40
信息传输方法、装置及系统与流程

本申请涉及数据处理技术领域,特别涉及一种信息传输方法、装置及系统。



背景技术:

在基于消息驱动的应用开发的过程中,通常需要通过若干生产节点,若干消费节点和消息队列来实现消息生产和消费,以完成应用开发。其中,生产节点为负责向消息队列发送消息的节点,消费节点为从消息队列中获取消息的节点,消息队列为用于存储信息的消息中间件。由于消息队列可用于存储信息,因此不管生产者产生信息的速度多迅猛,通过中间消息队列的缓存,可以保证后台程序的正常运行。但上述系统进行基于消息驱动的应用开发时,由于消息均需先通过中间消息队列进行缓存,处理方式不够灵活,仅适用于需要集成重量级中心化服务的业务,无法满足不同环境下的业务需求。



技术实现要素:

本申请的目的在于至少解决现有技术中存在的技术问题之一,提供一种信息传输方法、装置及系统,在满足任何时期的业务需求的同时,提高业务处理效率。

本申请实施例提供一种信息传输方法,包括:

实时获取当前环境参数;

在所述当前环境参数符合第一预设条件时,控制节点集群中的各节点通过各所述节点间的通信链路进行端到端的信息传输,其中,各所述节点至少包括生产节点和消费节点;

在所述当前环境参数不符合所述第一预设条件时,将各所述节点切换至与消息中间件的通信链路,通过所述消息中间件进行各所述节点间的信息传输。

进一步的,所述控制节点集群中的各节点通过各所述节点间的通信链路进行端到端的信息传输,包括:

控制所述生产节点根据所述生产节点与各所述消费节点间的通信链路所属分区,向各所述消费节点分别提供对应的信息。

进一步的,所述分区通过哈希分区策略或round-robin分区策略确定。

进一步的,所述生产节点包括第一节点,所述消费节点包括第二节点和第三节点;

所述控制节点集群中的各节点通过各所述节点间的通信链路进行端到端的信息传输,包括:

控制所述第二节点通过与所述第一节点的通信链路接收所述第一节点发送的原始信息,以使所述第二节点将对所述原始信息进行消费后生成的订阅信息发送至所述第三节点,所述原始信息由所述第一节点根据所述第三节点的消费请求生成。

进一步的,以使所述第二节点将对所述原始信息进行消费后生成的订阅信息发送至所述第三节点,包括:

控制所述第二节点通过与所述第三节点的通信链路接收所述第三节点的所述消费请求,以使所述第二节点根据所述消费请求与所述原始信息匹配结果对所述原始信息进行消费,生成所述订阅信息发送至所述第三节点。

进一步的,所述将各所述节点切换至与消息中间件的通信链路,通过所述消息中间件进行各所述节点间的信息传输,包括:

将各所述节点切换至与消息中间件的通信链路后,接收所述生产节点提供的信息,并将从所述生产节点接收到的信息标记为缓存信息;

检测所述消息中间件中存在的信息,并在检测到所述消息中间件中不存在与所述缓存信息相同的信息时,将所述缓存信息发送至所述消息中间件,以使所述消息中间件将所述缓存信息转发至对应的所述消费节点。

进一步的,所述消息中间件与各所述节点间的通信协议为rsocket。

进一步的,各所述节点采用的api相同。

进一步的,在本申请实施例中,提供了一种信息传输装置,包括:

数据获取模块,用于实时获取当前环境参数;

第一控制模块,用于在所述当前环境参数符合第一预设条件时,控制节点集群中的各节点通过各所述节点间的通信链路进行端到端的信息传输,其中,各所述节点至少包括生产节点和消费节点;

第二控制模块,用于在所述当前环境参数不符合所述第一预设条件时,将各所述节点切换至与消息中间件的通信链路,通过所述消息中间件进行各所述节点间的信息传输。

进一步的,本申请实施例提供一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述实施例所述的信息传输方法。

进一步的,在本申请实施例中,还提供了一种信息传输系统,包括多个节点、消息中间件以及如上述实施例所述的电子设备,各所述节点至少包括生产节点和消费节点;

各所述节点用于在接收到所述电子设备的第一控制信号时,通过各所述节点间的通信链路进行端到端的信息传输;以及,

在接收到所述电子设备的第二控制信号时,切换至与消息中间件的通信链路,通过所述消息中间件进行各所述节点间的信息传输。

进一步的,本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如上述实施例所述的信息传输方法。

相比于现有技术,上述实施例通过实时获取当前环境参数,判断当前环境参数是否符合第一预设条件,当当前环境参数符合第一预设条件时,至少控制生成节点和消费节点通过节点间的链路进行信息传输,当当前环境参数不符合第一预设条件时,控制各节点通过与消息中间件的通信链路来实现节点间的消息传输,能够避免应用开发过程中所有消息均需要通过消息队列进行缓存导致处理方式不够灵活,并且实现消息中间件的中心化传输和节点端到端传输的切换,能够满足不同环境下的业务需求。

上述实施例中控制生产节点依据与消费节点间的通信链路的所属分区来向消费节点提供与分区对应的信息,从而尽可能地提供与通信链路相对应的信息,能够符合消费节点的消费要求并且提高信息传递效率。

上述实施例采用哈希分区策略或者round-robin分区策略确定通信链路的所属分区,能够确保数据在预先确定数目的分区中进行平均分布,或者当分区的订阅信息都是相同的时候分区分配会是均匀的。

上述实施例中通过控制第二节点接收第一节点发送的根据第三节点的消费请求生成的原始信息,并对接收的原始信息进行消费生成订阅信息再发送到第三节点,使得第三节点接收的信息经过第二节点的过滤,能够接收到想要的经过一定处理的信息,满足作为消费节点的第三节点的消费要求。

上述实施例通过控制第二节点接收第三节点的消费请求,从而确定原始信息中与消费请求不匹配的多余信息以及与消费请求匹配的信息,并根据第三节点的消费请求对上述信息其中一个进行消费,生成订阅信息,使得原始信息过滤后的多余信息能够被有效消费或者准确确定依据消费请求生成的信息,从而减少对其他节点的消息传递的影响。

上述实施例先通过接收生产节点提供的信息并将其标记为缓存信息,再检测消息中间件中是否存在于缓存信息相同的信息,不存在时将缓存信息发送到消息中间件中进行转发到消费节点,存在时控制消息中间件直接发送到消费节点,从而最大限度地降低消息中间件的信息负载量,并且加快了不同情况下的信息传输效率。

上述实施例中消息中间件与各节点间的通信协议采用rsocket,使得消息中间件与各节点中统一的应用程序编程接口可以使用不同的底层传输层,并且具有不同的交互模式,能够更好地避免由于消息中间件与节点之间的差异性或者不同节点之间的差异性而导致的传输失败的情况发生。

上述实施例中各节点采用相同的api,能够提升各节点之间的消息传递效率,并且无需多种设备。

附图说明

下面结合附图和实施例对本申请进一步地说明;

图1为一个实施例中信息传输方法的应用环境图;

图2为一个实施例中信息传输方法的流程示意图;

图3为一个实施例中信息传输装置的结构示意图;

图4为一个实施例中计算机设备的结构框图;

图5为一个实施例中信息传输系统的结构示意图。

具体实施方式

本部分将详细描述本申请的具体实施例,本申请之较佳实施例在附图中示出,附图的作用在于用图形补充说明书文字部分的描述,使人能够直观地、形象地理解本申请的每个技术特征和整体技术方案,但其不能理解为对本申请保护范围的限制。

在基于消息驱动的应用开发的过程中,通常需要通过若干生产节点,若干消费节点和消息队列来实现消息生产和消费,以完成应用开发。其中,生产节点为负责向消息队列发送消息的节点,消费节点为从消息队列中获取消息的节点,消息队列为用于存储信息的消息中间件。由于消息队列可用于存储信息,因此不管生产者产生信息的速度多迅猛,通过中间消息队列的缓存,可以保证后台程序的正常运行。但上述系统进行基于消息驱动的应用开发时,由于消息均需先通过中间消息队列进行缓存,处理方式不够灵活,仅适用于需要集成重量级中心化服务的业务,无法满足不同环境下的业务需求。其中,生产节点为生成数据或者信息的计算机或者计算机集群,消费节点为处理数据或者信息的计算机或者计算机集群。消息队列为存放数据或者信息的消息中间件,而消息中间件为计算机或者计算机集群。当生产者提供的信息均通过中间消息队列进行缓存的话,不同环境下的业务需求对于中间消息队列的偏重程度不同,不能适用于不同环境下的业务需求。

为了解决上述技术问题,如图1所示,是一个实施例中信息传输方法的应用环境图。参照图1,该信息传输系统包括信息传输装置110、节点120和消息中间件130。信息传输装置110与节点120通过网络连接,信息传输装置110与消息中间件130通过网络连接,节点120与消息中间件130通过网络连接。信息传输装置110具体可以用独立的计算机或者是多个计算机组成的计算机集群来实现。节点120和消息中间件130均可以用独立的服务器或者是多个服务器组成的服务器集群来实现。其中,节点120包括生产节点120和消费节点120。信息传输装置110实时获取当前环境参数,判断当前环境参数是否符合第一预设条件。当当前环境参数符合第一预设条件时,信息传输装置110至少控制生成节点120和消费节点120通过节点间的链路进行信息传输。当当前环境参数不符合第一预设条件时,信息传输装置110控制各节点120通过与消息中间件130的通信链路来实现节点间的消息传输。

下面,将通过几个具体的实施例对本申请实施例提供的信息传输方法进行详细介绍和说明。

如图2所示,在一个实施例中,提供了一种信息传输方法。本实施例主要以该方法应用于计算机设备来举例说明。该计算机设备具体可以是上述图1中的信息传输装置110。

参照图2,该信息传输方法具体包括如下步骤:

s11、实时获取当前环境参数。

在本实施例中,信息传输装置实时获取当前环境参数,其中,当前环境参数用于判断当前信息传输系统所属环境下的业务需求,当前环境参数可以为一个或者多个参数项的形式来确定当前所属环境下的业务需求,例如,require=0表示当前所属环境下的业务需求不需要中间消息件,require=1表示当前所属环境下的业务需求需要中间消息件;或者,2个参数项environment和require,当同时为1时表示当前所属环境下的业务需求必须要中间消息件,当同时为0时表示当前所属环境下的业务需求不需要中间消息件,当一个为1且另一个为0时表示当前所属环境下的业务需求对于中间消息件可要可不要。当前环境参数还可以直接采用标识的形式来确定当前所属环境下的业务需求,例如,当信息传输系统有者标识时,如require-1,表示当前所属环境下的业务需求需要中间消息件。当没有标识时,表示当前所属环境下的业务需求不需要中间消息件。当前环境参数还可以直接采用数据的形式来确定当前所属环境下的业务需求,例如,当前环境参数为3737,根据该当前环境参数是否处于信息传输系统需要消息中间件的数据范围,来判断信息传输系统当前所属环境下的业务需求是否需要消息中间件。

在本实施例中,当前环境参数可以存储在消息中间件中,也可以存储在一个或多个节点中,还可以通过用户输入到信息传输装置、消息中间件或者节点中。当当前环境参数存储在消息中间件或者节点中,且当前信息传输系统所属环境下的业务需求发生变化时,当前用户参数可以通过自动匹配或者用户手动修改的方式进行变化。另外,对于当前环境参数的实时获取方式,可以通过信息传输装置每隔一段时间来进行获取,或者通过采集一个时间段内每个时间单位下的当前环境参数,并以最后一个时间单位下的当前环境参数作为该时间段的当前环境参数。

s12、在当前环境参数符合第一预设条件时,控制节点集群中的各节点通过各节点间的通信链路进行端到端的信息传输,其中,各节点至少包括生产节点和消费节点。

在本实施例中,信息传输装置判断当前环境参数是否符合第一预设条件,其中,第一预设条件可以通过用户进行设定,或者信息传输装置自动生成。当当前环境参数符合第一预设条件时,信息传输装置控制各节点通过各节点间的通信链路进行端到端的信息传输,其中,各节点至少包括生产节点和消费节点。生产节点为生成数据或者信息的计算机或计算机集群,消费节点为处理数据或者信息的计算机或计算机集群。通信链路为两个节点之间的物理通道,通信链路的传输介质可以为双绞线、光纤或者微波。而通信链路可以为单向通信链路或者双向通信链路。

在本实施例中,生产节点和消费节点可以为同一节点,例如,节点1和节点2均可以为生产节点和消费节点。节点1和节点2通过这两个节点之间的通信链路进行端到端的信息传播,当节点1为生产节点时,节点2为消费节点,节点1通过与节点2之间的通信链路将信息传输到节点2中,节点2对接收到的信息进行处理;当节点1为消费节点时,节点2为生产节点,节点2通过与节点1之间的通信链路将信息传输到节点1中,节点1对接收到的信息进行处理。还可以节点1通过与节点2之间的通信链路接收节点2传输的信息并进行信息处理的同时,传输信息到节点2中,节点2传输信息到节点1的同时接收节点1传输的信息并对接收的信息进行处理。

在一个实施例中,控制节点集群中的各节点通过各节点间的通信链路进行端到端的信息传输,包括:

控制生产节点根据生产节点与各消费节点间的通信链路所属分区,向各消费节点分别提供对应的信息。

在本实施例中,信息传输装置控制生产节点根据生产节点与各消费节点之间的通信链路所属的分区,向各消费节点提供与所属分区相对应的信息。

在本实施例中,为了对生产节点提供的信息更好地存储、管理或者查询,可以对信息根据信息类型、信息存储地址、信息大小或者信息内容来分成不同的类别,每个类别对应不同的分区。通信链路对应的分区指的是令各生产节点和各消费节点之间的通信链路能够高效地处理或者更好地满足消费节点的需求而分配给通信链路的不同的信息范围。例如,节点1(生产节点)提供的信息包括任一款游戏产品的充值信息,其中,所述充值信息按照信息大小分为类别a、类别b、类别c和类别d,这4个类别对应信息大小分别为0-1000、2100-2500、3100-4000和9000-10000。分区包括分区a、分区b和分区c,信息范围分别为0-1000、1001-2000、2001-3000。对于节点1(生产节点)和节点2(消费节点)之间的通信链路能够高效地处理分区a的信息,因此根据分区a的信息范围,节点1向节点2提供任一款游戏产品的充值信息中类别a的信息。对于节点1(生产节点)和节点3(消费节点)之间的通信链路,节点3想要处理分区c的信息,因此根据分区c的信息范围,节点1向节点3提供任一款游戏产品的充值信息中类别b的信息。

在本实施例中,通过控制生产节点依据与消费节点间的通信链路的所属分区来向消费节点提供与分区对应的信息,从而尽可能地提供与通信链路相对应的信息,能够符合消费节点的消费要求并且提高信息传递效率。

在一个实施例中,分区通过哈希分区策略或round-robin分区策略确定。

在本实施例中,分区对应的信息通过哈希分区策略来确定,通信链路对应的分区可以通过人为设定或者自动匹配。通过将各信息分配到依据哈希值确定的对应的分区中,第一节点再根据通信链路匹配的分区提供分区中的信息到对应的通信链路中。

在本实施例中,对于信息的哈希值,可以通过哈希算法进行计算得到,其中,哈希算法可以为md4、md5、sha-1等。哈希值计算方式以及哈希算法的选择较为常见,在本实施例中不再赘述。

计算得到哈希值后,可以采用hash方式、一致性hash等方式确定对应的多个分区。例如,采用hash方式,第一节点中共有三个分区,分别为area0、area1、area2,信息共有五个,分别计算得到的哈希值为247、760、903、533、302,对计算得到的哈希值对分区个数n=3进行取余,余数表示该哈希值对应的信息在哪个分区。因此,可见area0中有哈希值903对应的信息,area1中有247、760对应的信息,area2中有533、302对应的信息。

在本实施例中,分区对应的信息通过round-robin分区策略来确定,通信链路对应的分区可以通过人为设定或者自动匹配。将各信息通过轮询的方式分配到对应的分区中,第一节点再根据通信链路匹配的分区提供分区中的信息到对应的通信链路中。如果分区对应的信息都是相同的,那么round-robin策略的分区分配会是均匀的。例如,有2个分区c0和c1,都对应主题t0和t1,并且每个主题都有3个信息,那么所对应的所有信息可以标识为:t0p0、t0p1、t0p2、t1p0、t1p1、t1p2。最终的分配结果为:分区c0:t0p0、t0p2、t1p1;分区c1:t0p1、t1p0、t1p2。

如果分区所对应的信息是不相同的,那么在执行分区分配的时候就不是完全的轮询分配,有可能会导致分区分配的不均匀。如果某个分区没有对应某个topic,那么在分配分区的时候此分区将分配不到这个topic的任何信息。

例如,有3个分区c0、c1和c2,它们共订阅了3个主题:t0、t1、t2,这3个主题分别有1、2、3个信息,即3个分区对应了t0p0、t1p0、t1p1、t2p0、t2p1、t2p2这6个分区。具体而言,分区c0对应的是主题t0,分区c1对应的是主题t0和t1,分区c2对应的是主题t0、t1和t2,那么最终的分配结果为:分区c0:t0p0;分区c1:t1p0;分区c2:t1p1、t2p0、t2p1、t2p2。

在本实施例中,采用哈希分区策略或者round-robin分区策略确定通信链路的所属分区,能够确保数据在预先确定数目的分区中进行平均分布,或者当分区的订阅信息都是相同的时候分区分配会是均匀的。

在一个实施例中,生产节点包括第一节点,消费节点包括第二节点和第三节点。

控制节点集群中的各节点通过各节点间的通信链路进行端到端的信息传输,包括:

控制第二节点通过与第一节点的通信链路接收第一节点发送的原始信息,以使第二节点将对原始信息进行消费后生成的订阅信息发送至第三节点,原始信息由第一节点根据第三节点的消费请求生成。

在本实施例中,各节点均可以为生产节点或者消费节点,因此,当第一节点为图1中的节点1时,第二节点可以为节点2或者节点3,对应的,第三节点可以为节点3或者节点2。当第一节点为图1中的节点2时,第二节点可以为节点1或者节点3,对应的,第三节点可以为节点3或者节点1。当第一节点为图1中的节点3时,第二节点可以为节点1或者节点2,对应的,第三节点可以为节点2或者节点1。

在本实施例中,第一节点依据第三节点的消费请求生成原始信息,其中,原始信息中可以仅包括依据第三节点的消费请求生成的原始信息或者还包括依据其他节点的消费请求生成的信息或者还包括掺杂的多余信息。消费请求为消费节点所要消费的信息,具体可以对信息内容、信息类型、信息大小等进行限定。第三节点的消费请求可以人为设定或者节点自行匹配生成。依据第三节点的消费请求生成原始信息可以根据消费请求中的信息对第一节点中的信息进行加密或格式转换或筛选处理。例如,第一节点中有任一款游戏产品的登录数据和充值数据,而第三节点的消费请求为数据内容为登录数据,此时,第一节点筛选出任一款游戏产品的登录数据作为原始信息提供到第一节点与第二节点之间的通信链路中。

第一节点生成原始信息后通过与第二节点之间的通信链路将原始信息传递到第二节点中,第二节点接收原始信息后对原始信息进行消费,生成订阅信息,其中,对信息中的原始信息进行消费,即对原始信息进行处理,来生成订阅信息,该处理方式可以为加密、格式转换或者内容简化等。例如,第一节点通过与第二节点之间的通信链路提供原始信息到第二节点,原始信息包括数据1-100,根据第三节点的消费请求生成的原始信息也为数据1-100,此时,第二节点对数据1-100进行格式转换,将数据1-100转换为十六进制的表示形式,得到订阅信息,并将该订阅信息通过与第三节点之间的通信链路发送至第三节点中。

在本实施例中,通过控制第二节点接收第一节点发送的根据第三节点的消费请求生成的原始信息,并对接收的原始信息进行消费生成订阅信息再发送到第三节点,使得第三节点接收的信息经过第二节点的过滤,能够接收到想要的经过一定处理的信息,满足作为消费节点的第三节点的消费要求。

在一个实施例中,以使第二节点将对原始信息进行消费后生成的订阅信息发送至第三节点,包括:

控制第二节点通过与第三节点的通信链路接收第三节点的消费请求,以使第二节点根据消费请求与原始信息匹配结果对原始信息进行消费,生成订阅信息发送至第三节点。

在本实施例中,第一节点依据第三节点的消费请求生成原始信息,其中,原始信息中可以仅包括依据第三节点的消费请求生成的原始信息或者还包括依据其他节点的消费请求生成的信息或者还包括掺杂的多余信息。消费请求为节点所要消费的信息,具体可以对信息内容、信息类型、信息大小等进行限定。第三节点的消费请求可以人为设定或者节点自行匹配生成。依据第三节点的消费请求生成原始信息可以根据消费请求中的信息对第一节点中的信息进行加密或格式转换或筛选处理。例如,第一节点中有任一款游戏产品的登录数据和充值数据,而第三节点的消费请求为数据内容为登录数据,此时,第一节点筛选出任一款游戏产品的登录数据作为原始信息提供到与第二节点之间的通信链路中。

第一节点生成原始信息后,信息传输装置控制第一节点通过与第二节点之间的通信链路将原始信息传递到第二节点中,第二节点依据接收到的第三节点的消费请求,与接收到的第一节点发送的原始信息进行匹配,第二节点再根据消息请求与原始信息的匹配结果对原始信息进行消费。其中,对于第二节点根据消费请求与原始信息进行匹配,并根据匹配节点对原始信息进行消费,具体可以通过匹配来确定第一节点发送的原始信息中的依据第三节点消费请求生成的信息,进而确定依据第三节点消费请求生成的信息以外的多余信息,使得第二节点对多余信息进行消费。还可以通过匹配来确定第一节点发送的原始信息中依据第三节点消费请求生成的信息,使得第二节点对依据第三节点消费请求生成的信息进行消费。而对于第二节点根据消费请求与依据第三节点消费请求生成的信息的匹配方式,可以为依据第三节点消费请求生成的信息中包含第三节点消费请求的标识,例如,原始信息为登录数据1-100,依据第三节点消费请求生成的信息为数据51-100,每个数据的格式均为51-ysczg、…、100-ysczg,而消费请求为云上城之歌的登录数据,因此,第二节点能够从登录数据1-100中识别出云上城之歌的登录数据51-100为依据消费请求生成的信息。

在本实施例中,第二节点对原始信息中的多余信息进行消费,即对原始信息中依据第三节点消费请求生成的信息以外的其他信息进行消费,消费后可以对剩下的依据第三节点消费请求生成的信息进行转换或不处理来生成订阅信息,其中,第二节点对多余信息进行消费,即对原始信息进行过滤处理,消费多余信息得到依据第三节点消费请求生成的信息,具体对依据第三节点消费请求生成的信息以外的多余信息进行处理,对依据第三节点消费请求生成的信息进行转换或者不作处理,即生成订阅信息。例如,第一节点通过与第二节点之间的通信链路提供原始信息到第二节点,原始信息包括数据1-100,而根据第三节点的消费请求生成的信息为数据51-100,所以原始信息中掺杂数据1-50的多余信息,此时,第二节点对原始信息中数据1-100的1-50部分进行消费,消费后将剩下的信息51-100生成为订阅信息,并将该订阅信息通过第三信道发送至第三节点中。

而第二节点对依据第三节点消费请求生成的信息进行消费,具体为第二节点通过匹配节点确定依据第三节点消费请求生成的信息后,第二节点对依据第三节点消费请求生成的信息进行消费,消费后生成订阅信息,其中,消费生成订阅信息的方式可以为对信息进行加密或格式转换的处理。例如,第一节点通过与第二节点之间的通信链路提供原始信息到第二节点,原始信息包括数据1-100,而根据第三节点的消费请求生成的信息为数据51-100,所以原始信息中掺杂数据1-50的多余信息,第二节点根据匹配结果确定原始信息1-100中的51-100部分为依据消费请求生成的信息,此时第二节点对数据51-100进行格式转换,将数据51-100转换为十六进制的表示形式,得到订阅信息,并将该订阅信息通过与第三节点之间的通信链路发送至第三节点中。

在本实施例中,通过控制第二节点接收第三节点的消费请求,从而确定原始信息中与消费请求不匹配的多余信息以及与消费请求匹配的信息,并根据第三节点的消费请求对上述信息其中一个进行消费,生成订阅信息,使得原始信息过滤后的多余信息能够被有效消费或者准确确定依据消费请求生成的信息,从而减少对其他节点的消息传递的影响。

s13、在当前环境参数不符合第一预设条件时,将各节点切换至与消息中间件的通信链路,通过消息中间件进行各节点间的信息传输。

在本实施例中,信息传输装置判断当前环境参数是否符合第一预设条件。当当前环境参数不符合第一预设条件时,信息传输装置控制各节点断开各节点之间的通信链路,并且控制各节点通过与消息中间件之间的通信链路,来与消息中间件进行信息传输。其中,当各节点中的一个或多个与消息中间件之间没有通信链路的话,那么在当前环境参数不符合第一预设条件时,信息传输装置控制各节点中对应的一个或多个与消息中间件建立通信链路;当各节点与消息中间件之间存在通信链路的话,那么在当前环境参数不符合第一预设条件时,信息传输装置控制各节点停止通过各节点之间的通信链路来进行各节点之间的信息传输,并控制各节点通过与消息中间件之间的通信链路来与消息中间件进行信息传输,使得生产节点通过提供信息到消息中间件,消息中间件再将接收到的信息转发到消费节点中。

各节点与消息中间件之间的通信链路为物理通道,通信链路的传输介质可以为双绞线、光纤或者微波。而各节点与消息中间件之间的通信链路可以为单向通信链路或者双向通信链路。

在一个实施例中,将各节点切换至与消息中间件的通信链路,通过消息中间件进行各节点间的信息传输,包括:

将各节点切换至与消息中间件的通信链路后,接收生产节点提供的信息,并将从生产节点接收到的信息标记为缓存信息。

检测消息中间件中存在的信息,并在检测到消息中间件中不存在与缓存信息相同的信息时,将缓存信息发送至消息中间件,以使消息中间件将缓存信息转发至对应的消费节点。

在本实施例中,信息传输装置接收生产节点提供的信息,并将生成节点提供的信息标记为缓存信息,其中,标记方式可以为对信息通过添加前缀或后缀等方式进行标记,或者添加特定标识,或者对信息所在的地址或者文件夹添加标识。

信息传输装置检测消息中间件中存在的信息,其中,消息中间件中存在的信息可以为存储在消息中间件的信息,或者信息本体存储别的计算机或计算机集群中,而消息中间件中存储有该信息的标识或地址的信息。信息传输装置通过比较缓存信息与存储在消息中间件的信息,来确定消息中间件中是否有与缓存信息相同的信息。在本实施例中,对于信息是否相同的比较方式不做具体限定。

在本实施例中,当信息传输装置检测到消息中间件中存在与缓存信息相同的信息时,信息传输装置发送指令到消息中间件中,令消息中间件传输与缓存信息相同的信息到对应的消费节点中。其中,指令中可以包含缓存信息的内容或者存储在消息中间件中与缓存信息相同信息的标识,例如,缓存信息为云上城之歌的登录数据,在消息中间件中标识为登录数据-ysczg,那么信息传输装置发送指令“send-登录数据-ysczg-node1”到消息中间件中,即令消息中间件将存储的标识为登录数据-ysczg的信息传输到节点node1中。或者发送指令“send-云上城之歌的登录数据”,令消息中间件将消息中间件中与云上城之歌的登录数据相同的信息传输到对应的消费节点中。

当信息传输装置检测到消息中间件中不存在缓存信息时,信息传输装置将接收到的缓存信息传输到消息中间件中,其中,信息传输装置通过信息传输装置与消息中间件之间的通信链路进行信息传输,信息传输装置与消息中间件之间的通信链路可以为单向通信链路或者双向通信链路。消息中间件接收到缓存信息后,将缓存信息通过与节点之间的通信链路转发到对应的消费节点中。其中,缓存信息与消费节点的对应关系,可以为缓存信息中包含有消费节点的标识,或者,缓存信息中包含有特定通信链路的标识。

在一个实施例中,消息中间件与各节点间的通信协议为rsocket。

其中,rsocket是一个osl七层模型中5/6层的协议,是tcp/ip之上的应用层协议。rsocket可以使用不同的底层传输层,包括tcp、websocket和aeron。tcp适用于分布式系统的各个组件之间交互,websocket适用于浏览器和服务器之间的交互,aeron是基于udp协议的传输方式,这就保证了rsocket可以适应于不同的场景。使用rsocket的应用层实现可以保持不变,只需要根据系统环境、设备能力和性能要求来选择合适的底层传输方式即可。rsocket作为一个应用层协议,可以很容易在其基础上定义应用自己的协议。此外,rsocket使用二进制格式,保证了传输的高效,节省带宽。而且,通过基于反应式流语义的流控制,rsocket保证了消息传输中的双方不会因为请求的压力过大而崩溃,能够将应用程序中的所有交互建模为网络原语,即可以流化数据或执行发布/订阅,而无需设置应用程序队列。

在本实施例中,消息中间件与各节点间的通信协议采用rsocket。

在本实施例中,消息中间件与各节点间的通信协议采用rsocket,使得消息中间件与各节点中统一的应用程序编程接口可以使用不同的底层传输层,并且具有不同的交互模式,能够更好地避免由于消息中间件与节点之间的差异性或者不同节点之间的差异性而导致的传输失败的情况发生。

在一个实施例中,各节点采用的api相同。

其中,api(applicationprogramminginterface,应用程序接口)为一些预先定义的接口(如函数、http接口),或指软件系统不同组成部分衔接的约定。在本实施例中,第一节点、第二节点和第三节点均为计算机或者计算机集群,所以api的具体形式为现有技术,在此不再赘述。并且本实施例中对于api不做具体限定。

在本实施例中,各节点采用相同的api,能够提升各节点之间的消息传递效率,并且无需多种设备。

在上述实施例中,通过实时获取当前环境参数,判断当前环境参数是否符合第一预设条件,当当前环境参数符合第一预设条件时,至少控制生成节点和消费节点通过节点间的链路进行信息传输,当当前环境参数不符合第一预设条件时,控制各节点通过与消息中间件的通信链路来实现节点间的消息传输,能够避免应用开发过程中所有消息均需要通过消息队列进行缓存导致处理方式不够灵活,并且实现消息中间件的中心化传输和节点端到端传输的切换,能够满足不同环境下的业务需求。

在一个实施例中,如图3所示,提供了一种信息传输装置,包括:

数据获取模块101,用于实时获取当前环境参数。

第一控制模块102,用于在当前环境参数符合第一预设条件时,控制节点集群中的各节点通过各节点间的通信链路进行端到端的信息传输,其中,各节点至少包括生产节点和消费节点。

第二控制模块103,用于在当前环境参数不符合第一预设条件时,将各节点切换至与消息中间件的通信链路,通过消息中间件进行各节点间的信息传输。

在一个实施例中,第一控制模块102,还用于:控制生产节点根据生产节点与各消费节点间的通信链路所属分区,向各消费节点分别提供对应的信息。

在一个实施例中,分区通过哈希分区策略或round-robin分区策略确定。

在一个实施例中,生产节点包括第一节点,消费节点包括第二节点和第三节点。

第一控制模块102,还用于:

控制第二节点通过与第一节点的通信链路接收第一节点发送的原始信息,以使第二节点将对原始信息进行消费后生成的订阅信息发送至第三节点,原始信息由第一节点根据第三节点的消费请求生成。

在一个实施例中,第一控制模块102,还用于:

控制第二节点通过与第三节点的通信链路接收第三节点的消费请求,以使第二节点根据消费请求与原始信息匹配结果对原始信息进行消费,生成订阅信息发送至第三节点。

在一个实施例中,第二控制模块103,还用于:

将各节点切换至与消息中间件的通信链路后,接收生产节点提供的信息,并将从生产节点接收到的信息标记为缓存信息。

检测消息中间件中存在的信息,并在检测到消息中间件中不存在与缓存信息相同的信息时,将缓存信息发送至消息中间件,以使消息中间件将缓存信息转发至对应的消费节点。

在一个实施例中,消息中间件与各节点间的通信协议为rsocket。

在一个实施例中,各节点采用的api相同。

在一个实施例中,提供了一种计算机设备,如图4所示,该计算机设备包括该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、输入装置和显示屏。其中,存储器包括非易失性存储介质和内存储器。该计算机设备的非易失性存储介质存储有操作系统,还可存储有计算机程序,该计算机程序被处理器执行时,可使得处理器实现信息传输方法。该内存储器中也可储存有计算机程序,该计算机程序被处理器执行时,可使得处理器执行信息传输方法。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

在一个实施例中,本申请提供的服务调度装置可以实现为一种计算机程序的形式,计算机程序可在如图4所示的计算机设备上运行。计算机设备的存储器中可存储组成该服务调度装置的各个程序模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的信息传输方法中的步骤。

在一个实施例中,提供了一种电子设备,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时执行上述信息传输方法的步骤。此处信息传输方法的步骤可以是上述各个实施例的信息传输方法中的步骤。

在一个实施例中,如图5所示,提供了一种信息传输系统,包括多个节点、消息中间件以及如上述实施例所述的电子设备,各节点至少包括生产节点和消费节点。

各节点用于在接收到电子设备的第一控制信号时,通过各节点间的通信链路进行端到端的信息传输;以及,

在接收到电子设备的第二控制信号时,切换至与消息中间件的通信链路,通过消息中间件进行各节点间的信息传输。

在一个实施例中,提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行上述信息传输方法的步骤。此处信息传输方法的步骤可以是上述各个实施例的信息传输方法中的步骤。

以上所述是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本申请的保护范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

再多了解一些
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1