一种代理通信系统及方法

文档序号:7854843阅读:119来源:国知局
专利名称:一种代理通信系统及方法
技术领域
本发明涉及通信服务技术领域,特别涉及一种代理通信系统及方法。
背景技术
通信服务是计算机应用系统中最基本的需求。目前常用的通信方法是服务与应用之间直接建立通信连接。假设有一台提供服务的机器上有M个服务,另一台请求服务的机器有N个应该请求,这样在两台机器上最多可建立MXN个连接。从本质上来说,两台机器之间不管有多少连接,在同一时刻只能有一个连接在传递数据,而其余的连接此时只能空等。每个连接都是一个打开的socket (套接字),需要占用一定的系统资源。 另外,更为严重的是,如果发送应用请求的客户端都是实时请求,且请求结束后要关闭连接,那么每次请求都要建立连接。如果请求的数据长度不长的话,发送这样的请求,建立连接和撤销连接所消耗的时间会占用一次请求的绝大部分时间。

发明内容
本发明要解决的技术问题是如何提供一种代理通信系统及方法,以减少应用程序与服务程序之间建立连接的数量,提高通信资源利用率。一种代理通信系统,其包括设置在客户端的应用代理单元,以及设置在服务器端的服务代理单元;所述应用代理单元包括多个应用数据缓冲区和至少一个应用socket端口 ;所述服务代理单元包括多个服务数据缓冲区和至少一个服务socket端口 ;所述应用数据缓冲区适于缓存所述客户端的应用程序的待发送应用数据,以及所述应用socket端口接收的服务数据;所述服务数据缓冲区适于缓存所述服务器端的服务程序的待发送服务数据,以及所述服务socket端口接收的应用数据;所述应用socket端口和所述服务socket端口,适于共同实现所述应用代理单元和所述服务代理单元之间的通信。其中,所述应用代理单元中,对应同一类别应用程序的多个所述应用数据缓冲区划分为一组,每组的所述应用数据缓冲区和一个相应的应用socket端口共同构成一个应用代理模块。其中,所述应用数据缓冲区包括第一数据发送区和第一数据接收区;所述第一数据发送区适于缓存应用程序的待发送应用数据,以供所述应用socket端口发送;所述第一数据接收区适于缓存所述应用socket端口接收到的服务数据,以供应用程序读取。其中,所述第一数据发送区和所述第一数据接收区均由多个mmap文件组成。
其中,所述服务代理单元中,对应同一类别服务程序的多个所述服务数据缓冲区划分为一组,每组的所述服务数据缓冲区和一个相应的服务socket端口共同构成一个服务代理模块。其中,所述服务数据缓冲区包括第二数据发送区和第二数据接收区;所述第二数据发送区适于缓存服务程序的待发送服务数据,以供所述服务socket端口发送;所述第二数据接收区适于缓存所述服务socket端口接收到的应用数据,以供服务程序读取。其中,所述第二数据发送区和所述第二数据接收区均由多个mmap文件组成。其中,当服务器端不同服务器上的至少两个同类服务程序共同响应客户端的同一 个应用程序时,所述服务代理单元还包括键值分配模块;所述键值分配模块,适于根据服务数据的来源,为不同服务器上的同类服务程序分配相应的键值,以区分不同服务器上的同类服务程序。本发明还提供一种代理通信方法,其包括步骤客户端的应用程序向第一数据发送区写应用数据,然后通知应用socket端口 ;所述应用socket端口将所述应用数据发送给服务器端的服务socket端口 ;所述服务socket端口将所述应用数据写入第二数据接收区,然后通知服务程序;服务程序从所述第二数据接收区读取所述应用数据,并反馈相应的服务数据至应用程序。其中,所述反馈相应的服务数据至应用程序,进一步包括步骤服务程序根据所述应用数据生成相应的服务数据,将所述服务数据写入第二数据发送区,然后通知所述服务socket端口 ;所述服务socket端口将所述服务数据发送给所述应用socket端口 ;所述应用socket端口将所述服务数据写入第一数据接收区,然后通知应用程序读取所述服务数据。其中,当对应所述应用数据的服务数据来自不同的服务器时,所述服务程序根据所述应用数据生成相应的服务数据,将所述服务数据写入第二数据发送区,然后通知所述服务socket端口,进一步包括不同服务器上的服务程序根据所述应用数据分别生成相应的服务数据;键值分配模块根据所述服务数据的来源,为不同服务器上的服务程序分配相应的键值,并将所述键值写入包含相应服务数据的数据帧中;服务程序将所述数据帧写入第二数据发送区,然后通知所述服务socket端口。其中,在所述客户端的应用程序向第一数据发送区写应用数据,然后通知应用socket端口之前,还包括步骤在应用程序和应用代理单元之间建立第一通信通道,在服务程序和服务代理单元之间建立第二通信通道;所述应用代理单元包括所述第一数据发送区、所述第一数据接收区和所述应用socket 端口 ;所述服务代理单元包括所述第二数据发送区、所述第二数据接收区和所述服务socket 端口。其中,所述客户端的应用程序通过所述第一通信通道通知所述应用socket端口。其中,所述服务socket端口通过所述第二通信通道通知服务程序。其中,所述服务程序通过所述第二通信通道通知所述服务socket端口。其中,所述应用socket端口通过所述第一通信通道通知应用程序。其中,所述第一数据发送区和所述第一数据接收区均由多个mmap文件组成。其中,所述第二数据发送区和所述第二数据接收区均由多个mmap文件组成。本发明的所述代理通信系统及方法,通过在客户端设置应用代理单元,在服务器 端设置服务代理单元,进而实现应用程序和服务程序之间的代理通信,有效减少了应用程序与服务程序之间建立连接的数量,提高通信资源利用率。


图I是本发明实施例所述的代理通信系统的模块结构示意图;图2是本发明实施例所述代理通信系统的模块结构示意图;图3是本发明实施例三所述代理通信方法的流程图;图4是服务程序反馈服务数据至应用程序的流程图;图5是对应所述应用数据的服务数据来自不同的服务器时步骤S100的流程图;图6是本发明实施例四所述代理通信方法的流程图。
具体实施例方式下面结合附图和实施例,对本发明的具体实施方式
作进一步详细描述。以下实施例适于说明本发明,但不用来限制本发明的范围。图I是本发明实施例一所述代理通信系统的模块结构示意图,如图I所示,所述系统包括设置在客户端的应用代理单元100,以及设置在服务器端的服务代理单元200。所述应用代理单元100包括多个应用数据缓冲区111和至少一个应用socket端
n 112。所述服务代理单元200包括多个服务数据缓冲区211和至少一个服务socket端
n 212。所述应用数据缓冲区111适于缓存所述客户端的应用程序的待发送应用数据,以及所述应用socket端口 112接收的服务数据。具体地,所述应用数据缓冲区111包括第一数据发送区和第一数据接收区。所述第一数据发送区适于缓存应用程序的待发送应用数据,以供所述应用socket端口 112发送。所述第一数据接收区适于缓存所述应用socket端口 112接收到的服务数据,以供应用程序读取。所述第一数据发送区和所述第一数据接收区均由多个mmap文件组成。所述服务数据缓冲区211适于缓存所述服务器端的服务程序的待发送服务数据,以及所述服务socket端口 212接收的应用数据。具体地,所述服务数据缓冲区211包括第二数据发送区和第二数据接收区。所述第二数据发送区适于缓存服务程序的待发送服务数据,以供所述服务socket端口 212发送。所述第二数据接收区适于缓存所述服务socket端口 212接收到的应用数据,以供服务程序读取。所述第二数据发送区和所述第二数据接收区均由多个mmap文件组成。所述应用socket端口 112和所述服务socket端口 212,适于共同实现所述应用代理单元100和所述服务代理单元200之间的通信。其中,所述应用数据缓冲区111和所述服务数据缓冲区211的数量限制了同时进行代理通信的应用程序和服务程序的数量;所述应用数据缓冲区111和所述服务数据缓冲区211的大小,限制了每次通信的数据长度。因此,应该根据实际使用情况,合理设置所述应用数据缓冲区111和所述服务数据缓冲区211的数量和大小,本实施例中,所述应用数据缓冲区111和所述服务数据缓冲区211的数量均设置为100个,大小均设置为10KB。所述应用socket端口 112和所述服务socket端口 212的端口号必须保证与其他应用不重复,优选采用1000以上的端口,因为操作系统会占用很多1000以下的端口,如http的80端口,ftp的21端口等。
图2是本发明实施例所述代理通信系统的模块结构示意图,如图2所示,本实施例所述系统与实施例一所述系统基本相同,其不同之处在于所述应用代理单元100中,对应同一类别应用程序的多个所述应用数据缓冲区111划分为一组,每组的所述应用数据缓冲区111和一个相应的应用socket端口 112共同构成一个应用代理模块110。所述服务代理单元200中,对应同一类别服务程序的多个所述服务数据缓冲区211划分为一组,每组的所述服务数据缓冲区211和一个相应的服务socket端口 212共同构成一个服务代理模块210。从复用的角度来说,服务器和客户端之间建立一个连接就可以了,但是所述应用数据缓冲区111和所述服务数据缓冲区211的数量终究是有限的,如果有处理比较慢的应用程序长时间占用所述应用数据缓冲区111或者所述服务数据缓冲区211,最终导致所有的所述应用数据缓冲区111或者所有的所述服务数据缓冲区211均被占用,这时就会导致服务器和客户端之间通信中断。通过将所述应用数据缓冲区111划分到所述应用代理模块110,并且将所述服务数据缓冲区211划分到所述服务代理模块210后,可以将不同性质的应用程序分类后通过相应的所述应用代理模块110和所述服务代理模块210与服务程序进行通信,避免出现通信中断的情况。同时,本实施例所述系统考虑到服务器端不同服务器上的至少两个同类服务程序,可能会共同响应客户端的同一个应用程序。因此,本实施例中,所述服务代理单元200还包括键值分配模块220。所述键值分配模块220,适于根据服务数据的来源,为不同服务器上的同类服务程序分配相应的键值,以区分不同服务器上的同类服务程序。参见图2,现在假设有两种应用应用程序a和应用程序C。应用程序c在一台服务器上集中进行,而应用程序a在两台服务器上。服务器端两台服务器名称为服务器I和服务器2,客户端包括一台机器。在客户端,应用程序a和应用程序c分别连接一个应用代理模块110 ;两个应用代理模块110分别通过端口号为4500和4502的两个应用socket端口 112与服务器端的两个服务器相连接。在服务器I上,服务程序c通过一个服务代理模块210与客户端进行通信,服务程序a通过另一个服务代理模块210与客户端通信;在服务器2上,服务程序a通过一个服务代理模块210与客户端进行通信。为了区分两个服务器上的服务程序a,服务器端的键值分配模块220为服务器I上的服务程序a分配键值为1,为服务器2上的服务程序a分配键值为2。对于具体的配置文件格式及实现函数,由于其非本发明重点,在此不再赘述。图3是本发明实施例三所述代理通信方法的流程图,如图3所示,所述方法包括步骤
A:客户端的应用程序向第一数据发送区写应用数据,然后通知应用socket端口。B :所述应用socket端口将所述应用数据发送给服务器端的服务socket端口。C :所述服务socket端口将所述应用数据写入第二数据接收区,然后通知服务程序。D :服务程序从所述第二数据接收区读取所述应用数据,并反馈相应的服务数据至应用程序。图4是服务程序反馈服务数据至应用程序的流程图,如图4所示,所述步骤D中,所述反馈相应的服务数据至应用程序,进一步包括步骤SlOO :服务程序根据所述应用数据生成相应的服务数据,将所述服务数据写入第二数据发送区,然后通知所述服务socket端口。图5是当对应所述应用数据的服务数据来自不同的服务器时所述步骤S100的流程图,如图5所示,此时所述步骤S100进一步包括SllO :不同服务器上的服务程序根据所述应用数据分别生成相应的服务数据。S120 :键值分配模块根据所述服务数据的来源,为不同服务器上的服务程序分配相应的键值,并将所述键值写入包含相应服务数据的数据帧中。S130 :服务程序将所述数据帧写入第二数据发送区,然后通知所述服务socket端□。S200 :所述服务socket端口将所述服务数据发送给所述应用socket端口。S300 :所述应用socket端口将所述服务数据写入第一数据接收区,然后通知应用程序读取所述服务数据。其中,所述第一数据发送区和所述第一数据接收区均由多个mmap文件组成,mmap文件的优势在于应用程序和应用代理单元中的应用socket端口均可见,并且可以通过文件加锁的方式进行锁定。假设,应用程序需要发送应用数据时,首先要从第一发送缓冲区中以写锁的方式获取一个mmap文件;获取成功后,就可以向这个mmap文件写入数据;数据写满或写完后,通知应用socket端口进行发送。同时,所述第二数据发送区和所述第二数据接收区均由多个mmap文件组成,以便于服务程序和服务代理单元中的服务socket端口对相应数据的发送和接收。图6是本发明实施例四所述代理通信方法的流程图,如图6所示,本实施例所述方法与实施例三所述方法基本相同,其不同之处仅在于,在所述步骤A之前还包括步骤A’在应用程序和应用代理单元之间建立第一通信通道,在服务程序和服务代理单元之间建立第二通信通道。所述应用代理单元包括所述第一数据发送区、所述第一数据接收区和所述应用socket端口。所述服务代理单元包括所述第二数据发送区、所述第二数据接收区和所述服务socket端口。在设置所述第一通信通道之前,应用程序和应用代理单元需要定期进行消息通信,以通知对方当前存在或者不存在待接收的数据。设置所述第一通信通道后,应用程序和应用代理单元都来监听所述第一通信通道。所述第一通信通道的作用仅仅用来通知对方有数据需要接收,没有需要接收的数据时,没有消息;同时,具体数据(应用数据或者服务数据)并不通过所述第一通信通道传送。具体数据的传送都是通过前述的第一数据缓冲区完成的。同理,所述第二通信通道可以用来通知服务程序和服务代理单元及时接收相应的数据。具体地,在所述步骤A中,所述客户端的应用程序通过所述第一通信通道通知所述应用socket端口 ;在所述步骤C中,所述服务socket端口通过所述第二通信通道通知服务程序;在所述步骤SlOO中,所述服务程序通过所述第二通信通道通知所述服务socket端口 ;在所述步骤S300中,所述应用socket端口通过所述第一通信通道 通知应用程序。本发明实施例所述代理通信系统及方法,通过在客户端设置应用代理单元,在服务器端设置服务代理单元,进而实现应用程序和服务程序之间的代理通信,有效减少了应用程序与服务程序之间建立连接的数量,提高通信资源利用率。以上实施方式仅适于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。
权利要求
1.一种代理通信系统,其包括设置在客户端的应用代理单元,以及设置在服务器端的服务代理单元; 所述应用代理单元包括多个应用数据缓冲区和至少一个应用socket端口 ; 所述服务代理单元包括多个服务数据缓冲区和至少一个服务socket端口 ; 所述应用数据缓冲区适于缓存所述客户端的应用程序的待发送应用数据,以及所述应用socket端口接收的服务数据; 所述服务数据缓冲区适于缓存所述服务器端的服务程序的待发送服务数据,以及所述服务socket端口接收的应用数据; 所述应用socket端口和所述服务socket端口,适于共同实现所述应用代理单元和所述服务代理单元之间的通信。
2.如权利要求I所述的系统,其特征在于,所述应用代理单元中,对应同一类别应用程序的多个所述应用数据缓冲区划分为一组,每组的所述应用数据缓冲区和一个相应的应用socket端口共同构成一个应用代理模块。
3.如权利要求I或2所述的系统,其特征在于,所述应用数据缓冲区包括第一数据发送区和第一数据接收区; 所述第一数据发送区适于缓存应用程序的待发送应用数据,以供所述应用socket端口发送; 所述第一数据接收区适于缓存所述应用socket端口接收到的服务数据,以供应用程序读取。
4.如权利要求3所述的系统,其特征在于,所述第一数据发送区和所述第一数据接收区均由多个_ap文件组成。
5.如权利要求I所述的系统,其特征在于,所述服务代理单元中,对应同一类别服务程序的多个所述服务数据缓冲区划分为一组,每组的所述服务数据缓冲区和一个相应的服务socket端口共同构成一个服务代理模块。
6.如权利要求I或5所述的系统,其特征在于,所述服务数据缓冲区包括第二数据发送区和第二数据接收区; 所述第二数据发送区适于缓存服务程序的待发送服务数据,以供所述服务socket端口发送; 所述第二数据接收区适于缓存所述服务socket端口接收到的应用数据,以供服务程序读取。
7.如权利要求6所述的系统,其特征在于,所述第二数据发送区和所述第二数据接收区均由多个_ap文件组成。
8.如权利要求I所述的系统,其特征在于,当服务器端不同服务器上的至少两个同类服务程序共同响应客户端的同一个应用程序时,所述服务代理单元还包括键值分配模块;所述键值分配模块,适于根据服务数据的来源,为不同服务器上的同类服务程序分配相应的键值,以区分不同服务器上的同类服务程序。
9.一种代理通信方法,其包括步骤 客户端的应用程序向第一数据发送区写应用数据,然后通知应用socket端口 ; 所述应用socket端口将所述应用数据发送给服务器端的服务socket端口 ;所述服务socket端口将所述应用数据写入第二数据接收区,然后通知服务程序; 服务程序从所述第二数据接收区读取所述应用数据,并反馈相应的服务数据至应用程序。
10.如权利要求9所述的方法,其特征在于,所述反馈相应的服务数据至应用程序,进一步包括步骤 服务程序根据所述应用数据生成相应的服务数据,将所述服务数据写入第二数据发送区,然后通知所述服务socket端口 ; 所述服务socket端口将所述服务数据发送给所述应用socket端口 ; 所述应用socket端口将所述服务数据写入第一数据接收区,然后通知应用程序读取所述服务数据。
11.如权利要求10所述的方法,其特征在于,当对应所述应用数据的服务数据来自不同的服务器时,所述服务程序根据所述应用数据生成相应的服务数据,将所述服务数据写入第二数据发送区,然后通知所述服务socket端口,进一步包括 不同服务器上的服务程序根据所述应用数据分别生成相应的服务数据; 键值分配模块根据所述服务数据的来源,为不同服务器上的服务程序分配相应的键值,并将所述键值写入包含相应服务数据的数据帧中; 服务程序将所述数据帧写入第二数据发送区,然后通知所述服务socket端口。
12.如权利要求10所述的方法,其特征在于,在所述客户端的应用程序向第一数据发送区写应用数据,然后通知应用socket端口之前,还包括步骤 在应用程序和应用代理单元之间建立第一通信通道,在服务程序和服务代理单元之间建立第二通信通道; 所述应用代理单元包括所述第一数据发送区、所述第一数据接收区和所述应用socket 端口 ; 所述服务代理单元包括所述第二数据发送区、所述第二数据接收区和所述服务socket 端口。
13.如权利要求12所述的方法,其特征在于,所述客户端的应用程序通过所述第一通信通道通知所述应用socket端口。
14.如权利要求12所述的方法,其特征在于,所述服务socket端口通过所述第二通信通道通知服务程序。
15.如权利要求12所述的方法,其特征在于,所述服务程序通过所述第二通信通道通知所述服务socket端口。
16.如权利要求12所述的方法,其特征在于,所述应用socket端口通过所述第一通信通道通知应用程序。
17.如权利要求12所述的方法,其特征在于,所述第一数据发送区和所述第一数据接收区均由多个_ap文件组成。
18.如权利要求12所述的方法,其特征在于,所述第二数据发送区和所述第二数据接收区均由多个_ap文件组成。
全文摘要
本发明公开了一种代理通信系统及方法,涉及通信服务领域。所述系统包括客户端的应用代理单元和服务器端的服务代理单元;应用代理单元包括多个应用数据缓冲区和至少一个应用socket端口;服务代理单元包括多个服务数据缓冲区和至少一个服务socket端口;应用数据缓冲区适于缓存客户端的应用程序的待发送应用数据,以及应用socket端口接收的服务数据;服务数据缓冲区适于缓存服务器端的服务程序的待发送服务数据,以及服务socket端口接收的应用数据;应用socket端口和服务socket端口,适于共同实现应用代理单元和服务代理单元之间的通信。所述系统及方法,减少了应用程序与服务程序之间建立连接的数量。
文档编号H04L29/08GK102780764SQ20121022247
公开日2012年11月14日 申请日期2012年6月28日 优先权日2012年6月28日
发明者卢宏林 申请人:北京奇虎科技有限公司, 奇智软件(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1