CN101902458B - 跨主机进程间通信的方法、装置及系统 - Google Patents
跨主机进程间通信的方法、装置及系统 Download PDFInfo
- Publication number
- CN101902458B CN101902458B CN 201010112646 CN201010112646A CN101902458B CN 101902458 B CN101902458 B CN 101902458B CN 201010112646 CN201010112646 CN 201010112646 CN 201010112646 A CN201010112646 A CN 201010112646A CN 101902458 B CN101902458 B CN 101902458B
- Authority
- CN
- China
- Prior art keywords
- service
- key
- value pair
- value
- type
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 285
- 238000004891 communication Methods 0.000 title claims abstract description 123
- 230000008569 process Effects 0.000 claims abstract description 237
- 230000005540 biological transmission Effects 0.000 claims description 21
- 230000008878 coupling Effects 0.000 claims description 8
- 238000010168 coupling process Methods 0.000 claims description 8
- 238000005859 coupling reaction Methods 0.000 claims description 8
- 238000012545 processing Methods 0.000 claims description 8
- 230000007547 defect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 23
- 230000002950 deficient Effects 0.000 description 12
- 230000002452 interceptive effect Effects 0.000 description 11
- 229910002056 binary alloy Inorganic materials 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000344 soap Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种跨主机进程间通信的方法、装置及系统,其中该方法包括接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;通过解析所述数据包,获取并识别所述数据包类型;当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。本发明的技术方案解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷。
Description
技术领域
本发明涉及网络通讯技术,特别涉及基于分布式系统的一种跨主机进程间通信的方法、装置及系统。
背景技术
在现有技术的分布式系统中包含多个主机,且每个主机包含有多个进程。目前,常通过跨主机的进程间通信的方式,以达到各主机相互协作的目的,从而完成分布式系统中的任务。
进程间通信的模式可包括服务调用和消息通知,其中,
服务调用为同步方式,参与者为服务提供进程和服务调用进程。服务调用进程向服务提供进程发出服务的请求数据并等待服务进程返回结果数据,服务提供进程接到请求服务的数据后处理数据执行服务过程并把处理的结果返回给服务调用进程,服务调用进程得到结果后结束等待,则服务调用完成。
消息通知为异步方式,参与者为消息发送进程和消息接收进程。当有消息需要发送时,消息发送进程发送消息到消息接收进程,消息接收进程收到消息并进行处理,此时消息发送进程则不需要等待处理的结果。
目前,进程间通信一般都是采用基于IP协议的通信协议来实现的,所述基于IP协议的通信协议,主要包括RMI通信协议、XML-RPC通信协议、Binary-RPC通信协议,SOAP通信协议和CORBA通信协议,其中,RMI通信协议、XML-RPC通信协议、Binary-RPC通信协议和SOAP通信协议只能支持服务调用,而不支持消息通知;虽然CORBA通信协议虽然能同时支持服务调用和消息通知,但是在客户端和服务端所建立的同一TCP连接上无法实现,而只能在客户端和服务端所建立的不同TCP连接上实现,由于客户端和服务端处于复杂的网络环境中,它们之间设有防火墙,而建立多个TCP连接来实现服务调用和消息通知,则会产生多个TCP连接不便于穿越防火墙的问题,从而影响了客户端和服务端进行进程间通信的效率。
发明内容
本发明实施例提供一种跨主机进程间通信的方法、装置及系统,用以解决现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷。
本发明实施例一方面提供一种跨主机进程间通信的方法,包括:
接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
通过解析所述数据包,获取并识别所述数据包类型;
当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
本发明实施例另一方面提供一种跨主机进程间通信的方法,包括:
接收服务调用代码发送的服务请求数据;
根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;
并向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求。
本发明实施例另一方面提供一种跨主机进程间通信的装置,包括:
接收模块,所述接收模块用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
获取识别模块,所述获取识别模块用于通过解析所述数据包,获取并识别所述数据包类型;
获取模块,所述获取模块用于当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
生成模块,所述生成模块用于根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
处理模块,所述处理模块用于根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
本发明实施例另一方面提供一种跨主机进程间通信的装置,包括:
第一接收模块,所述第一接收模块用于接收服务调用代码发送的服务请求数据;
生成模块,所述生成模块用于根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;
发送模块,所述发送模块用于向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求。
本发明实施例另一方面提供一种跨主机进程间通信的系统,包括服务端和客户端,所述客户端包括客户端进程引擎,所述服务端包括服务端进程引擎,
所述客户端进程引擎用于接收服务调用代码发送的服务请求数据;根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;并向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求;
所述服务端进程引擎用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;通过解析所述数据包,获取并识别所述数据包类型;当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
本发明实施例一方面提供一种跨主机进程间通信的方法,包括:
接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
通过解析所述数据包,获取所述数据包类型并识别;
当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;
判断所述消息数据类型键是否在所述消息侦听注册表中,若是,则将并将所述消息值发送给所述消息数据类型键所对应的消息接收代码。
本发明实施例另一方面提供一种跨主机进程间通信的方法,包括:
接收消息发送代码发送的消息数据;
根据所述消息数据,生成数据包类型为消息通知类型的数据包;
并向所述服务端进程引擎发送所述消息通知类型的数据包,以进行消息通知。
本发明实施例另一方面提供一种跨主机进程间通信的装置,包括:
接收模块,所述接收模块用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
获取识别模块,所述获取识别模块用于通过解析所述数据包,获取所述数据包类型并识别;
获取模块,所述获取模块用于当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;
判断模块,所述判断模块用于判断所述消息数据类型键是否在所述消息侦听注册表中;
发送模块,所述发送模块用于当所述判断单元判断出所述消息数据类型键在所述消息侦听注册表中时,将所述消息值发送给所述消息数据类型键所对应的消息接收代码。
本发明实施例另一方面提供一种跨主机进程间通信的装置,包括:
接收模块,所述接收模块用于接收消息发送代码发送的消息数据;
生成模块,所述生成模块用于根据所述消息数据,生成数据包类型为消息通知类型的数据包;
发送模块,所述发送模块用于向所述服务端进程引擎发送所述消息通知类型的数据包,以进行消息通知。
本发明实施例另一方面提供一种跨主机进程间通信的系统,包括:
服务端和客户端,所述客户端包括客户端进程引擎,所述服务端包括服务端进程引擎,
所述客户端进程引擎用于接收消息发送代码发送的消息数据;根据所述消息数据,生成数据包类型为消息通知类型的数据包;并向所述服务端进程引擎发送所述消息通知类型的数据包,以进行消息通知。
所述服务端进程引擎用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;通过解析所述数据包,获取所述数据包类型并识别;当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;判断所述消息数据类型键是否在所述消息侦听注册表中,若是,则将并将所述消息值发送给所述消息数据类型键所对应的消息接收代码。
本发明实施例的跨主机进程间通信的方法、装置及系统,提供了一种跨主机进程间通信的方式,通过接收客户端进程引擎发送的数据包,通过解析数据包,识别数据包所包括的数据包类型为服务请求类型时,利用服务提供代码对数据包所包括的键值对组进行处理,或者识别数据包所包括的数据包类型为消息通知类型时,利用消息接收代码对数据包所包括的键值对组进行处理的技术方案,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一跨主机进程间通信的方法流程图;
图2为本发明实施例二跨主机进程间通信的方法流程图;
图3为本发明实施例三跨主机进程间通信的方法流程图;
图4为本发明实施例四跨主机进程间通信的方法流程图;
图5为本发明实施例五跨主机进程间通信的装置结构示意图;
图6为本发明实施例六跨主机进程间通信的装置结构示意图;
图7为本发明实施例七跨主机进程间通信的装置结构示意图;
图8为本发明实施例八跨主机进程间通信的装置结构示意图;
图9为本发明实施例九跨主机进程间通信的系统结构示意图;
图10为本发明实施例十跨主机进程间通信的系统结构示意图;
图11为本发明数据包的格式示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在JAVA语言所开发的分布式系统中,本发明的客户端和服务端首先建立了一个TCP连接,接着在该TCP连接上进行客户端和服务端的跨主机进程间通信。
在本发明中,跨主机进程间通信具体可为:客户端的服务调用进程和服务端的服务提供进程之间的通信,或者是客户端的消息发送进程和服务端的消息接收进程之间的通信。并且跨主机进程间通信可通过服务端进程引擎和客户端进程引擎来实现。
图1为本发明实施例一跨主机进程间通信的方法流程图。在本实施例中,主要从服务端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信。如图1所示,本实施例跨主机进程间通信的方法包括:
步骤101、接收客户端进程引擎发送的数据包,数据包包括数据包类型和键值对组;
服务端进程引擎接收客户端进程引擎发送的数据包,服务端进程引擎位于服务端,客户端进程引擎位于客户端。如图11为本发明数据包的格式示意图所示,服务端进程引擎和客户端进程引擎之间进行通信所利用的数据包包括数据包类型和键值对组,键值对组包括多个键值对,且键值对的形式为键=值,并且键值对组和数据包类型之间设有空格,各键值对之间设有空格,具体地,在服务端进程引擎和客户端进程引擎之间进行通信所利用的数据包是二进制字节码序列,并且符合下面定义:
(1)数据包的开始是由一个ASCII码为’{‘的开始标识字节组成的,数据包的结束是由一个ASCII码为’}‘的结束标识字节组成的。
(2)数据包中的键值对组是由开始标识字节和结束标识字节之间的而二进制字节组成。数据包中的键值对组不能出现单个的ASCII码为’{‘和ASCII为’}‘的字节数据。
(3)若在键值对组中要使用ASCII码为’{‘和/或ASCII为’}‘的字节,该字节要经过转码操作。即如果原始数据中有ASCII码为’{‘和/或ASCII为’}‘的字节,该原始数据在转换成符合该数据包格式的编码过程中,所有ASCII码为’{‘的字节将被替换成两个ASCII为’{‘的字节,所有ASCII为’}‘的字节将被替换成两个ASCII为’}‘的字节。如果符合该数据包的键值对组中有两个连续的ASCII码为’{‘和/或有两个连续的ASCII为’}‘的字节,该符合该数据包的键值对组在转换成原始数据的解码过程中,所有连续两个ASCII码为’{‘的字节将被替换成单个ASCII为’{‘的字节,所有连续两个ASCII为’}‘的字节将被替换成单个ASCII为’}‘的字节。
(4)数据包的格式为:{包类型键值对1键值对2......键值对n}。
(5)其中数据包类型的定义是以字母开头的由字母和数字组成的小于16个字节的ASCII码字节。数据包类型可分为基本类型和扩展类型。其中,基本类型包括服务请求类型req、服务返回类型resp和消息通知类型msg。扩展类型是指,基本类型定义之外的由用户定义的代表特定功能含义的ASCII串。
(6)数据包中可以有0到n个键值对。键值对之间、键值对与包类型之间由ASCII码为空格的字节分隔。
(7)键值对的格式如下:键=值。其中键的定义是以字母开头的由字母和数字组成的小于16个字节的ASCII码字节,在各键值对中键不能重复。键后用ASCII码为“=”的字节码分割键和值。
(8)键值对中的值是满足上面第3项描述的二进制字节数据。
(9)若键值对中值的二进制字节数据中出现了ASCII码不是屏幕可见字符,该键值对的键部分要变换为如下形式:键%数值长度,其中键部分的定义符合第7项的描述,键后跟ASCII码为“%”的字节码,“%”后跟该键值对值部分的字节长度,该长度用ASCII码描述的10进制数字表示,使用该方式可以传递序列化成2进制数据的Java对象。
步骤102、通过解析数据包,获取并识别数据包类型;
将接收到的数据包通过java的反序列化技术进行解析,获取并识别该数据包的数据包类型,由于在本实施例中,该数据包是客户端进程引擎发往服务端进程引擎,因此数据包类型可为服务请求类型req或消息通知类型msg。
步骤103、当识别数据包类型为服务请求类型时,获取键值对组,且键值对组包括本次服务请求键值对和所需请求服务键值对子组;
由于在本实施例中数据包是在服务调用进程和服务提供进程之间进行通信,因此识别该数据包的数据包类型应该为服务请求类型req,此时,获取该数据包所包括的键值对组,且该键值对组包括本次服务请求键值对和所需请求服务键值对子组,其中,
本次服务请求键值对为ID=n,n为正整数,ID为本次服务请求键值对的键,n为本次服务请求键值对的值,n表示客户端第n次进行服务请求,且客户端每次生成的ID=n是唯一的;在客户端和服务端同一TCP连接下的同一调用服务过程,本次服务请求键值对ID=n可唯一标示服务调用进程和服务提供进程之间传递的服务请求类型数据包或服务返回类型数据包,即本次服务请求键值对ID=n可唯一标示一客户端和服务端的服务调用过程;
所需请求服务键值对子组包括所需请求服务标识键值对,所需请求服务标识键值对包括所需请求服务标识键和第一值,所需请求服务标识键=第一值,且所需请求服务标识键表示客户端所需请求的服务,第一值表示客户端请求该服务的次数;具体地,该服务请求数据包可为{req:ID=5add=3},其中,add=3为请求服务标识键值,add为请求服务标识键值对的键,3为请求服务标识键值对的值,整个数据包表示客户端向服务端进行的本次服务请求为第5次,且进行对add的服务请求为第3次。
进一步地,所需请求服务键值对子组有时候还包括至少一个服务参数键值对,且服务参数键值对包括服务参数类型键和第四值,服务参数类型键=第四值,具体地,该服务请求数据包可为{req:ID=5 add=3 int a=10 intb=20},其中包括了两个服务参数键值对int a=10和int b=20,以服务参数键值对int a=10为例,int a为服务参数键值对的键,表示变量a为整型,10为服务参数键值对的值,因此整个数据包表示客户端向服务端进行的本次服务请求为第5次,且进行对add的服务请求为第3次,且add的服务请求为对整型的两个数进行相加。
步骤104、根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
其中,服务请求状态键值对包括状态标识键stat和第二值,且stat=第二值,服务请求状态键值对表示本次请求成功与否;服务返回数据键值对包括结果标识键result和第三值,且result=第三值,服务返回数据键值对表示从服务提供代码所获得的返回消息;
当所需请求服务键值对子组仅包括所需请求服务标识键值对时,根据所需请求服务标识键值对,查询服务注册表中是否存在所需请求服务标识键,若是,则通过调用服务提供代码,获取调用服务提供代码所返回的服务结果;并生成第二值为成功标识OK的服务请求状态键值对stat=ok,和第三值为服务结果的服务返回数据键值对result=服务结果;若服务注册表中不存在所需请求服务标识键,则生成第二值为失败标识error的服务请求状态键值对stat=error和第三值为错误信息的服务返回数据键值对result=错误信息。
该查询服务注册表在服务端生成,并保存在服务端进程引擎中,具体地,由服务注册代码将服务端所包含的服务注册到服务端进程引擎以在服务端进程引擎中生成服务注册表;
进一步地,当所需请求服务键值对子组包括所需请求服务标识键值对和至少一个服务参数键值对时,则根据所需请求服务标识键值对,查询服务注册表中是否存在所需请求服务标识键,并判断服务参数类型键和第四值是否匹配合法,例如一个服务参数键值对为int a=10,则判断10是否是整型;若所需请求服务标识键存在于服务注册表中,且服务参数类型键和第四值匹配合法,则通过调用服务提供代码,获取服务提供代码的返回消息;若返回消息为服务结果,则生成第二值为成功标识ok的服务请求状态键值对stat=ok,和第三值为服务结果的服务返回数据键值对result=服务结果;
若所需请求服务标识键不存在于服务注册表中和/或服务参数类型键和第四值匹配不合法,则生成第二值为失败标识error的服务请求状态键值对stat=error和第三值为错误信息的服务返回数据键值对result=错误信息;
若获取到服务提供代码所返回的错误信息,则生成第二值为失败标识的服务请求状态键值对stat=error和第三值为错误信息的服务返回数据键值对result=错误信息。
步骤105、根据本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,服务返回数据包的数据包类型为服务返回类型。
服务端进程引擎通过java的序列化技术,封装本次服务请求键值对ID=n,服务请求状态键值对,服务返回数据键值对以及服务返回类型resp,以生成返回数据包并发送至客户端进程引擎,且所生成的返回数据包的键值对组包括本次服务请求键值对ID=n,服务请求状态键值对,服务返回数据键值对,具体地,服务返回数据包为{resp:ID=1 result=30 stat=ok}或{resp:ID=1 result=错误信息stat=error}。
本发明实施例的跨主机进程间通信的方法,在一个TCP连接上的服务端进程引擎侧,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为服务请求类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
对应于上述实施例一是从服务端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信,本实施例主要从客户端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信。图2为本发明实施例二跨主机进程间通信的方法流程图。如图2所示,本实施例跨主机进程间通信的方法包括:
步骤201、接收服务调用代码发送的服务请求数据;
客户端进程引擎接收客户端的服务调用代码发送的服务请求数据,具体地,服务请求数据表示向服务端请求整型数10和20的add服务,并且客户端进程引擎进行统计本次服务请求是客户端向服务端进行第5次服务请求,且进行对add的服务请求为第3次。
步骤202、根据服务请求数据,生成数据包类型为服务请求类型的数据包;
客户端进程引擎将服务请求数据通过java的序列化技术进行封装,以生成数据包类型为服务请求类型rep的数据包,具体地,发送上述实施例一中的服务请求数据包为{req:ID=5 add=3 int a=10 int b=20};
步骤203、并向服务端进程引擎发送服务请求类型的数据包,以进行服务请求。
进一步地,本实施例跨主机进程间通信的方法还包括:
接收服务端进程引擎返回的服务返回数据包,服务返回数据包包括本次服务请求键值对ID=n、服务请求状态键值对和服务返回数据键值对;
通过java的反序列化技术解析服务返回数据包,获取服务请求状态键值对和服务返回数据键值对;
若服务请求状态键值对所包括的第二值为成功标识ok,则将服务返回数据键值对所包括的第三值发送给服务调用代码,以使服务调用代码获得其所发起的服务调用的返回信息。
本发明实施例的跨主机进程间通信的方法,通过在一个TCP连接上,客户端进程引擎将服务请求数据封装成服务请求类型的数据包并发送的技术方案,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
在本实施例中,跨主机进程间通信具体可为,客户端的服务调用进程和服务端的服务提供进程之间的通信,并且服务调用进程和服务提供进程之间进行通信可利用服务端进程引擎和客户端进程引擎来实现,其中,在服务提供进程侧的跨主机进程间通信的方法,由以下叙述来说明。
图3为本发明实施例三跨主机进程间通信的方法流程图。在本实施例中,主要从服务端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信。如图3所示,本实施跨主机进程间通信的方法包括:
步骤301、接收客户端进程引擎发送的数据包,数据包包括数据包类型和键值对组;
服务端进程引擎接收客户端进程引擎发送的数据包,服务端进程引擎位于服务端,客户端进程引擎位于客户端。如图11为本发明数据包的格式示意图所示,服务端进程引擎和客户端进程引擎之间进行通信所利用的数据包包括数据包类型和键值对组,键值对组包括多个键值对,且键值对的形式为键=值,并且键值对组和数据包类型之间设有空格,各键值对之间设有空格,具体地,在服务端进程引擎和客户端进程引擎之间进行通信所利用的数据包是二进制字节码序列,并且符合下面定义:
(1)数据包的开始是由一个ASCII码为’{‘的开始标识字节组成的,数据包的结束是由一个ASCII码为’}‘的结束标识字节组成的。
(2)数据包中的键值对组是由开始标识字节和结束标识字节之间的而二进制字节组成。数据包中的键值对组不能出现单个的ASCII码为’{‘和ASCII为’}‘的字节数据。
(3)若在键值对组中要使用ASCII码为’{‘和/或ASCII为’}‘的字节,该字节要经过转码操作。即如果原始数据中有ASCII码为’{‘和/或ASCII为’}‘的字节,该原始数据在转换成符合该数据包格式的编码过程中,所有ASCII码为’{‘的字节将被替换成两个ASCII为’{‘的字节,所有ASCII为’}‘的字节将被替换成两个ASCII为’}‘的字节。如果符合该数据包的键值对组中有两个连续的ASCII码为’{‘和/或有两个连续的ASCII为’}‘的字节,该符合该数据包的键值对组在转换成原始数据的解码过程中,所有连续两个ASCII码为’{‘的字节将被替换成单个ASCII为’{‘的字节,所有连续两个ASCII为’}‘的字节将被替换成单个ASCII为’}‘的字节。
(4)数据包的格式为:{包类型键值对1键值对2......键值对n}。
(5)其中数据包类型的定义是以字母开头的由字母和数字组成的小于16个字节的ASCII码字节。数据包类型可分为基本类型和扩展类型。其中,基本类型包括服务请求类型req、服务返回类型resp和消息通知类型msg。扩展类型是指,基本类型定义之外的由用户定义的代表特定功能含义的ASCII串。
(6)数据包中可以有0到n个键值对。键值对之间、键值对与包类型之间由ASCII码为空格的字节分隔。
(7)键值对的格式如下:键=值。其中键的定义是以字母开头的由字母和数字组成的小于16个字节的ASCII码字节,在各键值对中键不能重复。键后用ASCII码为“=”的字节码分割键和值。
(8)键值对中的值是满足上面第3项描述的二进制字节数据。
(9)若键值对中值的二进制字节数据中出现了ASCII码不是屏幕可见字符,该键值对的键部分要变换为如下形式:键%数值长度,其中键部分的定义符合第7项的描述,键后跟ASCII码为“%”的字节码,“%”后跟该键值对值部分的字节长度,该长度用ASCII码描述的10进制数字表示,使用该方式可以传递序列化成2进制数据的Java对象。
步骤302、通过解析数据包,获取数据包类型并识别;
将接收到的数据包通过java的反序列化技术进行解析,获取并识别该数据包的数据包类型,由于在本实施例中,该数据包是客户端进程引擎发往服务端进程引擎,因此数据包类型可为服务请求类型req或消息通知类型msg。
步骤303、当识别数据包类型为消息通知类型时,获取键值对组,键值对组包括至少一个消息数据键值对,消息数据键值对包括消息数据类型键和消息值;
由于在本实施例中数据包是在消息发送进程和消息接收进程之间进行通信,因此识别该数据包的数据包类型应该为消息通知类型msg,此时,获取该数据包所包括的键值对组,且该键值对组包括至少一个消息数据键值对,消息数据键值对包括消息数据类型键和消息值,并且消息数据类型键=消息值,消息数据类型键表示客户端进程引擎所发送消息数据的类型,消息值为消息数据的具体内容,具体地,该服务请求数据包可为{msg:消息数据类型键=消息值}。
步骤304、判断消息数据类型键是否在消息侦听注册表中,若是,则将并将消息值发送给消息数据类型键所对应的消息接收代码。
服务端进程引擎判断消息数据类型键是否在消息侦听注册表中,若是,说明服务端进程引擎正在侦听该消息数据类型键所表示的消息数据类型,且则将并将消息值发送给消息数据类型键所对应的消息接收代码,其中,该消息侦听注册表在服务端生成,并保存在服务端进程引擎中,具体地,由消息侦听注册代码将服务端所需侦听的消息数据类型注册到服务端进程引擎,以在服务端进程引擎中生成服务注册表。
本发明实施例的跨主机进程间通信的方法,在一个TCP连接上的服务端进程引擎侧,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为消息通知类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
对应于上述实施例三是从服务端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信,本实施例主要从客户端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信。图4为本发明实施例四跨主机进程间通信的方法流程图。如图4所示,本实施例跨主机进程间通信的方法包括:
步骤401、接收消息发送代码发送的消息数据;
客户端进程引擎接收客户端的接收消息发送代码发送的消息数据。
步骤402、根据消息数据,生成数据包类型为消息通知类型的数据包;
客户端进程引擎将消息数据通过java的序列化技术进行封装,以生成数据包类型为消息通知类型msg的数据包,具体地,该服务请求数据包可为{msg:消息数据类型键=消息值}。
步骤403、并向服务端进程引擎发送消息通知类型的数据包,以进行消息通知。
本发明实施例的跨主机进程间通信的方法,在一个TCP连接上,通过客户端进程引擎将消息数据封装成消息通知类型的数据包并发送的技术方案,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
图5为本发明实施例五跨主机进程间通信的装置结构示意图。在本实施例中,主要从服务端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信。如图5所示,本实施例的跨主机进程间通信的装置包括:接收模块51、获取识别模块52、获取模块53、生成模块54和处理模块55,其中,
接收模块51用于接收客户端进程引擎发送的数据包,数据包包括数据包类型和键值对组;获取识别模块52用于通过解析数据包,获取并识别数据包类型;获取模块53当识别数据包类型为服务请求类型时,获取键值对组,且键值对组包括本次服务请求键值对和所需请求服务键值对子组,所需请求服务键值对子组包括所需请求服务标识键值对,所需请求服务标识键值对包括所需请求服务标识键和第一值,所需请求服务标识键=第一值,且所需请求服务标识键表示客户端所需请求的服务,第一值表示客户端请求该服务的次数,进一步地,所需请求服务键值对子组有时候还包括至少一个服务参数键值对,且服务参数键值对包括服务参数类型键和第四值,服务参数类型键=第四值;生成模块54根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对,其中,服务请求状态键值对包括状态标识键stat和第二值,且stat=第二值,服务请求状态键值对表示本次请求成功与否;服务返回数据键值对包括结果标识键result和第三值,且result=第三值,服务返回数据键值对表示从服务提供代码所获得的返回消息;处理模块55根据本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,服务返回数据包的数据包类型为服务返回类型。
进一步地,生成模块54还包括查询单元541,获取单元542,生成单元543和判断模块544,其中,
当所需请求服务键值对子组仅包括所需请求服务标识键值对时,查询单元541用于根据所需请求服务标识键值对,查询服务注册表中是否存在所需请求服务标识键;获取单元542用于当查询单元541查询到服务注册表中存在所需请求服务标识键时,通过调用服务提供代码,获取调用服务提供代码所返回的服务结果;生成单元543用于生成第二值为成功标识OK的服务请求状态键值对stat=ok,和第三值为服务结果的服务返回数据键值对result=服务结果;进一步地,生成单元543还用于当查询单元541查询到服务注册表中不存在所需请求服务标识键时,生成第二值为失败标识error的服务请求状态键值对stat=error,和第三值为错误信息的服务返回数据键值对result=错误信息。
该查询服务注册表在服务端生成,并保存在服务端进程引擎中,具体地,由服务注册代码将服务端所包含的服务注册到服务端进程引擎以在服务端进程引擎中生成服务注册表;
进一步地,当所需请求服务键值对子组包括所需请求服务标识键值对和至少一个服务参数键值对时,查询单元541用于根据所需请求服务标识键值对,查询服务注册表中是否存在所需请求服务标识键,接着判断单元544用于判断服务参数类型键和第四值是否匹配合法,例如一个服务参数键值对为int a=10,则判断10是否是整型;获取单元542用于若所需请求服务标识键存在于服务注册表中,且服务参数类型键和第四值匹配合法,则通过调用服务提供代码,获取服务提供代码的返回消息;生成单元543用于若返回消息为服务结果,则生成第二值为成功标识OK的服务请求状态键值对stat=ok,和第三值为服务结果的服务返回数据键值对result=服务结果;
进一步地,生成单元543还用于若获取到服务提供代码所返回的错误信息,则生成第二值为失败标识的服务请求状态键值对stat=error和第三值为错误信息的服务返回数据键值对result=错误信息
再进一步地,生成单元543还用于若所需请求服务标识键不存在于服务注册表中和/或服务参数类型键和第四值匹配不合法,则生成第二值为失败标识error的服务请求状态键值对stat=error和第三值为错误信息的服务返回数据键值对result=错误信息。
需要说明的是,本实施例的装置在服务提供进程侧进行跨主机进程间通信的具体方法,如上述实施例一中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的装置,在一个TCP连接上的服务端进程引擎侧,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为服务请求类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
对应于上述实施例五是从服务端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信,本实施例主要从客户端进程引擎侧来说明客户端的服务调用进程和服务端的服务提供进程之间的通信。图6为本发明实施例六跨主机进程间通信的装置结构示意图。如图6所示,本实施例跨主机进程间通信的装置包括第一接收模块61、生成模块62和发送模块63,其中,第一接收模块61用于接收服务调用代码发送的服务请求数据;生成模块62用于根据服务请求数据,生成数据包类型为服务请求类型的数据包;发送模块63用于向服务端进程引擎发送服务请求类型的数据包,以进行服务请求。
进一步地,本实施例跨主机进程间通信的装置还包括第二接收模块、获取模块和第二发送模块,其中,第二接收模块用于接收服务端进程引擎返回的服务返回数据包,服务返回数据包包括本次服务请求键值对、服务请求状态键值对和服务返回数据键值对;获取模块用于通过解析服务返回数据包,获取服务请求状态键值对和服务返回数据键值对;第二发送模块用于若服务请求状态键值对所包括的第二值为成功标识,则将服务返回数据键值对所包括的第三值发送给服务调用代码。
需要说明的是,本实施例的装置在服务调用进程侧进行跨主机进程间通信的具体方法,如上述实施例二中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的装置,主要在服务调用进程侧,通过客户端进程引擎接收服务调用代码发送的服务请求数据,生成服务请求类型的数据包并发送的技术方案,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
图7为本发明实施例三跨主机进程间通信的装置结构示意图。在本实施例中,主要从服务端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信。如图7,本实施跨主机进程间通信的装置包括:接收模块71、获取识别模块72、获取模块73,判断模块74和发送模块75,其中,接收模块71用于接收客户端进程引擎发送的数据包,数据包包括数据包类型和键值对组;获取识别模块72用于通过解析数据包,获取数据包类型并识别;获取模块73用于当识别数据包类型为消息通知类型时,获取键值对组,键值对组包括至少一个消息数据键值对,消息数据键值对包括消息数据类型键和消息值;判断模块74用于判断消息数据类型键是否在消息侦听注册表中;发送模块75用于当判断模块74判断出消息数据类型键在消息侦听注册表中时,将消息值发送给消息数据类型键所对应的消息接收代码。
需要说明的是,本实施例的装置在消息接收进程侧进行跨主机进程间通信的具体方法,如上述实施例三中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的装置,在一个TCP连接上的服务端进程引擎侧,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为消息通知类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
对应于上述实施例七是从服务端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信,本实施例主要从客户端进程引擎侧来说明客户端的消息发送进程和服务端的消息接收进程之间的通信。图8为本发明实施例八跨主机进程间通信的装置结构示意图。如图8所示,本实施例跨主机进程间通信的方法包括:接收模块81,生成模块82和发送模块83,其中,接收模块81用于接收消息发送代码发送的消息数据;生成模块82用于根据消息数据,生成数据包类型为消息通知类型的数据包;发送模块83用于向服务端进程引擎发送消息通知类型的数据包,以进行消息通知。
需要说明的是,本实施例的装置在消息发送进程侧进行跨主机进程间通信的具体方法,如上述实施例四中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的装置,在一个TCP连接上,通过客户端进程引擎将消息数据封装成消息通知类型的数据包并发送的技术方案,通过客户端进程引擎接收消息发送代码发送的消息数据,生成数据包类型为消息通知类型的数据包并发送的技术方案,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
本实施例中,跨主机进程间通信的系统进行客户端的服务调用进程和服务端的服务提供进程之间的通信。图9为本发明实施例九跨主机进程间通信的系统结构示意图。如图9所示,本实施例跨主机进程间通信的系统包括服务端91和客户端92,客户端92包括客户端进程引擎921,服务端91包括服务端进程引擎911,
其中,客户端进程引擎921用于接收服务调用代码发送的服务请求数据;根据服务请求数据,生成数据包类型为服务请求类型的数据包;并向服务端进程引擎911发送服务请求类型的数据包,以进行服务请求;
服务端进程引擎911用于接收客户端进程引擎921发送的数据包,数据包包括数据包类型和键值对组;通过解析数据包,获取并识别数据包类型;当识别数据包类型为服务请求类型时,获取键值对组,且键值对组包括本次服务请求键值对和所需请求服务键值对子组;根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;根据本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,服务返回数据包的数据包类型为服务返回类型;
进一步地,客户端进程引擎921还用于接收服务端进程引擎911返回的服务返回数据包,服务返回数据包包括本次服务请求键值对、服务请求状态键值对和服务返回数据键值对;通过解析服务返回数据包,获取服务请求状态键值对和服务返回数据键值对;若服务请求状态键值对所包括的第二值为成功标识,则将服务返回数据键值对所包括的第三值发送给服务调用代码;
进一步地,客户端92还包括服务调用装置922,服务调用装置922用于提供服务调用代码;
服务端91还包括服务提供装置912和服务注册装置913,服务提供装置912用于提供服务提供代码,服务注册装置913利用服务注册代码将服务端91所包含的服务注册到服务端进程引擎911,以在服务端进程引擎911中生成服务注册表。
需要说明的是,本实施例的系统中的服务端进程引擎911可以包括如上述实施例五中装置的模块和单元,而在服务提供进程侧进行跨主机进程间通信的具体方法,如上述实施例一中具体描述所述,在此不再赘述;
并且本实施例的系统中的客户端进程引擎921可以包括如上述实施例六中装置的模块和单元,而在服务提供进程侧进行跨主机进程间通信的具体方法,如上述实施例二中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的系统,在一个TCP连接上,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为服务请求类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
本实施例中,跨主机进程间通信的系统进行客户端的消息发送进程和服务端的消息接收进程之间的通信。图10为本发明实施例十跨主机进程间通信的系统结构示意图。如图10所示,本实施例跨主机进程间通信的系统包括服务端101和客户端102,客户端102包括客户端进程引擎1021,服务端101包括服务端进程引擎1011,
客户端进程引擎1021用于接收消息发送代码发送的消息数据;根据消息数据,生成数据包类型为消息通知类型的数据包;并向服务端进程引擎1011发送消息通知类型的数据包,以进行消息通知。
服务端进程引擎1011用于接收客户端进程引擎1021发送的数据包,数据包包括数据包类型和键值对组;通过解析数据包,获取数据包类型并识别;当识别数据包类型为消息通知类型时,获取键值对组,键值对组包括至少一个消息数据键值对,消息数据键值对包括消息数据类型键和消息值;判断消息数据类型键是否在消息侦听注册表中,若是,则将并将消息值发送给消息数据类型键所对应的消息接收代码。
进一步地,客户端102还包括消息发送装置1022,消息发送装置1022用于提供消息发送代码。
服务端101还包括消息接收装置1012和消息侦听注册装置1013,消息接收装置1012用于提供消息接收代码,消息侦听注册装置1013利用消息侦听注册代码,将服务端101所需侦听的消息数据类型注册到服务端进程引擎1011,以在服务端进程引擎1011中生成消息侦听注册表。
需要说明的是,本实施例的系统中的服务端进程引擎1011可以包括如上述实施例六中装置的模块和单元,而在服务提供进程侧进行跨主机进程间通信的具体方法,如上述实施例三中具体描述所述,在此不再赘述;
并且本实施例的系统中的客户端进程引擎1021可以包括如上述实施例六中装置的模块和单元,而在服务提供进程侧进行跨主机进程间通信的具体方法,如上述实施例四中具体描述所述,在此不再赘述。
本发明实施例的跨主机进程间通信的系统,在一个TCP连接上,服务端进程引擎通过获取并识别客户端进程引擎发送的数据包的数据包类型,当数据包类型为消息通知类型时,进行服务客户端的服务调用进程和服务端的服务提供进程之间的通信,解决了现有技术中所存在的无法在同一TCP连接上支持服务调用和消息通知的缺陷,实现了在同一TCP连接上支持服务调用和消息通知的目的,由于一个TCP连接容易穿越客户端和服务端的防火墙,因此提搞了服务端和客户端之间通信的交互效率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (29)
1.一种跨主机进程间通信的方法,其特征在于,包括:
接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
通过解析所述数据包,获取并识别所述数据包类型;
当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
2.根据权利要求1所述的方法,其特征在于,所述所需请求服务键值对子组包括所需请求服务标识键值对,所述所需请求服务标识键值对包括所需请求服务标识键和第一值,所述所需请求服务标识键对应所述第一值,且所述所需请求服务标识键表示客户端所需请求的服务,所述第一值表示客户端请求该服务的次数。
3.根据权利要求2所述的方法,其特征在于,所述根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对包括:
所述服务请求状态键值对包括状态标识键和第二值,且所述状态标识键对应所述第二值;所述服务返回数据键值包括结果标识键和第三值,且所述结果标识键对应所述第三值;
根据所述所需请求服务标识键值对,查询服务注册表中是否存在所述所需请求服务标识键,若是,则通过调用服务提供代码,获取服务结果;
并生成所述第二值为成功标识的服务请求状态键值对和所述第三值为所述服务结果的服务返回数据键值对。
4.根据权利要求3所述的方法,其特征在于,
若所述服务注册表中不存在所述所需请求服务标识键,则生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
5.根据权利要求2所述的方法,其特征在于,所述所需请求服务键值对子组还包括至少一个服务参数键值对,且所述服务参数键值对包括服务参数类型键和第四值,所述服务参数类型键对应所述第四值。
6.根据权利要求5所述的方法,其特征在于,所述根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对包括:
所述服务请求状态键值对包括状态标识键和第二值,且所述状态标识键对应所述第二值;所述服务返回数据键值对包括结果标识键和第三值,且所述结果标识键对应所述第三值;
根据所述所需请求服务标识键值对,查询服务注册表中是否存在所述所需请求服务标识键,并判断所述服务参数类型键和第四值是否匹配合法;
若所述所需请求服务标识键存在于所述服务注册表中,且所述服务参数类型键和第四值匹配合法,则通过调用服务提供代码,获取所述服务提供代码的返回消息;
若所述返回消息为服务结果,则生成所述第二值为成功标识的服务请求状态键值对和生成所述第三值为所述服务结果的服务返回数据键值对。
7.根据权利要求6所述的方法,其特征在于,还包括:
若所述所需请求服务标识键不存在于所述服务注册表中和/或所述服务参数类型键和第四值匹配不合法,则生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
8.根据权利要求6所述的方法,其特征在于,还包括:
若获取到所述服务提供代码所返回的错误信息,则生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
9.一种跨主机进程间通信的方法,其特征在于,包括:
接收服务调用代码发送的服务请求数据;
根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;
并向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求;
接收服务端进程引擎返回的服务返回数据包,所述服务返回数据包包括本次服务请求键值对、服务请求状态键值对和服务返回数据键值对;
通过解析所述服务返回数据包,获取所述服务请求状态键值对和服务返回数据键值对;
若所述服务请求状态键值对所包括的第二值为成功标识,则将所述服务返回数据键值对所包括的第三值发送给所述服务调用代码。
10.一种跨主机进程间通信的装置,其特征在于,包括:
接收模块,所述接收模块用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
获取识别模块,所述获取识别模块用于通过解析所述数据包,获取并识别所述数据包类型;
获取模块,所述获取模块用于当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
生成模块,所述生成模块用于根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
处理模块,所述处理模块用于根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
11.根据权利要求10所述的装置,其特征在于,所述所需请求服务键值对子组包括所需请求服务标识键值对,所述所需请求服务标识键值对包括所需请求服务标识键和第一值,所述所需请求服务标识键对应所述第一值,且所述所需请求服务标识键表示客户端所需请求的服务,所述第一值表示客户端请求该服务的次数。
12.根据权利要求11所述的装置,其特征在于,所述服务请求状态键值对包括状态标识键和第二值,且所述状态标识键对应所述第二值;所述服务返回数据键值对包括结果标识键和第三值,且所述结果标识键对应所述第三值;
所述生成模块包括:
查询单元,所述查询单元用于根据所述所需请求服务标识键值对,查询服务注册表中是否存在所述所需请求服务标识键,
获取单元,所述获取单元用于所述查询单元查询到所述服务注册表中存在所述所需请求服务标识键时,通过调用服务提供代码,获取服务结果;
生成单元,所述生成单元用于生成所述第二值为成功标识的服务请求状态键值对和所述第三值为所述服务结果的服务返回数据键值对。
13.根据权利要求12所述的装置,其特征在于,
所述生成单元还用于所述查询单元查询到所述服务注册表中不存在所述所需请求服务标识键时,生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
14.根据权利要求11所述的装置,其特征在于,所述所需请求服务键值对子组还包括至少一个服务参数键值对,且所述服务参数键值对包括服务参数类型键和第四值,所述服务参数类型键对应所述第四值。
15.根据权利要求14所述的装置,其特征在于,
所述服务请求状态键值对包括状态标识键和第二值,且所述状态标识键对应所述第二值;所述服务返回数据键值对包括结果标识键和第三值,且所述结果标识键对应所述第三值;
所述生成模块包括:
查询单元,所述查询单元用于根据所述所需请求服务标识键值对,查询服务注册表中是否存在所述所需请求服务标识键;
判断单元,所述判断单元用于判断所述服务参数类型键和第四值是否匹配合法;
获取单元,所述获取单元用于所述查询单元查询到所述服务注册表中存在 所述所需请求服务标识键,且所述判断单元判断所述服务参数类型键和第四值匹配合法时,通过调用服务提供代码,获取所述服务提供代码的返回消息;
生成单元,所述生成单元用于若所述返回消息为服务结果,则生成所述第二值为成功标识的服务请求状态键值对和所述第三值为所述服务结果的服务返回数据键值对。
16.根据权利要求15所述的装置,其特征在于,
所述生成单元还用于若所述所需请求服务标识键不存在于所述服务注册表中和/或所述服务参数类型键和第四值匹配不合法,则生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
17.根据权利要求15所述的装置,其特征在于,
所述生成单元还用于若所述获取单元获取到所述服务提供代码所返回的错误信息时,则生成所述第二值为失败标识的服务请求状态键值对和所述第三值为错误信息的服务返回数据键值对。
18.一种跨主机进程间通信的装置,其特征在于,包括:
第一接收模块,所述第一接收模块用于接收服务调用代码发送的服务请求数据;
生成模块,所述生成模块用于根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;
发送模块,所述发送模块用于向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求;
第二接收模块,所述第二接收模块用于接收服务端进程引擎返回的服务返回数据包,所述服务返回数据包包括本次服务请求键值对、服务请求状态键值对和服务返回数据键值对;
获取模块,所述获取模块用于通过解析所述服务返回数据包,获取所述服务请求状态键值对和服务返回数据键值对;
第二发送模块,所述第二发送模块用于若所述服务请求状态键值对所包括的第二值为成功标识,则将所述服务返回数据键值对所包括的第三值发送 给所述服务调用代码。
19.一种跨主机进程间通信的系统,其特征在于,包括服务端和客户端,所述客户端包括客户端进程引擎,所述服务端包括服务端进程引擎,
所述客户端进程引擎用于接收服务调用代码发送的服务请求数据;根据所述服务请求数据,生成数据包类型为服务请求类型的数据包;并向服务端进程引擎发送所述服务请求类型的数据包,以进行服务请求;
所述服务端进程引擎用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;通过解析所述数据包,获取并识别所述数据包类型;当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
20.根据权利要求19所述的系统,其特征在于,
所述客户端进程引擎还用于接收服务端进程引擎返回的服务返回数据包,所述服务返回数据包包括本次服务请求键值对、服务请求状态键值对和服务返回数据键值对;通过解析所述服务返回数据包,获取所述服务请求状态键值对和服务返回数据键值对;若所述服务请求状态键值对所包括的第二值为成功标识,则将所述服务返回数据键值对所包括的第三值发送给所述服务调用代码。
21.根据权利要求19所述的系统,其特征在于,所述客户端还包括服务调用装置,所述服务调用装置用于提供所述服务调用代码。
22.根据权利要求19所述的系统,其特征在于,所述服务端还包括服务提供装置,所述服务提供装置用于提供所述服务提供代码。
23.根据权利要求19所述的系统,其特征在于,所述服务端还包括服务注册装置,所述服务注册装置利用服务注册代码将所述服务端所包含的服务注册到所述服务端进程引擎,以在所述服务端进程引擎中生成服务注册表。
24.一种跨主机进程间通信的方法,其特征在于,包括:
接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
通过解析所述数据包,获取所述数据包类型并识别,所述数据包类型为服务请求类型或消息通知类型;
当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;
判断所述消息数据类型键是否在所述消息侦听注册表中,若是,则将并将所述消息值发送给所述消息数据类型键所对应的消息接收代码;
当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
25.一种跨主机进程间通信的装置,其特征在于,包括:
接收模块,所述接收模块用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;
获取识别模块,所述获取识别模块用于通过解析所述数据包,获取所述数据包类型并识别,所述数据包类型为服务请求类型或消息通知类型;
获取模块,所述获取模块用于当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;
判断模块,所述判断模块用于判断所述消息数据类型键是否在所述消息侦听注册表中;
发送模块,所述发送模块用于当所述判断单元判断出所述消息数据类型键在 所述消息侦听注册表中时,将所述消息值发送给所述消息数据类型键所对应的消息接收代码;
所述获取模块,还用于当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组;
生成模块,所述生成模块用于根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对;
处理模块,所述处理模块用于根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
26.一种跨主机进程间通信的系统,其特征在于,包括服务端和客户端,所述客户端包括客户端进程引擎,所述服务端包括服务端进程引擎,
所述客户端进程引擎用于接收消息发送代码发送的消息数据;根据所述消息数据,生成数据包类型为消息通知类型的数据包;并向所述服务端进程引擎发送所述消息通知类型的数据包,以进行消息通知;
所述服务端进程引擎用于接收客户端进程引擎发送的数据包,所述数据包包括数据包类型和键值对组;通过解析所述数据包,获取所述数据包类型并识别;当识别所述数据包类型为消息通知类型时,获取所述键值对组,所述键值对组包括至少一个消息数据键值对,所述消息数据键值对包括消息数据类型键和消息值;判断所述消息数据类型键是否在所述消息侦听注册表中,若是,则将并将所述消息值发送给所述消息数据类型键所对应的消息接收代码;当识别所述数据包类型为服务请求类型时,获取所述键值对组,且所述键值对组包括本次服务请求键值对和所需请求服务键值对子组,根据所需请求服务键值对子组,生成服务请求状态键值对和服务返回数据键值对,根据所述本次服务请求键值对、服务请求状态键值对和服务返回数据键值对,生成服务返回数据包并发送,所述服务返回数据包的数据包类型为服务返回类型。
27.根据权利要求26所述的系统,其特征在于,所述客户端还包括消息发送装置,所述消息发送装置用于提供所述消息发送代码。
28.根据权利要求26所述的系统,其特征在于,所述服务端还包括消息接收装置,所述消息发送装置用于提供所述消息接收代码。
29.根据权利要求26所述的系统,其特征在于,所述服务端还包括消息侦听注册装置,所述消息侦听注册装置利用消息侦听注册代码,将所述服务端所需侦听的消息数据类型注册到所述服务端进程引擎,以在所述服务端进程引擎中生成所述消息侦听注册表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010112646 CN101902458B (zh) | 2010-02-21 | 2010-02-21 | 跨主机进程间通信的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010112646 CN101902458B (zh) | 2010-02-21 | 2010-02-21 | 跨主机进程间通信的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101902458A CN101902458A (zh) | 2010-12-01 |
CN101902458B true CN101902458B (zh) | 2013-04-24 |
Family
ID=43227660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010112646 Active CN101902458B (zh) | 2010-02-21 | 2010-02-21 | 跨主机进程间通信的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101902458B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495420B2 (en) * | 2013-05-22 | 2016-11-15 | International Business Machines Corporation | Distributed feature collection and correlation engine |
US10360233B2 (en) * | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
CN107133109B (zh) * | 2017-04-24 | 2020-01-14 | 京信通信系统(中国)有限公司 | 一种模块间通信的方法、装置及计算设备 |
CN108984316A (zh) * | 2018-06-15 | 2018-12-11 | 广州视源电子科技股份有限公司 | 一种用于分布式数据处理的方法、装置、电子设备及计算机存储介质 |
CN114285845B (zh) * | 2021-12-08 | 2023-09-22 | 北京安天网络安全技术有限公司 | 云环境下的联网认证方法、系统、计算机设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1257455C (zh) * | 2002-07-25 | 2006-05-24 | 梁肇新 | 进程间调用门技术 |
US7343621B2 (en) * | 2003-12-05 | 2008-03-11 | Lsi Logic Corporation | Method and apparatus for providing iSCSI target stealth operation |
CN101212391B (zh) * | 2006-12-25 | 2012-09-05 | 上海贝尔阿尔卡特股份有限公司 | 业务分流的方法和装置与报告业务类型的方法和装置 |
CN101136833B (zh) * | 2007-09-26 | 2010-09-08 | 深圳市迅雷网络技术有限公司 | 一种跨实体网络访问数据的方法、系统及装置 |
US8001332B2 (en) * | 2008-04-30 | 2011-08-16 | Siemens Aktiengesellschaft | Adaptive caching for high volume extract transform load process |
CN101594316B (zh) * | 2008-05-30 | 2012-06-06 | 华为技术有限公司 | 一种分布式网络的管理方法、内容查询方法、系统及装置 |
-
2010
- 2010-02-21 CN CN 201010112646 patent/CN101902458B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN101902458A (zh) | 2010-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101902458B (zh) | 跨主机进程间通信的方法、装置及系统 | |
CN1987925A (zh) | 一种金融系统综合前置平台及交易数据的转发方法 | |
CN108494817A (zh) | 数据传输方法、相关装置及系统 | |
CN113422686B (zh) | 网关层鉴权方法、系统、电子设备及存储介质 | |
CN101286883A (zh) | 分布式设备中设备板卡的集中调试系统及集中调试方法 | |
CN110740121B (zh) | 资源订阅系统及方法 | |
CN111698205A (zh) | 服务调用方法及相关设备 | |
CN113064742A (zh) | 消息处理方法、装置、设备及存储介质 | |
CN109861998B (zh) | 一种基于北斗短报文协议的插件式动态解析系统及方法 | |
CN101083636B (zh) | 互联网邮件业务与移动应用互通的实现方法、设备及系统 | |
CN107040613A (zh) | 一种报文传输方法及系统 | |
CN101873235A (zh) | 设备网络联通的检测方法、网管系统及网络系统 | |
CN109922148B (zh) | 跨平台服务方法、装置和系统 | |
CN102891851A (zh) | 虚拟桌面访问控制方法、设备及系统 | |
CN113452778B (zh) | 会话保持方法、装置、设备、系统及存储介质 | |
CN109829708B (zh) | 一种交易处理系统 | |
CN101925021B (zh) | 消息处理方法/系统、融合业务系统 | |
CN114124766A (zh) | 基于模拟数据的测试方法及装置 | |
CN114615321A (zh) | 流量处理方法和装置 | |
CN110636114B (zh) | 一种客服接入方法及接入系统、业务系统、云平台 | |
CN111935316A (zh) | 一种前端设备目录获取方法及装置 | |
CN110719303B (zh) | 一种容器化nrf的方法及系统 | |
CN101378383A (zh) | 透明数据处理方法、系统和装置 | |
CN100375464C (zh) | 网络互连时各终端的数据通信方法 | |
KR20200032380A (ko) | 챗봇 연결 장치 및 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |