一种提高tcp连接复用处理效率的方法及装置的制作方法

文档序号:7855130阅读:131来源:国知局
专利名称:一种提高tcp连接复用处理效率的方法及装置的制作方法
技术领域
本发明涉及网络传输层处理技术,一种提高TCP连接复用处理效率的方法及装置。
背景技术
随着互联网的飞速发展,网络规模的迅速扩大,网络数据访问量的急剧增加。提供高效的数据访问成为网络发展的新需求。高效的数据访问需要从数据访问速度、实际有效数据的比率、数据提供者的响应能力等方面着手。其中,TCP连接复用通过复用已经建立的TCP连接来实现减少与服务器的连接及断开次数。TCP连接复用通过将客户端的多条短连接合并为与服务器的一条长连接来进行通信,减少了 TCP连接及断开的次数,提高了实际有效数据的交换比率(也就是说数据传输的开销减少了),加速了服务器的响应,改善了服务器的性能,从而实现了提供高效的数据访问。在互联网的网页访问等应用中,很多情况下用户一次访问传送的数据量比较小,但每次访问都可能需要建立起很多的TCP连接,这就会造成同时有大量的TCP连接在冲击服务器。这样的业务模型会带来以下问题(I) 一个TCP连接的建立都需要请求连接方与被请求方之间进行三次握手,因为每次连接都需要分配新的端口号、资源和相应的数据结构,这明显增加了服务器的负担;(2)如果某些服务器需要用户认证以及对数据进行加密等操作,每次连接都进行重新认证会花费很多时间;(3)每台服务器上最大可连接数是有限的,所以同时有大量的连接发生就会导致部分连接失败;(4)大量的连接会导致服务器的CPU开销很高,降低了服务器的性能。当前实现TCP连接复用的技术中采用用户程序实现,而用户程序是运行在操作系统用户态的,数据需要从设备驱动到内核然后转由用户程序进行处理,处理过程相对复杂,服务器的数据处理能力极大的受到限制。当网络访问请求庞大时,如何及时高效地合并连接并且迅速处理服务器的响应数据成为亟待解决的问题。

发明内容
有鉴于此,本发明提供一种提高TCP连接复用处理效率的装置,应用于后端加速设备上,其特征在于,该装置包括监听单元,用于在后端加速设备上建立与前端用户之间的前端TCP连接,并按照预定的调度算法将已经建立的前端TCP连接分配一个数据处理单元;并建立前端TCP连接与数据处理单元之间的对应关系;该监听单元进一步用于在后端加速设备上建立与后端服务器之间的后端TCP连接并将该后端TCP连接分配给所述数据处理单元;数据分发单元,根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理单元;数据处理单元,用于将前端TCP连接复用到后端TCP连接,该复用过程包括将前端TCP连接上发送的TCP数据承载到所述后端TCP连接上发送给所述后端服务器,并将所述后端TCP连接上收到的TCP数据承载到对应的前端TCP连接上发送给所述前端用户。本发明还一种提高TCP连接复用处理效率的方法,应用于后端加速设备上,其中该后端加速设备运行时创建有至少一个监听线程以及多个数据处理线程,其特征在于,该方法包括A、监听线程在后端加速设备上建立与前端用户之间的前端TCP连接,并按照预定的调度算法将已经建立的前端TCP连接分配一个数据处理线程;并建立前端TCP连接与数据处理线程之间的对应关系;B、监听线程在后端加速设备上建立与后端服务器之间的后端TCP连接并将该后端TCP连接分配给所述数据处理单元;C、根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理线程; D、数据处理线程将前端TCP连接复用到后端TCP连接,该复用过程包括将前端TCP连接上发送的TCP数据承载到所述后端TCP连接上发送给所述后端服务器,并将所述后端TCP连接上收到的TCP数据承载到对应的前端TCP连接上发送给所述前端用户。由于本发明创建了多个socket处理线程,这使得后端加速设备可以并行地处理大量的前端TCP连接。而且本发明采用一个socket监听线程来做调度,可以将前端TCP连接均衡地调度多个socket数据处理线程进行并行处理。另外,由于本发明是在内核中创建socket数据处理线程来应对来自前端用户的前端TCP连接,这样简化了后端加速设备在一次TCP连接复用过程中的处理流程,比现有技术与操作系统中用户进程交互的方式更加简洁,效率更高。综上所述,本发明可以让后端加速设备的处理效率大幅度提高。


图I是本发明一种提高TCP连接复用处理效率装置的逻辑结构图。图2是本发明一种TCP连接复用处理过程示意图。
具体实施例方式TCP连接复用技术通过将前端多个用户的TCP请求复用到后端加速设备与服务器建立的一个TCP连接上。这种技术能够大大减小服务器的性能负载,减少与服务器之间新建TCP连接所带来的延时,并最大限度的降低前端用户对后端服务器的并发连接数请求,减少服务器的资源占用。请参考图I以及图2,本发明的一种基于计算机程序实现的提高TCP连接复用处理效率的装置包括资源创建单元、监听单元、数据分发单元以及数据处理单元;该装置运行在后端加速设备时执行如下处理流程步骤101,资源创建单元在内核中创建监听单元及多个数据处理单元;步骤102,监听单元,用于在后端加速设备上建立与前端用户之间的前端TCP连接,并按照预定的调度算法将已经建立的前端TCP连接分配一个数据处理单元;并建立前端TCP连接与数据处理单元之间的对应关系;该监听单元进一步用于在后端加速设备上建立与后端服务器之间的后端TCP连接并将该后端TCP连接分配给所述数据处理单元;步骤103,数据分发单元,根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理单元;
步骤104,数据处理单元,用于将前端TCP连接复用到后端TCP连接,该复用过程包括将前端TCP连接上发送的TCP数据承载到所述后端TCP连接上发送给所述后端服务器,并将所述后端TCP连接上收到的TCP数据承载到对应的前端TCP连接上发送给所述前端用户。步骤105,数据处理单元 在所述前端TCP连接符合预设断开条件时断开与所述前端用户之间的前端TCP连接。在优选的实施方式中,本技术发明采用多线程实现TCP连接复用,初始的时候可以在内核创建一个socket监听线程作为监听单元来实现对前后端TCP连接的建立工作以及TCP连接的调度分配工作,在内核创建多个socket数据处理线程作为数据处理单元来实现TCP连接复用过程中的TCP数据处理以及对分配到前端TCP连接进行后续管理。来自前端用户的TCP连接请求会先到达后端加速设备的驱动层面,驱动处理后会到达后端加速设备的协议栈,socket监听线程可以监听来自协议栈的前端用户的TCP连接请求,并与前端用户建立前端TCP连接。然后使用预定的调度算法(以轮询方式为例)将前端TCP连接依次分配给socket数据处理线程。在初始的时候多个数据处理线程可能都没有后端TCP连接可用,当监听线程调度到第一个数据处理线程时,由于该数据处理线程没有可用的后端TCP连接,此时监听线程可以与后端服务器新建一个后端TCP连接,然后将这个新建的后端TCP连接分配给第一个数据处理线程。数据处理线程通常是按照预定的比例进行TCP连接复用的,比如说20个前端TCP连接承载的TCP数据复用到I个后端TCP连接上发送给后端服务器。如果调度到某一个数据处理线程时,如果该数据处理线程已经被分配了 40个前端TCP连接,而后端TCP连接只有2个,这说明所述预定的比例已经被充分满足,即当前该数据处理线程没有可用的后端TCP连接,此时监听线程可以与后端服务器新建一个后端TCP连接,然后将这个新建的后端TCP连接分配给该数据处理线程。在优选的实施方式中,后端加速设备与后端服务器之间的后端TCP连接可以长期保持连接状态的,只有在业务特别空闲等特殊情况下才需要考虑释放后端TCP连接,这样可以避免后端服务器在建立后端TCP连接上消耗更多的资源。在将前端TCP连接分配到数据处理线程时,监听线程还可以将前端TCP连接与数据处理线程之间的对应关系保存起来,这样数据分发单元从协议栈收到某个前端TCP连接上承载TCP数据的时候可以根据该对应关系知道当前的TCP数据分发给对应的数据处理线程进行处理。数据处理线程主要用于将在前后端TCP连接之间进行TCP数据的复用。在优选的实施方式中,复用的方式是以轮询方式进行复用,也就是在时间这个维度上进行复用。需要注意的是,在轮询方式复用的过程中每次复用的时间未必是相同,因为每一次的前端用户与后端服务器之间的数据交互长短不一,而且有时虽然TCP连接虽然还存活,但是轮询到的时候并没有数据交互。具体来说,假设数据处理线程当前轮询到第15个前端TCP连接(假设来自前端用户A),来自该前端用户A的TCP数据报文会通过这个前端TCP连接到达后端加速设备,经过驱动与协议栈处理之后被数据处理线程收到,数据处理线程可以从TCP数据报文中获得其承载的载荷(也就是实际的TCP数据),把获得的TCP数据再充分封装为新的TCP数据报文放到后端TCP连接上,经过协议栈以及驱动处理之后发送给后端服务器。后端服务器收到之后会回应前端用户,比如说TCP数据可能是一个HTTP请求,后端服务器响应之后可能会发送HTTP应答。后端服务器的TCP数据到达数据处理线程之后,数据处理线程可以将其从后端TCP连接上卸下来然后承载到前端TCP连接上发送给前端用户A。接下来数据处理线程再处理第16个前端TCP连接,如此往复形成轮询的复用方式,从而实现一条后端TCP连接为多个前端TCP连接所共用。进一步来说,由于前端TCP连接并不是长期保持的,比如说用户可能会主动断开,或者是TCP连接超时等,所以满足各种断开条件时,数据处理线程会相应断开前端TCP连接。然后对自身分配到的前端TC P连接数量进行更新,更新后的前端TCP连接数量可以会被监听线程查看到,监听线程在分配新的前端TCP连接时可以准确地知道数据处理线程是否有的后端TCP连接。由于本发明创建了多个socket处理线程,这使得后端加速设备可以并行地处理大量的前端TCP连接。而且本发明采用一个socket监听线程来做调度,可以将前端TCP连接均衡地调度多个socket数据处理线程进行并行处理。另外,由于本发明是在内核中创建socket数据处理线程来应对来自前端用户的前端TCP连接,这样简化了后端加速设备在一次TCP连接复用过程中的处理流程,比现有技术与操作系统中用户进程交互的方式更加简洁,效率更高。综上所述,本发明可以让后端加速设备的处理效率大幅度提高。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.一种提高TCP连接复用处理效率的装置,应用于后端加速设备上,其特征在于,该装置包括 监听单元,用于在后端加速设备上建立与前端用户之间的前端TCP连接,并按照预定的调度算法将已经建立的前端TCP连接分配一个数据处理单元;并建立前端TCP连接与数据处理单元之间的对应关系;该监听单元进一步用于在后端加速设备上建立与后端服务器之间的后端TCP连接并将该后端TCP连接分配给所述数据处理单元; 数据分发单元,根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理单元; 数据处理单元,用于将前端TCP连接复用到后端TCP连接,该复用过程包括将前端TCP连接上发送的TCP数据承载到所述后端TCP连接上发送给所述后端服务器,并将所述后端TCP连接上收到的TCP数据承载到对应的前端TCP连接上发送给所述前端用户。
2.如权利要求I所述的装置,其特征在于,所述数据处理单元进一步用于以轮询的方式将多个前端TCP连接复用到后端TCP连接上。
3.如权利要求2所述的装置,其特征在于,所述数据处理单元用于按照预定的比例将多个前端TCP连接复用到一个后端TCP连接上,所述监听单元进一步用于以轮询的方式将所述前端TCP连接分配给所述数据处理单元,并在分配所述前端TCP连接之前判断数据处理单元是否有可用的后端TCP连接,如果是则继续,否则新建一个后端TCP连接,并将该后端TCP连接分配给该数据处理单元。
4.如权利要求2所述的装置,其特征在于,所述数据处理单元进一步用于在所述前端TCP连接符合预设断开条件时断开所述前端TCP连接。
5.如权利要求I所述的装置,其特征在于,所述监听单元为内核socket监听线程,所述数据处理单元为内核socket数据处理线程。
6.一种提高TCP连接复用处理效率的方法,应用于后端加速设备上,其中该后端加速设备运行时创建有至少一个监听线程以及多个数据处理线程,其特征在于,该方法包括 A、监听线程在后端加速设备上建立与前端用户之间的前端TCP连接,并按照预定的调度算法将已经建立的前端TCP连接分配一个数据处理线程;并建立前端TCP连接与数据处理线程之间的对应关系; B、监听线程在后端加速设备上建立与后端服务器之间的后端TCP连接并将该后端TCP连接分配给所述数据处理单元; C、根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理线程; D、数据处理线程将前端TCP连接复用到后端TCP连接,该复用过程包括将前端TCP连接上发送的TCP数据承载到所述后端TCP连接上发送给所述后端服务器,并将所述后端TCP连接上收到的TCP数据承载到对应的前端TCP连接上发送给所述前端用户。
7.如权利要求6所述的方法,其特征在于,其中所述步数据处理线程以轮询的方式将多个前端TCP连接复用到后端TCP连接上。
8.如权利要求7所述的方法,其特征在于, 步骤D所述将前端TCP连接复用到后端TCP连接具体为按照预定的比例将多个前端TCP连接复用到一个后端TCP连接上;所述步骤A包括以轮询的方式将所述前端TCP连接分配给所述数据处理线程,并在分配所述前端TCP连接之前判断数据处理线程是否有可用的后端TCP连接,如果是则继续,否则新建一个后端TCP连接,并将该后端TCP连接分配给该数据处理线程。
9.如权利要求7所述的方法,其特征在于,所述还包括D、数据处理线程在所述前端TCP连接符合预设断开条件时断开所述前端TCP连接。
10.如权利要求6所述的方法,其特征在于,所述监听线程为内核socket监听线程,所述数据处理线程为内核socket数据处理线程。
全文摘要
本发明提供一种提高TCP连接复用处理效率的装置,应用于后端加速设备上,其特征在于,该装置包括监听单元,用于建立与前端TCP连接,并按照预定的调度算法将前端TCP连接分配数据处理单元,建立前端TCP连接与数据处理单元之间的对应关系;数据分发单元,根据所述对应关系将通过所述前端TCP连接上发送的TCP数据提交给对应的数据处理单元;数据处理单元,用于将前端TCP连接复用到后端TCP连接。本发明创建了多个socket处理线程,这使得后端加速设备可以并行地处理大量的前端TCP连接。本发明是在内核中创建socket数据处理线程来应对来自前端用户的前端TCP连接,这样简化了后端加速设备在一次TCP连接复用过程中的处理流程。
文档编号H04L29/06GK102724132SQ20121022687
公开日2012年10月10日 申请日期2012年6月29日 优先权日2012年6月29日
发明者陈伟 申请人:杭州迪普科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1