一种进程间通讯的方法、及装置制造方法

文档序号:6524061阅读:127来源:国知局
一种进程间通讯的方法、及装置制造方法
【专利摘要】本发明实施例公开了一种进程间通讯的方法、及装置,其中方法的实现包括:根据待发送数据的目标节点寻找并确定对应的目标通道;将待发送数据写入确定的目标通道对应的共享存储空间内;若所述目标节点为本地节点,则确定的所述目标通道为本地通道,写入所述共享空间的待发送数据由所述目标节点的本地通道接收;若所述目标节点为远端节点,则确定的所述目标通道为远端代理通道,采用远端代理通道从所述共享空间接收所述待发送数据,并通过本地代理节点向对端代理节点发送所述待发送数据。以上方案,不需要关心通讯的进程是运行于同一主机还是不同主机,因此开发人员不需要了解机器内核跨机器间通信的机制和细节,因此可以提高开发效率,并减少出错。
【专利说明】一种进程间通讯的方法、及装置

【技术领域】
[0001]本发明涉及计算机【技术领域】,特别涉及一种进程间通讯的方法、及装置。

【背景技术】
[0002]网络服务开发过程中经常会碰到进程间通讯问题。进程间通讯又分为机器内的进程通讯和跨机器的进程通讯。对于机器内的进程通讯一般采用:管道、共享内存、消息队列、Unix Socket (一种操作系统的套接字)以及 IPC (Inter-Process Communicat1n,进程间通信)等技术。对于跨机器的进程通讯一般采用TCP (Transmiss1n Control Protocol,传输控制协议)/UDP (User Datagram Protocol,用户数据包协议)Socket (套接字)方式。
[0003]网络服务开发如果同时需要在机器内和跨机器作进程间通讯,就需要针对具体场景选择合适的IPC机制,并且对于机器内和跨机器进程间通讯分别封装和开发提供给上层应用使用。开发人员需要很了解机器内和跨机器进程间通讯机制和细节。这样应用开发效率比较低,也容易出错。


【发明内容】

[0004]本发明实施例提供了一种进程间通讯的方法、及装置,用于提高开发效率,减少出错。
[0005]一种进程间通讯的方法,包括:
[0006]根据待发送数据的目标节点寻找并确定对应的目标通道;将所述待发送数据写入确定的所述目标通道对应的共孚存储空间内;
[0007]若所述目标节点为本地节点,则确定的所述目标通道为本地通道,写入所述共享空间的待发送数据由所述目标节点的本地通道接收;
[0008]若所述目标节点为远端节点,则确定的所述目标通道为远端代理通道,采用远端代理通道从所述共享空间接收所述待发送数据,并通过本地代理节点向对端代理节点发送所述待发送数据。
[0009]一种装置,用于进程间通讯,包括:
[0010]通道确定单元,用于根据待发送数据的目标节点寻找并确定对应的目标通道;
[0011]数据写入单元,用于将所述待发送数据写入所述通道确定单元确定的所述目标通道对应的共享存储空间内;
[0012]本地通道单元,用于若所述目标节点为本地节点,则确定的所述目标通道为本地通道,写入所述共享空间的待发送数据由所述目标节点的本地通道接收;
[0013]发送单元,用于若所述目标节点为远端节点,则确定的所述目标通道为远端代理通道,采用远端代理通道从所述共享空间接收所述待发送数据,并通过本地代理节点向对端代理节点发送所述待发送数据。
[0014]从以上技术方案可以看出,本发明实施例具有以下优点:采用通道管理的方案,通过代理节点实现跨机通讯,不需要关心通讯的进程是运行于同一主机还是不同主机,因此开发人员不需要了解机器内核跨机器间通信的机制和细节,因此可以提高开发效率,并减少出错。

【专利附图】

【附图说明】
[0015]为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0016]图1为本发明实施例方法流程示意图;
[0017]图2为本发明实施例系统架构示意图;
[0018]图3为本发明实施例方法流程示意图;
[0019]图4为本发明实施例方法流程示意图;
[0020]图5为本发明实施例方法流程示意图;
[0021]图6为本发明实施例方法流程示意图;
[0022]图7为本发明实施例方法流程示意图;
[0023]图8为本发明实施例装置结构示意图;
[0024]图9为本发明实施例装置结构示意图;
[0025]图10为本发明实施例装置结构示意图;
[0026]图11为本发明实施例装置结构示意图;
[0027]图12为本发明实施例装置结构示意图;
[0028]图13为本发明实施例装置结构示意图;
[0029]图14为本发明实施例装置结构示意图;
[0030]图15为本发明实施例终端结构示意图。

【具体实施方式】
[0031]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
[0032]本发明实施例提供了一种进程间通讯的方法,如图1所示,包括:
[0033]101:根据待发送数据的目标节点寻找并确定对应的目标通道;将上述待发送数据写入确定的上述目标通道对应的共享存储空间内;
[0034]进一步地,本发明实施例还提供了进行流量控制的方案,该方案在数据的发送端进行发送控制,具体如下:在将上述待发送数据写入确定的上述目标通道对应的共享存储空间内之前,还包括:
[0035]确定目标通道是否为暂停状态,若不是暂停状态,则将上述待发送数据写入确定的上述目标通道对应的共享存储空间内,否则停止向上述目标通道对应的共享存储空间写入数据,直到上述目标通道恢复为非暂停状态。
[0036]在本实施例中,如果目标通道不是暂停状态,那么数据的发送将会持续,一旦目标通道的状态变为暂停状态,这将表示发送速度超过了接收方的限度,需要停止发送。目标通道的状态由接收端指定,在后续实施例中将给出更详细的说明。
[0037]102:若上述目标节点为本地节点,则确定的上述目标通道为本地通道,写入上述共享空间的待发送数据由上述目标节点的本地通道接收;
[0038]103:若上述目标节点为远端节点,则确定的上述目标通道为远端代理通道,采用远端代理通道从上述共享空间接收上述待发送数据,并通过本地代理节点向对端代理节点发送上述待发送数据。
[0039]以上实施例,采用通道管理的方案,通过代理节点实现跨机通讯,不需要关心通讯的进程是运行于同一主机还是不同主机,因此开发人员不需要了解机器内核跨机器间通信的机制和细节,因此可以提闻开发效率,并减少出错。
[0040]进一步地,本发明实施例中所称的本地是指上述待发送数据的源端的设备本地,本领域技术人员可以理解的是该设备也可以作为数据的接收端使用,本发明实施例还提供了该设备作为数据的接收端使用的方案,并且在数据的接收端进行流量控制,具体如下:上述方法,还包括:
[0041]通过本地代理节点接收来自对端代理节点的数据,并确定接收到的数据是否已经达到其在本地的目标通道的阈值,若是,则向对端代理节点发送暂停指示消息,指示上述对端代理节点暂停向上述目标通道写入数据。
[0042]本领域技术人员可以理解的是,如果接收到的数据没有达到本地的目标通道的阈值,则可以继续接收数据。上述阈值是按照上述本地的目标通道所对应的存储空间来确定的,用于防止溢出。
[0043]进一步地,本发明实施例还提供了进行流量控制以后,目标通道被暂停以后(即暂停数据传输以后)如何恢复数据传输的实现方案,具体如下:上述方法,还包括:
[0044]若上述本地的目标通道为暂停状态,并且没有数据,则向对端代理节点发送恢复指示,指示上述对端代理节点继续向上述目标通道写入数据。
[0045]可以理解的是,如果本地的目标通道不是暂停状态,当前应该处于数据的发送过程中。如果上述本地的目标通道为暂停状态,那么当前应该是没有进行数据通讯的,此时需要确定在何种情况下恢复通讯,本实施例给出了目标通道中没有数据的情况,实际上如果目标通道的数据量小于目标通道的数据总容量设定比例也是可以的,本发明实施例对此不作唯一'丨生限定。
[0046]进一步地,本发明实施例还提供了节点的创建方案,包含本地节点的创建以及依据对端代理节点的指示进行通道创建的方案,具体方案如下:在根据待发送数据的目标节点寻找并确定对应的目标通道之前,还包括:
[0047]本地代理节点创建本地节点,并确定本地节点与其通道的对应关系,为上述本地节点对应的通道分配内存空间;或者,接收对端代理节点发送的通道信息,若本地未存储上述通道信息,则创建远端代理通道,并监听远端代理通道是否有数据接收。
[0048]进一步地,本发明实施例还提供了跨设备的通道的信息如何同步的技术方案,采用代理节点完成通道信息的同步,具体如下:在通过本地代理节点向对端代理节点发送上述待发送数据之前,还包括:
[0049]读取配置文件,确定对端代理节点的互联网协议地址以及端口号,并通过上述互联网协议地址以及端口号建立本地代理节点与上述对端代理节点之间的传输控制协议TCP连接;并通过上述TCP连接将非对端创建的通道发送给对端代理节点;通过上述TCP连接接收对端代理节点发送的非本地创建的通道,并建立接收到的通道对应的远端代理通道。
[0050]进一步地,本发明实施例还提供了,通道删除的方案,具体如下:上述方法,还包括:
[0051]若本地节点关闭,上述本地节点对应的通道与对端代理节点的连接关闭,且上述本地节点对应的通道没有被其他进程所使用,则销毁上述本地节点对应的通道。
[0052]可以理解的是,销毁通道的目的在于释放不需要的存储空间,具体操作可以是将通道对应的存储空间内的信息进行销毁。销毁的过程可以是将该存储空间,例如内存释放使之能够被再次使用,并不一定需要进行存储空间进行初始化操作。
[0053]以下实施例就本发明实施例的几个重要方面进行分别举例说明。
[0054]本发明实施例采用的是基于共享内存的进程间通讯的中间件方案。开发人员可以使用它方便地实现进程间的数据交换,而不用关心需要交换数据的进程是运行在同一主机还是在不同的主机。当进程处于同一主机时,数据通过共享内存传输;而对于不同主机上的进程,该中间件会将数据由代理服务(Agent)通过TCP/IP传输到远程主机。
[0055]一、该中间件方案如图2所示,包含如下几个部分:
[0056]hostl和host2是两个主机设备;在hostl中包含了两个数据收发点(peer),peer I和peer2,分别属于各自的进程;在host2中包含了两个数据收发点(peer),peer3和peer4,分别属于各自的进程;每个主机可以包含的进程可以有很多,每个进程包含的peer也可以有很多,图2仅作为一个示意,不应理解为对本发明实施例的限定。Agent所在的进程执行的是代理服务,可以称为代理节点。以下分别对图2所示的各部分进行详细介绍如下:
[0057]数据收发点(peer):中间件为开发人员提供的客户端开发包,使用该开发包创建具体peer用来接收和发送消息。
[0058]通道(channel):实际上是一块共享内存。当创建一个peer时,中间件创建一个同名的channel与这个peer绑定。每个channel都有一个唯一的id,所以存在多个channel名称相同的channel集合。peer通过这个channel接收数据;发送数据时,中间件会先找到与目标peer绑定的channel,并将数据写入到这个目标channe中。通道分为本地通道(local channel)和远端代理通道(remote channel proxy)。在图2所示远端代理通道有:?:hostl 中的 host2_channel4_proxy、host2_channel3_proxy ;在 host2 中的有hostl_channeIl_proxy、hostl_channe12_proxy。
[0059]通道索引(channel index):实际上是一块共享内存。存储着所有channel对应的共享内存key (关键字)。
[0060]消息(message):每次调用peer的send函数发送的数据视为一条消息,peer的recv函数(用于已连接的数据报或流式套接口进行数据的接收的函数)每次被调用,会接收一条完整的消息。
[0061 ] 中间件主要包括2个组件:
[0062](I)为开发人员提供的客户端开发包。
[0063](2)进行跨机器进程间通讯的代理服务Agent。
[0064]二、重要数据结构
[0065]本发明实施例是基于共享内存的进程间通讯中间件,通道、通道索引、消息在共享内存中的数据结构如下:
[0066](I)通道(channel),如下表1所示
[0067]表1

【权利要求】
1.一种进程间通讯的方法,其特征在于,包括: 根据待发送数据的目标节点寻找并确定对应的目标通道;将所述待发送数据写入确定的所述目标通道对应的共享存储空间内; 若所述目标节点为本地节点,则确定的所述目标通道为本地通道,写入所述共享空间的待发送数据由所述目标节点的本地通道接收; 若所述目标节点为远端节点,则确定的所述目标通道为远端代理通道,采用远端代理通道从所述共享空间接收所述待发送数据,并通过本地代理节点向对端代理节点发送所述待发送数据。
2.根据权利要求1所述方法,其特征在于,还包括: 通过本地代理节点接收来自对端代理节点的数据,并确定接收到的数据是否已经达到其在本地的目标通道的阈值,若是,则向对端代理节点发送暂停指示消息,指示所述对端代理节点暂停向所述目标通道写入数据。
3.根据权利要求2所述方法,其特征在于,还包括: 若所述本地的目标通道为暂停状态,并且没有数据,则向对端代理节点发送恢复指示,指示所述对端代理节点继续向所述目标通道写入数据。
4.根据权利要求1所述方法,其特征在于,在将所述待发送数据写入确定的所述目标通道对应的共享存储空间内之前,还包括: 确定目标通道是否为暂停状态,若不是暂停状态,则将所述待发送数据写入确定的所述目标通道对应的共享存储空间内,否则停止向所述目标通道对应的共享存储空间写入数据,直到所述目标通道恢复为非暂停状态。
5.根据权利要求1所述方法,其特征在于,在根据待发送数据的目标节点寻找并确定对应的目标通道之前,还包括: 本地代理节点创建本地节点,并确定本地节点与其通道的对应关系,为所述本地节点对应的通道分配内存空间;或者,接收对端代理节点发送的通道信息,若本地未存储所述通道信息,则创建远端代理通道,并监听远端代理通道是否有数据接收。
6.根据权利要求1至5任意一项所述方法,其特征在于,在通过本地代理节点向对端代理节点发送所述待发送数据之前,还包括: 读取配置文件,确定对端代理节点的互联网协议地址以及端口号,并通过所述互联网协议地址以及端口号建立本地代理节点与所述对端代理节点之间的传输控制协议TCP连接;并通过所述TCP连接将非对端创建的通道发送给对端代理节点;通过所述TCP连接接收对端代理节点发送的非本地创建的通道,并建立接收到的通道对应的远端代理通道。
7.根据权利要求6所述方法,其特征在于,还包括: 若本地节点关闭,所述本地节点对应的通道与对端代理节点的连接关闭,且所述本地节点对应的通道没有被其他进程所使用,则销毁所述本地节点对应的通道。
8.一种装置,用于进程间通讯,其特征在于,包括: 通道确定单元,用于根据待发送数据的目标节点寻找并确定对应的目标通道; 数据写入单元,用于将所述待发送数据写入所述通道确定单元确定的所述目标通道对应的共孚存储空间内; 本地通道单元,用于若所述目标节点为本地节点,则确定的所述目标通道为本地通道,写入所述共享空间的待发送数据由所述目标节点的本地通道接收; 发送单元,用于若所述目标节点为远端节点,则确定的所述目标通道为远端代理通道,采用远端代理通道从所述共享空间接收所述待发送数据,并通过本地代理节点向对端代理节点发送所述待发送数据。
9.根据权利要求8所述装置,其特征在于,还包括: 接收单元,用于通过本地代理节点接收来自对端代理节点的数据; 阈值确定单元,用于确定接收到的数据是否已经达到其在本地的目标通道的阈值; 所述发送单元,还用于在所述阈值确定单元确定接收到的数据已经达到其在本地的目标通道的阈值后,则向对端代理节点发送暂停指示消息,指示所述对端代理节点暂停向所述目标通道写入数据。
10.根据权利要求9所述装置,其特征在于,还包括: 第一确定单元,用于确定所述本地的目标通道是否为暂停状态,是否有数据; 所述发送单元,还用于若所述第一确定单元确定所述本地的目标通道为暂停状态,并且没有数据,则向对端代理节点发送恢复指示,指示所述对端代理节点继续向所述目标通道写入数据。
11.根据权利要求8所述装置,其特征在于, 第二确定单元,用于在将所述待发送数据写入确定的所述目标通道对应的共享存储空间内之前,确定目标通道是否为暂停状态; 所述数据写入单元,还用于若所述第二确定单元确定不是暂停状态,则将所述待发送数据写入确定的所述目标通道对应的共享存储空间内,否则停止向所述目标通道对应的共享存储空间写入数据,直到所述目标通道恢复为非暂停状态。
12.根据权利要求8所述装置,其特征在于,还包括: 节点管理单元,用于在根据待发送数据的目标节点寻找并确定对应的目标通道之前,通过本地代理节点创建本地节点,并确定本地节点与其通道的对应关系,为所述本地节点对应的通道分配内存空间;或者,接收对端代理节点发送的通道信息,若本地未存储所述通道信息,则创建远端代理通道,并监听远端代理通道是否有数据接收。
13.根据权利要求8至12任意一项所述装置,其特征在于,还包括: 同步管理单元,用于在通过本地代理节点向对端代理节点发送所述待发送数据之前,读取配置文件,确定对端代理节点的互联网协议地址以及端口号,并通过所述互联网协议地址以及端口号建立本地代理节点与所述对端代理节点之间的传输控制协议TCP连接;并通过所述TCP连接将非对端创建的通道发送给对端代理节点;通过所述TCP连接接收对端代理节点发送的非本地创建的通道,并建立接收到的通道对应的远端代理通道。
14.根据权利要求13所述装置,其特征在于, 所述同步管理单元,还用于若本地节点关闭,所述本地节点对应的通道与对端代理节点的连接关闭,且所述本地节点对应的通道没有被其他进程所使用,则销毁所述本地节点对应的通道。
【文档编号】G06F9/54GK104133728SQ201310690566
【公开日】2014年11月5日 申请日期:2013年12月16日 优先权日:2013年12月16日
【发明者】徐翠屏 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1