系统间的通信方法和装置与流程

文档序号:11276139阅读:220来源:国知局
系统间的通信方法和装置与流程

本发明涉及移动应用技术领域,尤其是涉及一种系统间的通信方法和装置。



背景技术:

现有技术中多个系统通常会部署在多个不同的服务器物理主机上,存在需求变化导致的需要互相进行通信的情况,然而这些系统处于维护阶段无法再重新进行设计开发使其具备互相通信的能力;同时各个系统的开发语言不同也限制了解决系统之间的通信问题的方式。

针对上述现有技术中多系统之间存在通信困难的问题,目前尚未提出有效解决方案。



技术实现要素:

有鉴于此,本发明的目的在于提供一种系统间的通信方法和装置,可以满足多个系统之间通信的需求,无需重新进行设计开发,快速有效且方便开发人员进行敏捷开发的实施。

第一方面,本发明实施例提供了一种系统间的通信方法,第一系统和第二系统均设置有访问redis数据库的接口,该方法包括:第一系统监听redis数据库;当第一系统监听到redis数据库中有指向第一系统的消息时,解析消息;消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果;执行与解析消息得到的内容对应的操作。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,第一系统监听redis数据库包括:第一系统监听redis数据库中指向第一系统的消息队列;当消息队列有消息时,确定redis数据库中有指向第一系统的消息。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,执行与解析消息得到的内容对应的操作包括:当消息得到的内容为命令时,第一系统执行命令并将执行结果写入redis数据库中,以供第二系统获取执行结果。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,第一系统将执行结果写入redis数据库中包括:第一系统将执行结果写入redis数据库中指向第二系统的消息队列中。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,执行与解析消息得到的内容对应的操作包括:当消息得到的内容为执行结果时,第一系统保存执行结果或根据执行结果执行对应的操作。

结合第一方面,本发明实施例提供了第一方面的第五种可能的实施方式,还包括:当第一系统需要向第二系统发送交互消息时,将交互消息写入redis数据库中,以供第二系统获取;交互消息包括需要第二系统执行的命令或者向第二系统返回的执行结果。

第二方面,本发明实施例还提供一种系统间的通信装置,第一系统和第二系统均设置有访问redis数据库的接口,该装置包括:监听模块,用于第一系统监听redis数据库;解析模块,用于当第一系统监听到redis数据库中有指向第一系统的消息时,解析消息;消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果;执行模块,用于执行与解析消息得到的内容对应的操作。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,上述监听模块还用于:第一系统监听redis数据库中指向第一系统的消息队列;当消息队列有消息时,确定redis数据库中有指向第一系统的消息。

结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,执行模块还用于:当消息得到的内容为命令时,第一系统执行命令并将执行结果写入redis数据库中,以供第二系统获取执行结果。

结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,执行模块还用于:当消息得到的内容为执行结果时,第一系统保存执行结果或根据执行结果执行对应的操作。

本发明实施例带来了以下有益效果:本发明实施例提供的系统间的通信方法和装置,第一系统和第二系统均与redis数据库连接,在第一系统运行中监听到redis数据库中有指向第一系统的消息时,解析该消息并执行与解析消息得到的内容对应的操作,上述消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果,系统通过将消息写入redis数据库或者从redis数据库中读取消息,进行系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种系统间的通信方法的流程示意图;

图2为本发明实施例提供的两个系统间通信的交互图;

图3为本发明实施例提供的另一种系统间的通信方法的流程示意图;

图4为本发明实施例提供的一种系统间的通信装置的结构示意图;

图5为本发明实施例提供的另一种系统间的通信装置的结构示意图;

图6为本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前多个系统通常是部署在多个不同的服务器物理主机上,存在需求变化导致的需要互相进行通信的情况,然而这些系统处于维护阶段无法再重新进行设计开发使其互相通信的能力;同时各个系统开发语言的不同也限制了解决系统之间的通信问题的方式;因此现有的多系统之间存在通信困难。基于此,本发明实施例提供的一种系统间的通信方法和装置,可以满足部署多个系统之间通信的需求,无需重新进行设计开发,快速有效且方便开发人员进行敏捷开发的实施。其中,redis是一个支持网络、可基于内存亦可持久化的日志型key-value数据库,支持多种存储的value类型,包括string(字符串)、list(链表)、set(集合)、zset(sortedset-有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作。同时redis支持各种不同方式的排序。为便于对本实施例进行理解,首先对本发明实施例所公开的一种系统间的通信方法进行详细介绍。

实施例1

本发明实施例1提供了一种系统间的通信方法,第一系统和第二系统均设置有访问redis数据库的接口,在本实施例中以两个系统之间进行通信为例进行说明,参见图1所示的系统间的通信方法的流程示意图,包括如下步骤:

步骤s11,第一系统监听redis数据库。

其中第一系统和以下步骤中的第二系统仅是为了区分两个系统进行的命名,可以理解两者并不存在重要性或者顺序上的区别,是可以互换的。第一系统和第二系统通过访问redis数据库的接口与redis数据库连接。第一系统在运行中监听该redis数据库。

步骤s12,当第一系统监听到redis数据库中有指向第一系统的消息时,解析该消息。

具体地,上述消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果。上述消息可以是redis提供数据类型中任意一种,并且通过redis支持的方式排序存储,具体可以根据消息本身的要求选择存储方式和排序方式。当第一系统监听到redis数据库中存在指向该第一系统的消息时,读取该信息并进行解析。

步骤s13,执行与解析该消息得到的内容对应的操作。

在第一系统解析上述消息得到其中的内容后,执行该内容对应的操作。具体包括以下两种情况:

(1)当消息得到的内容为命令时,第一系统执行命令并将执行结果写入redis数据库中,以供第二系统获取执行结果。其中第一系统写入执行结果是,将该执行结果指向第二系统。

(2)当消息得到的内容为执行结果时,第一系统保存执行结果或根据执行结果执行对应的操作。

本发明实施例提供的系统间的通信方法,第一系统和第二系统均与redis数据库连接,在第一系统运行中监听到redis数据库中有指向第一系统的消息时,解析该消息并执行与解析消息得到的内容对应的操作,上述消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果,系统通过将消息写入redis数据库或者从redis数据库中读取消息,进行系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

在上述方法中是第一系统接收第二系统发送的消息进行说明的,由于第一系统和第二系统的可互换性,可以理解的是第一系统也可以向第二系统发送消息,上述方法还可以包括:

当第一系统需要向第二系统发送交互消息时,将该交互消息写入redis数据库中,以供第二系统获取;上述交互消息包括需要第二系统执行的命令或者向第二系统返回的执行结果。

考虑到redis数据库包括多种存储方式,本实施例以消息通过消息队列的方式存储进行说明。上述步骤s11,第一系统监听redis数据库具体包括:

(1)第一系统监听redis数据库中指向第一系统的消息队列;

(2)当消息队列有消息时,确定redis数据库中有指向第一系统的消息。

在redis数据库存储有多个消息队列,一个系统发送给另一个系统的消息写入redis数据库中的该系统指向另一个系统的消息队列中,该另一个系统通过监听该指向其的消息队列确定其中是否有其他系统发送的消息,显然指向该另一个系统的消息队列也包括多个,分别对应存储有多个其他系统发送的消息。在本实施例中,消息队列中的消息采用先进先出的方式供系统写入和读取。

进一步,第一系统执行命令并将执行结果写入redis数据库中包括:第一系统将执行结果写入redis数据库中指向第二系统的消息队列中。

本发明实施例提供的系统间的通信方法,在第一系统监听到redis数据库中指向第一系统的消息队列中有消息时,执行消息中的命令并将执行结果写入redis数据库中或者保存执行结果、根据执行结果执行对应的操作,系统通过将消息写入redis数据库中的消息队列或者从redis数据库中的消息队列读取消息,进行系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

实施例2

本发明实施例2提供了一种系统间的通信方法,参见图2所示的两个系统间通信的交互图,其中第一系统以systemb表示,第二系统以systema表示,包括如下步骤:

1.systema向redis的消息队列写入命令。

其中,系统systema、系统systemb正常运行并且均已连接到redis数据库。此时系统systema需要通知系统systemb进行某项操作operationatob,需要向redis数据库的消息队列messageatob里写入命令commandatob。具体写入方式如下:$redis->lpush($key,$value)。

2.systemb监听redis的消息队列并读取命令。

为了接收系统systema发送给系统systemb的命令,系统systemb需要监听redis数据库的消息队列messageatob,当该消息队列中有命令时即进行读取,即读取命令commandatob。可以理解的是,在有多个系统与redis数据库连接时,系统systemb需要监听redis数据库中的所有指向systemb的消息队列,以消息队列messagextob表示。具体读取方式如下:$redis->rpop($key)。

3.systemb执行命令。

4.systemb向redis的消息队列写入结果。

在系统systemb执行某项操作operationatob结束后将执行结果resultbtoa写入redis数据库中消息队列messagebtoa中。

5.systema监听redis的消息队列并读取执行结果。

为了接收系统systemb返回给系统systema的执行结果,系统systema需要监听redis数据库的消息队列messagebtoa,当该消息队列中有命令时即进行读取,即读取执行结果resultbtoa,然后进行后续操作。

显然,上述命令和执行结果均可以保存在消息队列中,例如messageatob中既包括系统systema发送给系统systemb的命令又包括systema返回给系统systemb的执行结果,系统systemb只需要监听该messageatob消息队列,即可获得从系统systema发来的所有消息。类似地,当系统systemb需要向系统systema发送命令时,可以按照类似上述步骤1-5执行。

本发明实施例提供的系统间的通信方法,在系统systemb监听到redis数据库中系统systema指向系统systemb的消息队列中有消息时,读取并执行该消息中的命令并将执行结果写入redis数据库中供系统systema读取,即系统systema将消息写入redis数据库中的消息队列,系统systemb从redis数据库中的消息队列读取消息,从而进行两系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

实施例3

本发明实施例3提供了一种系统间的通信方法,与前述实施例中两个系统之间的通信不同,本实施例以三个系统进行通信为例进行说明,三个系统分别以systema、systemb和systemc表示。systema、systemb和systemc正常运行且均与redis数据库连接。参见图3所示的系统间的通信方法的流程示意图,包括如下步骤:

步骤s31,系统systema需要通知系统systemb进行某项操作operationatob时,向redis数据库的消息队列messageatob里写入命令commandatob。

步骤s32,系统systemc需要通知系统systemb进行某项操作operationctob时,向redis数据库的消息队列messagectob里写入命令commandctob。

其中,系统systema和系统systemc均将命令保存在单独的消息队列中,上述消息队列均指向实际的执行系统systemb。上述步骤s31和步骤s32无先后顺序,也可以同时发生。优选地,系统systemb优先执行先写入到redis数据库的消息队列中的命令。

步骤s33,系统systemb监听redis数据库的消息队列并读取命令。

系统systemb监控redis数据库中的消息队列messageatob和messagectob,并读取命令commandatob和命令commandctob。

步骤s34,系统systemb执行读取的命令。

命令commandatob和commandctob分别对应操作operationatob和operationctob,系统systemb执行上述操作。

步骤s35,系统systemb将执行结果resultbtoa写入消息队列messagebtoa中。

步骤s36,系统systemb将执行结果resultbtoc写入消息队列messagebtoc中。

系统systemb将执行结果分别写入对应的消息队列中,例如执行结果是systemc发送的命令的执行结果,该执行结果就需要写入systemb指向systemc的消息队列中。

步骤s37,系统systema监听redis数据库的消息队列读取执行结果resultbtoa。

步骤s38,系统systemc监听redis数据库的消息队列读取执行结果resultbtoc。

在系统systema、系统systemc读取到执行结果后,完成了一次对系统systemb的通信过程,然后基于上述执行结果可以进行后续的其他操作。

系统systemb需要通知系统systema进行某项操作operationtobtoa,重复类似s31-s38的步骤;系统systemb需要通知系统systemc进行某项操作operationtobtoc,重复类似s31-s38的步骤;系统systemc需要通知系统systema进行某项操作operationtoctoa,重复类似s31-s38的步骤。

本发明实施例提供的系统间的通信方法,多个系统通过将消息写入redis数据库中的消息队列或者从redis数据库中的消息队列读取消息,进行系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

实施例4

本发明实施例4提供了一种系统间的通信装置,第一系统和第二系统均设置有访问redis数据库的接口,参见图4所示的结构示意图,包括以下模块:

监听模块410,用于第一系统监听redis数据库;

解析模块420,用于当第一系统监听到redis数据库中有指向第一系统的消息时,解析消息;消息是第二系统写入redis数据库的需要第一系统执行的命令或者向第一系统返回的执行结果;

执行模块430,用于执行与解析消息得到的内容对应的操作。

进一步,监听模块410还用于:第一系统监听redis数据库中指向第一系统的消息队列;当消息队列有消息时,确定redis数据库中有指向第一系统的消息。

进一步,执行模块430还用于:当消息得到的内容为命令时,第一系统执行命令并将执行结果写入redis数据库中,以供第二系统获取执行结果。其中,第一系统将执行结果写入redis数据库中包括:第一系统将执行结果写入redis数据库中指向第二系统的消息队列中。

进一步,执行模块430还用于:当消息得到的内容为执行结果时,第一系统保存执行结果或根据执行结果执行对应的操作。

进一步,参见图5所示的系统间的通信装置的结构示意图,该装置还包括:交互消息写入模块440,用于当第一系统需要向第二系统发送交互消息时,将交互消息写入redis数据库中,以供第二系统获取;交互消息包括需要第二系统执行的命令或者向第二系统返回的执行结果。

本发明实施例提供的系统间的通信装置,在第一系统监听到redis数据库中指向第一系统的消息队列中有消息时,执行消息中的命令并将执行结果写入redis数据库中或者保存执行结果、根据执行结果执行对应的操作,系统通过将消息写入redis数据库中的消息队列或者从redis数据库中的消息队列读取消息,进行系统之间消息的发送和接收,可以实现系统之间的通信,不需要针对各个系统之间的通信需求重新进行系统开发,快速有效且方便实施。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

参见图6,本发明实施例还提供一种服务器100,包括:处理器60,存储器61,总线62和通信接口63,所述处理器60、通信接口63和存储器61通过总线62连接;处理器60用于执行存储器61中存储的可执行模块,例如计算机程序。

其中,存储器61可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口63(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线62可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图6中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器61用于存储程序,所述处理器60在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器60中,或者由处理器60实现。

处理器60可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器60中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器60可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器61,处理器60读取存储器61中的信息,结合其硬件完成上述方法的步骤。

本发明实施例所提供的进行系统间的通信方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

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