[发明专利]一种服务器之间的数据传输方法和服务器有效
申请号: | 201010234921.6 | 申请日: | 2010-07-20 |
公开(公告)号: | CN102340489A | 公开(公告)日: | 2012-02-01 |
发明(设计)人: | 董昊 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/08 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 逯长明;王宝筠 |
地址: | 英属开曼群岛大开曼*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 服务器 之间 数据传输 方法 | ||
技术领域
本申请涉及通信和计算机技术领域,特别是涉及一种服务器之间的数据传输方法和服务器。
背景技术
在各种网络环境中,经常会涉及服务器之间的数据传输。例如,位于前端的服务器会将自身的数据发送给后端服务器,由后端服务器对数据进行处理;后端服务器在对数据进行处理后,还会将处理过的数据返回给前端服务器。
在现有技术中,一种实现服务器之间的数据传输方法是:在服务器A中,由操作系统将应用进程中的数据拷贝到内核中(第一次数据拷贝),再通过进程之间的通信机制,如unix domain机制,将内核中的数据发送给数据分发进程;数据分发进程收到数据后,操作系统分配一个内存空间1,将数据拷贝到内存空间1中(第二次数据拷贝);最后,数据分发进程利用发送(send)机制将内存空间1中的数据发送给服务器B,其中,当数据分发进程利用send机制发送数据时,操作系统分配一个新的内存空间2,并将内存空间1中的数据拷贝到内存空间2中(第三次数据拷贝),使一个数据结构sk_buffer与内存空间2相映射,将数据结构sk_buffer发送给网卡进行驱动。显然,在上述的整个数据传输过程中,需要经历三次数据拷贝,比较耗费时间和CPU资源。
另一种实现服务器之间的数据传输方法是:在服务器A中,由数据分发进程预测所有应用进程中的数据需要占用的内存空间,并根据预测结果预先创建一个固定大小的共享内存,各个应用进程将自身数据拷贝到共享内存上(第一次数据拷贝),当数据分发进程获知共享内存有数据到达时,从共享内存中获取到达的数据,利用send机制将获取的数据发送给服务器B(第二次数据拷贝)。显然,在上述的整个数据传输过程中,仍需要经历二次数据拷贝,尽管相对于第一个现有技术方案来说,一定程度地节省了时间和CPU资源。
但是,发明人在研究中发现,在上述第二种数据传输方法中,由数据分发进程和应用进程共享的共享内存是由数据分发进程根据预测结果而预先创建的一个大小不可以改变的空间,在实际应用中,如果创建的共享内存的空间小于所有应用进程的数据所需的空间,则无法满足应用进程的空间需求,导致应用进程无法正常工作;如果创建的共享内存的空间大于所有应用进程的数据所需的空间,又会浪费系统资源。
发明内容
为了解决上述技术问题,本申请实施例提供了一种服务器之间的数据传输方法和服务器,以在节省系统资源的情况下,同时保证应用进程正常工作。
本申请实施例公开了如下技术方案:
一种服务器之间的数据传输方法,包括:应用进程根据各自对内存空间的需求创建各自的文件,将创建的文件映射为一个共享内存,并将创建的文件句柄发送给服务器中的数据分发进程,所述文件句柄携带共享内存信息;应用进程根据各自创建的文件的文件句柄携带的共享内存信息检测各自创建的共享内存是否有剩余空间存储各自待处理的数据,如果有,将各自待处理的数据拷贝到各自的共享内存中;数据分发进程根据接收的文件句柄检测是否有应用进程各自待处理的数据到达各自的共享内存,如果有,从应用进程各自的共享内存中获取应用进程各自待处理的数据;数据分发进程将获取的数据发送给远端服务器。
一种服务器,包括:共享内存创建模块,用于根据各个应用进程各自对内存空间的需求分别为各个应用进程创建各自的文件,将创建的文件映射为一个共享内存,并将创建的文件的文件句柄发送给剩余空间检测模块和数据到达检测模块,所述文件句柄携带共享内存信息;剩余空间检测模块,用于根据接收的文件句柄中携带的共享内存信息检测所述共享内存创建模块创建的共享内存是否有剩余空间存储各自待处理的数据,如果有,将应用进程各自待处理的数据拷贝到各自的共享内存中;数据到达检测模块,用于根据接收的文件句柄中携带的共享内存信息检测是否有应用进程各自待处理的数据到达各自的共享内存,如果有,从应用进程各自的共享内存中获取应用进程各自待处理的数据;数据传输模块,用于将所述数据到达检测模块获取的数据发送给远端服务器。
由上述实施例可以看出,由各个应用进程在启动时,根据各自对内存空间的实际需求创建各自的文件,并将创建的文件映射为一个共享内存。当应用进程检测到自身创建的共享内存有剩余空间存储数据时,即将数据拷贝到各自的共享内存中,而当数据分发进程检测到应用进程的数据到达共享内存后,从共享内存中获取应用进程的数据,最后将数据发送给远端服务器。因此,在数据传输过程中,共享内存是根据应用进程的使用需求设置,在保证应用进程正常工作的同时,节省了系统资源,提高了数据传输的效率和服务器的性能。
附图说明
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010234921.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:重载滑移移运设备
- 下一篇:一种单晶坩埚搬运小车