消息处理方法、装置、客户端及服务端与流程

文档序号:12730865阅读:158来源:国知局
消息处理方法、装置、客户端及服务端与流程

本发明涉及网络技术领域,具体而言,涉及一种消息处理方法、装置、客户端及服务端。



背景技术:

远程过程调用(Remote Procedure Call,简称为RPC)模式是一个分布式计算的客户端/服务器模式,由客户端向服务器发出一个执行若干过程请求,服务端接受请求,使用客户端提供的参数,计算完成之后将结果返回给客户端。RPC提供了一个透明的机制让使用者调用远程服务的方法像在本地一样,方便构建分布式服务、分布式计算、远程服务调用等。RPC的实现包含了协议制定、网络传输、消息分发等。

目前实现RPC的框架有gRPC、Thrift、Dubbo,这些框架都是相对独立庞大臃肿,而且需要另外安装部署。如果从零开始实现,又需要处理复杂网络通信问题、网络组包拆包、服务可用性问题等。

因此,在相关技术中,实现RPC存在处理复杂,效率低的问题。针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种消息处理方法、装置、客户端及服务端,以至少解决相关技术中,实现RPC存在处理复杂,效率低的技术问题。

根据本发明实施例的一个方面,提供了一种消息处理方法,包括:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;采用第二Redis队列作为中间传输介质接收所述服务端对所述请求消息进行处理后反馈的反馈消息。

可选地,采用所述第一Redis队列作为中间传输介质向所述服务端发送用于请求远程调用的所述请求消息包括:在所述服务端为多个的情况下,所述请求消息中携带有用于标识所述服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

可选地,采用所述第一Redis队列作为中间传输介质向所述服务端发送用于请求远程调用的所述请求消息包括:将所述请求消息封装成包括以下信息的格式:所述服务端的名称,请求的所述远程的方法,请求远程调用的参数,所述请求消息的序列号;将封装后的请求消息序列化成字符串;将序列化后的请求消息使用Redis的rpush方法发送给所述第一Redis队列,用于通过所述第一Redis队列发送给所述服务端。

可选地,采用所述第二Redis队列作为中间传输介质接收所述服务端对所述请求消息进行处理后反馈的反馈消息包括:从所述第二Redis队列中读取所述服务端反馈的反馈消息;将所述反馈消息反序列化成包括以下信息的格式:所述第一Redis队列的名称,所述第二Redis队列的名称,所述服务端对所述请求消息进行处理后的结果状态,所述服务端对所述请求消息进行处理后的处理结果,所述请求消息中所述包括的所述请求消息的序列号;根据反序列化后的反馈消息获得所述远程调用对应的处理结果。

根据本发明的另一方面,提供了一种消息处理方法,包括:采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;对所述请求消息进行处理后获得反馈消息;采用第二Redis队列作为中间传输介质向所述客户端反馈所述反馈消息。

可选地,采用所述第二Redis队列作为中间传输介质向所述客户端反馈所述反馈消息包括:在所述客户端为多个的情况下,所述反馈消息中携带有用于标识所述客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈所述反馈消息。

可选地,对所述请求消息进行处理后获得所述反馈消息包括:将从所述第一Redis队列中读取的所述请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的所述远程的方法,请求远程调用的参数,所述请求消息的序列号;从反序列化后的消息中读取请求的所述远程的方法,请求远程调用的参数,获得对应处理结果;将所述处理结果封装成包括以下信息的格式的反馈消息:所述第一Redis队列的名称,所述第二Redis队列的名称,所述服务端对所述请求消息进行处理后的结果状态,所述服务端对所述请求消息进行处理后的处理结果,所述请求消息中所述包括的所述请求消息的序列号。

根据本发明的一方面,提供了一种消息处理装置,包括:第一发送模块,用于采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;第一接收模块,用于采用第二Redis队列作为中间传输介质接收所述服务端对所述请求消息进行处理后反馈的反馈消息。

可选地,所述第一发送模块,还用于在所述服务端为多个的情况下,所述请求消息中携带有用于标识所述服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

可选地,所述第一发送模块包括:第一封装单元,用于将所述请求消息封装成包括以下信息的格式:所述服务端的名称,请求的所述远程的方法,请求远程调用的参数,所述请求消息的序列号;第一序列化单元,用于将封装后的请求消息序列化成字符串;第一发送单元,用于将序列化后的请求消息使用Redis的rpush方法发送给所述第一Redis队列,用于通过所述第一Redis队列发送给所述服务端。

可选地,所述第一接收模块包括:第一读取单元,用于从所述第二Redis队列中读取所述服务端反馈的反馈消息;第一反序列化单元,用于将所述反馈消息反序列化成包括以下信息的格式:所述第一Redis队列的名称,所述第二Redis队列的名称,所述服务端对所述请求消息进行处理后的结果状态,所述服务端对所述请求消息进行处理后的处理结果,所述请求消息中所述包括的所述请求消息的序列号;获得单元,用于根据反序列化后的反馈消息获得所述远程调用对应的处理结果。

根据本发明的另一方面,提供了一种客户端,包括:上述任一项所述的装置。

根据本发明的一方面,提供了一种消息处理装置,包括:第二接收模块,用于采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;处理模块,用于对所述请求消息进行处理后获得反馈消息;反馈模块,用于采用第二Redis队列作为中间传输介质向所述客户端反馈所述反馈消息。

可选地,所述反馈模块,还用于在所述客户端为多个的情况下,所述反馈消息中携带有用于标识所述客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈所述反馈消息。

可选地,所述处理模块包括:第二反序列化单元,用于将从所述第一Redis队列中读取的所述请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的所述远程的方法,请求远程调用的参数,所述请求消息的序列号;第二读取单元,用于从反序列化后的消息中读取请求的所述远程的方法,请求远程调用的参数,获得对应处理结果;第二封装单元,用于将所述处理结果封装成包括以下信息的格式的反馈消息:所述第一Redis队列的名称,所述第二Redis队列的名称,所述服务端对所述请求消息进行处理后的结果状态,所述服务端对所述请求消息进行处理后的处理结果,所述请求消息中所述包括的所述请求消息的序列号。

根据本发明的一方面,提供了一种服务端,包括:上述任一项所述的装置。

根据本发明的还一方面,提供了一种消息处理系统,包括:上述所述的客户端,上述所示的服务端,以及作为所述客户端和所述服务端之间的中间传输介质用于传输消息的Redis集群。

根据本发明的还一方面,提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序执行上述任意一项所述的消息处理方法。

根据本发明的还一方面,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述任意一项所述的消息处理方法。

在本发明实施例中,采用Redis队列作为所述客户端和所述服务端之间的中间传输介质,解决了相关技术中,实现RPC存在处理复杂,效率低的技术问题。达到了实现RPC处理简单,高效的目的。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的消息处理方法一的流程图;

图2是根据本发明实施例的消息处理方法二的流程图;

图3是根据本发明实施例的RPC的架构示意图;

图4是根据本发明实施例的RPC客户端的请求消息的格式示意图;

图5是根据本发明实施例的RPC服务端返回的结果消息的格式示意图;

图6是根据本发明实施例的RPC服务端的消息处理流程图;

图7是根据本发明实施例提供的RPC客户端的消息处理的流程图;

图8是根据本发明实施例的消息处理装置一的结构框图;

图9是根据本发明实施例的消息处理装置一中第一发送模块82的优选结构框图;

图10是根据本发明实施例的消息处理装置一中第一接收模块84的优选结构框图;

图11是根据本发明实施例的客户端的结构框图;

图12是根据本发明实施例的消息处理装置二的结构框图;

图13是根据本发明实施例的消息处理装置二中处理模块124的优选结构框图;

图14是根据本发明实施例的服务端的结构框图;

图15是根据本发明实施例的消息处理系统的结构框图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本发明实施例,提供了一种消息处理方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图1是根据本发明实施例的消息处理方法一的流程图,如图1所示,该方法包括如下步骤:

步骤S102,采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;

步骤S104,采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息。

通过上述步骤,在客户端侧,采用Redis队列作为客户端和服务端之间的中间传输介质,由于Redis队列作为一种性能高效的内存数据库,具有高效地读写,存储以及传输消息的功能,因此,解决了相关技术中,实现RPC存在处理复杂,效率低的技术问题。达到了实现RPC处理简单,高效的目的。

为加快消息的发送,在采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息时,可以采用多个服务端进行并发处理的方式。即在服务端为多个的情况下,请求消息中携带有用于标识服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

相对于相关技术中,需要在消息中封装多种信息,在采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息时,可以采用以下封装方式:将请求消息封装成包括以下信息的格式:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;将封装后的请求消息序列化成字符串;将序列化后的请求消息使用Redis的rpush方法发送给第一Redis队列,用于通过第一Redis队列发送给服务端。采用封装一些需要的消息,相对于相关技术的封装方式,有效地减少了通信量。

在采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息时,对应于的处理,采用对应的处理方式:从第二Redis队列中读取服务端反馈的反馈消息;将反馈消息反序列化成包括以下信息的格式:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号;根据反序列化后的反馈消息获得远程调用对应的处理结果。

图2是根据本发明实施例的消息处理方法二的流程图,如图2所示,该方法包括如下步骤:

步骤S202,采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;

步骤S204,对请求消息进行处理后获得反馈消息;采用第二Redis队列作为中间传输介质向客户端反馈反馈消息。

通过上述步骤,在服务端侧,采用Redis队列作为客户端和服务端之间的中间传输介质,由于Redis队列作为一种性能高效的内存数据库,具有高效地读写,存储以及传输消息的功能,因此,解决了相关技术中,实现RPC存在处理复杂,效率低的技术问题。达到了实现RPC处理简单,高效的目的。

同样,为加快消息的发送,在采用第二Redis队列作为中间传输介质向客户端反馈反馈消息时,也可以采用多个服务端进行并发处理的方式。例如,在客户端为多个的情况下,反馈消息中携带有用于标识客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈反馈消息。

可选地,对请求消息进行处理后获得反馈消息时,依据消息内容的不同,可以采用不同的处理方式,例如,可以采用以下一种处理方式:将从第一Redis队列中读取的请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;从反序列化后的消息中读取请求的远程的方法,请求远程调用的参数,获得对应处理结果;将处理结果封装成包括以下信息的格式的反馈消息:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号。采用封装少量需要的消息,相对于相关技术的封装大量消息的方式,有效地减少了通信量。

由于Redis为一个性能卓越的内存数据库,能支持超过100K+每秒的读写频率,每次读写都是原子操作,还有很多高级功能,在实际项目中常常用到。因此,在上述实施例及优选实施方式所提供的新的消息处理方法,基于开源内存数据库Redis队列实现RPC框架,达到高可用,高性能,适合在已部署有Redis的项目中使用。

在上述实施例及优选实施方式中,主要将Redis提供的队列list作为消息传递层来实现的。首先在Redis中创建一个消息队列SERVER-Q(即上述实施例及优选实施例中所提到的第一Redis队列);RPC的服务端进程负责监听SERVER-Q新的消息;RPC的客户端进程往这个SERVER-Q消息队列发送消息。客户端也在Redis中创建一个队列CLIENT-Q(即上述实施例及优选实施例中所提到的第二Redis队列)用于接收服务端执行完请求方法后返回的结果消息;客户端在发送消息到SERVER-Q时,封装的消息需要带上CLIENT-Q的ID;服务端根据接收到的消息完成请求方法得到结果,根据ID将结果消息发往CLIENT-Q;客户端监听CLIENT-Q得到结果。

其中,服务端和客户端在Redis上队列可以创建多个,监听队列的客户端和服务端可以是多个,充分保证了消息队列的高可用和高并发,Redis内部对自定义消息格式的封装使得我们不需要关心底层消息的封包和解包,方便程序消息发送和接收的高性能处理。

下面结合附图,对本发明优选实施方式进行说明。

图3是根据本发明实施例的RPC的架构示意图,如图3所示,该RPC包括三部分,其中,左边第一部分为RPC的客户端,中间为传输介质Redis集群,右边为RPC的服务端。

客户端部分可以开启多个发送请求和接收结果,客户端封装请求发送到SERVER-Q,从CLIENT-Q中读取结果。客户端可以创建多个CLIENT-Q用于接收请求。

服务端部分负责监听SERVER-Q消息队列,读取消息根据消息中的指定方法和参数执行,将结果发送到客户端指定的CLIENT-Q中;服务端可以开启多个监听SERVER-Q处理消息,增加性能。

Redis集群是独立的服务,作为整个RPC的消息分发中介,具有高可用、高性能的特点,维护客户端和服务端创建的消息队列,并解决多个客户端竞争队列问题。

图4是根据本发明实施例的RPC客户端的请求消息的格式示意图,如图4所示,Src表示客户端监听的CLIENT-Q消息队列名字;Dst表示客户端发送到SERVER-Q消息队列的名字;Method表示RPC请求服务端远程方法名字;Param表示执行远程方法传入的参数;Id表示本消息的序列号。

图5是根据本发明实施例的RPC服务端返回的结果消息的格式示意图,如图5所示,Src表示服务端监听的SERVER-Q消息队列名字;Dst表示服务端结果发送要CLIENT-Q消息队列的名字;Status表示服务端执行方法的结果状态码;Result表示服务端执行方法后得到的结果内容;Id表示客户端发送请求消息的ID。

图6是根据本发明实施例的RPC服务端的消息处理流程图,如图6所示,该流程包括如下步骤:

S601,服务端连接到Redis;

S602,服务端在Redis中创建一个SERVER-Q消息队列,用于接收RPC客户端请求消息;

下面是服务端循环处理过程。

S603,服务端使用Redis的blpop/lpop命令读取SERVER-Q消息队列,如果有消息则返回队列最前面的一条;如果没有消息lpop立即返回空,blpop是将当前进程阻塞,也可以配置一个阻塞时间timeout。

S604,服务端读到一个字符串消息,将消息反序列化成消息对象实例,得到(Src、Dst、Method、Param、Id)格式的请求消息对象。

S605,服务端从请求消息中读取Method和Param,使用Param参数执行本地的Method,得到结果。

S606,服务端将执行结果封装成结果消息格式(Src、Dst、Status、Result、Id)。Src填SERVER-Q的名字,Dst填请求消息中的Src名字,Status填本次执行结果状态,Result填本次结果的内容,Id填请求信息中的Id。

S607,将结果消息对象序列化成字符串。

S608,将序列化后的消息使用rpush发送到请求消息中Src指定的消息队列CLIENT-Q。

S603到S608是循环过程,读取SERVER-Q队列的消息进行处理,把处理结果发送到CLIENT-Q。

图7是根据本发明实施例提供的RPC客户端的消息处理的流程图,如图7所示,该流程包括如下步骤:

S701,客户端连接上Redis。

S702至S704是发送请求的过程。

S702,客户端要请求一个远程调用,将本地监听CLIENT-Q的名字,服务端SERVER-Q的名,远程的方法,请求参数,本消息的序号封装成请求消息格式(Src、Dst、Method、Param、Id)。

S703,客户端将请求消息对象序列化成字符串。

S704,客户端将序列化后的消息使用Redis的rpush方法发往SERVER-Q。

S705,客户端使用blpop/lpop从CLIENT-Q中读取一条结果消息。如果有消息则返回队列最前面的一条;如果没有消息lpop立即返回空,blpop是将当前进程阻塞,也可以配置一个阻塞时间timeout。

S706,客户端读取到一条字符串消息后,将消息反序列化为结果消息对象,格式为(Src、Dst、Status、Result、Id)。

S707,客户端处理结果消息对象。

S705到S707是接收结果消息的过程。

客户端发送消息和接收消息可以是一个异步的过程(即客户端发送请求后,不必挂起等待消息返回,期间可以执行其它操作),也可以是同步的过程(即客户端发送请求后,挂起等待消息返回,期间不可执行其它操作),根据需要灵活编程。

通过上述实施例及优选实施方式,能够实现以下技术效果:

1)高效性:依赖内存数据库Redis的提供的队列,读写性能高;Redis屏蔽底层通信的细节,不用考虑消息发送分包和解包,直接处理应用层消息,这保证RPC的客户端和服务端通过队列能快速的发送和接收消息。

2)消息格式简洁:通信量远比超文本传输协议(Hyper Text Transfer Protocol,简称为HTTP)少,增加系统处理能力。

3)安全性:通过Redis的rpush命令写队列,Redis的blpop/lpop命令(移除并返回队列的头元素命令)读队列是线程安全的,解决了分布式环境下多客户端竞争问题。

4)可扩展:RPC的服务端和客户端可以在Redis上开辟任意数量的队列,消息内容中的Src、Dst、Id保证消息正确传递,极其容易扩展。

5)高并发:RPC的客户端和服务端可以为多个并发,加快消息发送和消息处理。

6)高可用:依赖Redis采用主从方式部署集群,主机器宕机,从机器切换到主机器。客户端和服务端连接Redis出现网络故障,重新连接消息也不会丢失。

根据本发明实施例,还提供了一种消息处理装置的装置实施例,图8是根据本发明实施例的消息处理装置一的结构框图,如图8所示,该装置包括:第一发送模块82和第一接收模块84,下面对该装置进行说明。

第一发送模块82,用于采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;第一接收模块84,连接至上述第一发送模块82,用于采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息。

可选地,该第一发送模块82,还用于在服务端为多个的情况下,请求消息中携带有用于标识服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

图9是根据本发明实施例的消息处理装置一中第一发送模块82的优选结构框图,如图9所示,该第一发送模块82包括:第一封装单元92,第一序列化单元94和第一发送单元96,下面对该第一发送模块82进行说明。

第一封装单元92,用于将请求消息封装成包括以下信息的格式:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;第一序列化单元94,连接至上述第一封装单元92,用于将封装后的请求消息序列化成字符串;第一发送单元96,连接至上述第一序列化单元94,用于将序列化后的请求消息使用Redis的rpush方法发送给第一Redis队列,用于通过第一Redis队列发送给服务端。

图10是根据本发明实施例的消息处理装置一中第一接收模块84的优选结构框图,如图10所示,该第一接收模块84包括:第一读取单元102,第一反序列化单元104和获得单元106,下面对该第一接收模块84进行说明。

第一读取单元102,用于从第二Redis队列中读取服务端反馈的反馈消息;第一反序列化单元104,连接至上述第一读取单元102,用于将反馈消息反序列化成包括以下信息的格式:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号;获得单元106,连接至上述第一反序列化单元104,用于根据反序列化后的反馈消息获得远程调用对应的处理结果。

图11是根据本发明实施例的客户端的结构框图,如图11所示,该客户端110包括上述任一项的消息处理装置一112。

图12是根据本发明实施例的消息处理装置二的结构框图,如图12所示,该装置包括:第二接收模块122、处理模块124和反馈模块126,下面对该装置进行说明。

第二接收模块122,用于采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;处理模块124,连接至上述第二接收模块122,用于对请求消息进行处理后获得反馈消息;反馈模块126,,连接至上述处理模块124,用于采用第二Redis队列作为中间传输介质向客户端反馈反馈消息。

可选地,上述反馈模块126,还用于在客户端为多个的情况下,反馈消息中携带有用于标识客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈反馈消息。

图13是根据本发明实施例的消息处理装置二中处理模块124的优选结构框图,如图13所示,该处理模块124包括:第二反序列化单元132、第二读取单元134和第二封装单元136,下面对该处理模块124进行说明。

第二反序列化单元132,用于将从第一Redis队列中读取的请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;第二读取单元134,连接至上述第二反序列化单元132,用于从反序列化后的消息中读取请求的远程的方法,请求远程调用的参数,获得对应处理结果;第二封装单元136,连接至上述第二读取单元134,用于将处理结果封装成包括以下信息的格式的反馈消息:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号。

图14是根据本发明实施例的服务端的结构框图,如图14所示,该服务端140,包括:上述任一项的消息处理装置一142。

图15是根据本发明实施例的消息处理系统的结构框图,如图15所示,该消息处理系统150,包括:上述的客户端110,上述所示的服务端140,以及作为客户端和服务端之间的中间传输介质用于传输消息的Redis集群152。

在本发明实施例中,还提供了一种存储介质,存储介质包括存储的程序,其中,程序用于执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息。

可选地,程序还用于执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息包括:在服务端为多个的情况下,请求消息中携带有用于标识服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

可选地,程序还用于执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息包括:将请求消息封装成包括以下信息的格式:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;将封装后的请求消息序列化成字符串;将序列化后的请求消息使用Redis的rpush方法发送给第一Redis队列,用于通过第一Redis队列发送给服务端。

可选地,程序还用于执行以下步骤的程序代码:采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息包括:从第二Redis队列中读取服务端反馈的反馈消息;将反馈消息反序列化成包括以下信息的格式:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号;根据反序列化后的反馈消息获得远程调用对应的处理结果。

在本发明实施例中,还提供了一种存储介质,存储介质包括存储的程序,其中,程序用于执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;对请求消息进行处理后获得反馈消息;采用第二Redis队列作为中间传输介质向客户端反馈反馈消息。

可选地,程序还用于执行以下步骤的程序代码:采用第二Redis队列作为中间传输介质向客户端反馈反馈消息包括:在客户端为多个的情况下,反馈消息中携带有用于标识客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈反馈消息。

可选地,程序还用于执行以下步骤的程序代码:对请求消息进行处理后获得反馈消息包括:将从第一Redis队列中读取的请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;从反序列化后的消息中读取请求的远程的方法,请求远程调用的参数,获得对应处理结果;将处理结果封装成包括以下信息的格式的反馈消息:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号。

在本发明实施例中,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息;采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息。

可选地,程序运行时还执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息包括:在服务端为多个的情况下,请求消息中携带有用于标识服务端的标识信息,采用多个第一Redis队列作为中间传输介质向多个服务端并行发送用于请求远程调用的请求消息。

可选地,程序运行时还执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质向服务端发送用于请求远程调用的请求消息包括:将请求消息封装成包括以下信息的格式:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;将封装后的请求消息序列化成字符串;将序列化后的请求消息使用Redis的rpush方法发送给第一Redis队列,用于通过第一Redis队列发送给服务端。

可选地,程序运行时还执行以下步骤的程序代码:采用第二Redis队列作为中间传输介质接收服务端对请求消息进行处理后反馈的反馈消息包括:从第二Redis队列中读取服务端反馈的反馈消息;将反馈消息反序列化成包括以下信息的格式:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号;根据反序列化后的反馈消息获得远程调用对应的处理结果。

在本发明实施例中,还提供了一种处理器,处理器用于运行程序,其中,程序运行时执行以下步骤的程序代码:采用第一Redis队列作为中间传输介质接收客户端发送的用于请求远程调用的请求消息;对请求消息进行处理后获得反馈消息;采用第二Redis队列作为中间传输介质向客户端反馈反馈消息。

可选地,程序运行时还执行以下步骤的程序代码:采用第二Redis队列作为中间传输介质向客户端反馈反馈消息包括:在客户端为多个的情况下,反馈消息中携带有用于标识客户端的标识信息,采用多个第二Redis队列作为中间传输介质向多个客户端反馈反馈消息。

可选地,程序运行时还执行以下步骤的程序代码:对请求消息进行处理后获得反馈消息包括:将从第一Redis队列中读取的请求消息反序列化得到包括以下信息的格式的消息:服务端的名称,请求的远程的方法,请求远程调用的参数,请求消息的序列号;从反序列化后的消息中读取请求的远程的方法,请求远程调用的参数,获得对应处理结果;将处理结果封装成包括以下信息的格式的反馈消息:第一Redis队列的名称,第二Redis队列的名称,服务端对请求消息进行处理后的结果状态,服务端对请求消息进行处理后的处理结果,请求消息中包括的请求消息的序列号。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

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

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

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

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