CN103561060A - 一种多线程环境下的通信链接方法及中转服务器 - Google Patents
一种多线程环境下的通信链接方法及中转服务器 Download PDFInfo
- Publication number
- CN103561060A CN103561060A CN201310488550.8A CN201310488550A CN103561060A CN 103561060 A CN103561060 A CN 103561060A CN 201310488550 A CN201310488550 A CN 201310488550A CN 103561060 A CN103561060 A CN 103561060A
- Authority
- CN
- China
- Prior art keywords
- link
- thread
- access
- communication linkage
- pond
- 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.)
- Granted
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种通信链接方法及中转服务器,通信链接方法包括:在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;接收到包括目标网络地址和目标端口的网络访问请求,为所述网络请求分配线程作为访问线程;从所述链接池中检索访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。本发明避免在网络服务器在提供中转服务的同时大量并发性地建立通信链接,减少CPU资源的消耗。
Description
技术领域
本发明涉及网络通信相关技术领域,特别是一种通信链接方法及中转服务器。
背景技术
用户访问redis服务器和mongodb服务器时,由于redis服务器和mongodb服务器处于内网,而用户多数从外网进行访问,因此建立了网络服务器(即web服务器)作为中转服务器。用户通过浏览器向网络服务器发送网络访问请求,网络访问请求中包括了网络地址和端口,网络服务器向指定的网络地址和端口建立连接,进行网络通信。
这种方式采用网络服务器为众多的用户提供访问转发服务,网络服务器作为用户与redis服务器和mongodb服务器的桥梁,需要接收大量的用户的网络访问请求。为了满足实时性的要求,现有技术主要采用并发线程,对每个网络访问请求网络服务器均会分配一个线程进行处理。
然而,在访问网络的时候,需要建立通信链接,即每个线程均需要建立一个通信链接。现有技术在为每个网络访问请求分配线程的同时,在线程下建立通信链接,然后在用户访问完毕后关闭通信链接。
由于网络服务器需要接收大量的网络访问请求,因此会有大量的并发线程,而每个线程在访问网络时都建立通信链接,从而大量并发地建立通信链接,从而消耗大量的CPU资源。
发明内容
基于此,有必要针对现有技术采用中转服务器在多线程环境下访问网络时,在中转服务器提供中转服务的同时大量并发地建立通信链接,造成大量的CPU资源消耗的技术问题,提供一种多线程环境下的通信链接方法及中转服务器。
一种多线程环境下的通信链接方法,包括:
通信链接建立步骤,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收步骤,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配步骤,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
一种多线程环境下的通信链接中转服务器,包括:
通信链接建立模块,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收模块,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配模块,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
本发明事先建立通信链接,并将建立成功的通信链接采用链接结构保存到链接池,在接收到网络访问请求时,通过检索适当的链接结构,得到关联的通信链接的链接标识,从而避免在网络服务器在提供中转服务的同时大量并发性地建立通信链接,减少CPU资源的消耗。
附图说明
图1为本发明一种多线程环境下的通信链接方法的工作流程图;
图2为本发明一个例子的示意图;
图3为本发明一种多线程环境下的通信链接中转服务器的结构模块图。
具体实施方式
下面结合附图和具体实施例对本发明做进一步详细的说明。
如图1所示为本发明一种多线程环境下的通信链接方法的工作流程图,包括:
通信链接建立步骤S101,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收步骤S102,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配步骤S103,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
其中通信链接可以采用现有的各种通信方式,其中最常用的是套接字通信链接,即socket链接。在与指定网络地址和指定端口成功建立通信链接后,会得到一个用于标识通信链接的链接标识,例如,成功建立socket链接时,会得到一个套接字的描述符,可以用于作为所示的链接标识。与指定网络地址和指定端口成功建立通信链接即与指定网络地址的服务器的指定端口成功建立通信链接。
在多线程环境下,每个线程都会有一个线程ID即线程标识,如果线程ID相同,则表示为同一线程,因此,在步骤S103中,检索到通信线程标识与所述访问线程的线程标识相同的链接结构,则表示访问线程与建立该链接结构的线程为同一线程,从而可以使用已经建立好的通信链接。
链接结构可以采用单向链表实现,每个链接结构定义为一个结构体,结构体包括所述链接标识、所述指定网络地址、所述指定端口与线程的线程ID。而当链接池数据量大的时候还可以用二叉树替换单向链表。
采用本实施例的一种多线程环境下的通信链接方法的中转服务器,事先执行步骤S101,得到一个包括链接结构的链接池,每个链接结构包括所述链接标识、所述指定网络地址、所述指定端口与线程的线程ID。步骤S102中,网络访问请求一般是用户通过浏览器向中转服务器发送网络访问请求,中转服务器为每个网络访问请求分配一个线程作为访问线程,该访问线程也有线程ID,根据访问线程的线程ID,以及目标网络地址和目标端口,在步骤S103中,从链接池中检索与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构作为访问链接结构。其中,与所述访问线程关联的链接结构,即该链接结构的线程ID与访问线程的线程ID相同,同时该链接结构的指定网络地址与目标网络地址相同且指定端口与目标端口相同。即得到与目标网络地址的远端服务器的目标端口建立通信链接的链接标识,根据该链接标识可以直接与目标网络地址的远端服务器的目标端口进行通信,而无需建立新的通信链接,通信链接是事先建立好的,因此在中转服务器在提供中转服务时,无需建立通信链接,从而减少CPU资源的消耗。
在其中一个实施例中:
所述通信链接建立步骤中,计算由所述指定网络地址和所述指定端口生成的哈希值作为指定哈希值,将所述链接标识、所述指定哈希值与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
所述通信连接检索分配步骤中,计算所述目标网络地址和所述目标端口生成的哈希值作为目标哈希值,从所述链接池中检索与所述访问线程关联且指定哈希值与目标哈希值相同的链接结构作为访问链接结构。
其中,在通信链接建立步骤中计算指定哈希值和在通信连接检索分配步骤中计算目标哈希值所采用的哈希算法一致。
本实施例在链接结构中保存由所述指定网络地址和所述指定端口生成的哈希值,以减少所要保存的数据量,同时提高检索效率。
在其中一个实施例中,所述通信链接检索分配步骤S103,还包括:
如果从所述链接池中检索不到与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构,则将所述目标网络地址作为指定网络地址,将所述目标端口作为指定端口,建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,将所述链接标识、所述指定网络地址、所述指定端口与所述线程关联作为访问链接结构,将所述访问链接结构保存到链接池,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
本实施例当在链接池中找不到合适的链接结构时,新建立通信链接,并生成相应的链接结构,以供后续使用。
在其中一个实施例中,所述通信链接检索分配步骤S103,具体包括:
从所述链接池中检索与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构作为访问链接结构;
对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,如果网络链接诊断成功,则所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信,如果网络链接诊断失败,则从所述链接池删除所述访问链接结构。
本实施例对访问链接结构的指定网络地址和指定端口进行网络链接诊断,该网络链接诊断,现有最常用的方式是采用ping链接,即ping链接访问链接结构的指定网络地址和指定端口,如果网络链接诊断成功,即能够ping通,则证明访问链接结构的指定网络地址的远端服务器的指定端口仍然能提供服务,因此所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信,否则,网络链接诊断失败,即不能够ping通时,可以判断访问链接结构的指定网络地址的远端服务器的指定端口无法提供服务,则从所述链接池删除所述访问链接结构。本实施例通过网络链接诊断提前确定访问链接结构的指定网络地址的远端服务器的指定端口是否还能提供服务,从而能够为访问线程提供一个可靠的链接标识,同时,当网络链接诊断失败,将访问链接结构删除,则可以重新建立一个新的可靠的通信链接。
在其中一个实施例中:
所述通信链接建立步骤S101中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配步骤S103中,如果所述访问链接结构的最后访问时间与当前时间的差值超过预设检查时间阈值,则对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,并更新所述访问链接结构的最后访问时间为对所述访问链接结构的链接标识进行网络链接诊断的时间。
本实施例,通过在链接结构中增加最后访问时间,使得可以根据最后访问时间与当前时间的差值判断是否需要进行网络链接诊断,以避免过于频繁地连接指定网络地址的远端服务器的指定端口。优选地,预设检查时间阈值可以为5秒。
在其中一个实施例中,还包括定时清理步骤:
所述通信链接建立步骤S101中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配步骤S103中,将所述访问链接结构的最后访问时间更新为所述访问线程采用所述访问链接标识从所述目标网络地址和目标端口进行通信的时间;
所述定时清理步骤,每隔预设清理时间,则检查所述链接池中的所有链接结构的最后访问时间,删除最后访问时间与当前时间的差值超过预设的清理阈值的链接结构。
本实施例可以避免建立的通信来链接长时间没有访问的时候也长期占用通信链接资源,导致其他程序连接不上远端服务器的情况。
在其中一个实施例中:
当其中一个线程将建立的链接结构保存到链接池时,阻塞其他线程对链接池的操作;
当其中一个线程对链接池进行检索时,允许其他线程对链接池进行检索。
本实施例采用了读写锁保证线程安全访问链接池。
如图2所示为本发明一个例子的示意图。
其中,中转服务器21的IP地址为:192.168.206.193,Redis服务器23的Redis访问进程在192.168.206.84:8341上提供服务。
中转服务器21在链接池25中使用单向链表保存链接结构,链接结构定义为一个结构体,该结构体包含linux socket成员、hash字符串成员、线程ID成员、最后访问时间成员等。Hash字符串由IP和端口组成,是线程查找对应链接的一个依据。Linux socket成员是与指定网络地址和指定端口建立的非阻塞socket链接的套接字的描述符。例如,其中一个linuxsocket成员是与192.168.206.84:8341建立socket链接的套接字的描述符。中转服务器21对同一个hash字符串在创建时分配多个线程并保存。当链接池数据量大的时候可以用二叉树替换链表,而且可以保持编程接口不变。
当浏览器用户221或者浏览器用户222或者浏览器用户223向中转服务器21发出网络访问请求时,中转服务器21先为其分配访问线程241、访问线程242、访问线程243,然后,根据网络访问请求的目标IP,端口构造hash字符串,然后在链接池25里根据hash字符串和访问线程的线程ID查询对应的链接结构251、链接结构252、链接结构253。由于浏览器用户221、浏览器用户222、浏览器用户223均需要访问Redis服务器23的Redis访问进程,因此,链接结构251、链接结构252、链接结构253均指向Redis服务器23的Redis访问进程,即192.168.206.84:8341。
如果找到对应的链接结构,则做链接健康检查:
链接健康检查的策略是:根据链接结构的最后访问时间和当前时间做对比,5秒内没有做过检查的做ping连接侦测,5秒做过检查的不做处理,避免过于频繁访问。如果ping连接侦测失败,则从链接池中删除该链接结构,如果ping连接侦测成功,则访问线程采用该链接结构的linuxsocket成员与远端服务器进行通信,例如采用与192.168.206.84:8341建立socket链接的套接字的描述符,与Redis服务器23的Redis访问进程建立通信。
如果找不到对应的链接结构,则创建非阻塞socket,设置连接超时时间、接收数据超时时间、发送数据超时时间,在成功建立后得到对应的套接字的描述符,创建新的链接结构,设置hash字符串成员、线程ID成员、最后访问时间成员、linux socket成员,并作为链接结构的成员存入链接池。同时,访问线程采用该链接结构的linux socket成员与远端服务器进行通信。
另外,中转服务器21采用POSIX Linux读写锁来保证线程安全访问链接池,具体如下:
在链接池中存入或删除链接结构时,以写模式的读写锁进行操作,其他线程阻塞,不得操作。
从链接池中查询时,以读模式的读写锁进行操作,其他线程可以并行执行查询。
最后,启动一个单独的超时检查线程26,每5分钟检查一次链接池中的链接结构的最后访问时间成员,从链接池中删除超过5分钟没有使用的链接结构。以避免没有访问的时候也长期占用socket链接资源,其他程序连接不上远端服务器的情况。
测试结果:
CPU使用率降低39.50%(99.5%->60.2%)
每秒响应请求数提高92.64%(6855.71fetches/sec->13206.6fetches/sec)
测试数据:
中转服务器21的进程环境:
Centos6.3;
linux kernel2.6.32-279.el6.x86_64;
CPU:AMD Opteron(TM)Processor6220。
Redis服务器23进程环境:
Centos6.3;
linux kernel2.6.32-279.el6.x86_64;
CPU:Intel(R)Xeon(R)CPU E5-262002.00GHz;
(24核cpu环境下,满负荷为2400%)
并发500请求Redis服务器:
1)不使用链接池的情况:
Redis服务器进程CPU使用率为99.5%(满负荷为2400%),每秒响应请求次数:6855.71fetches/sec。
2)使用链接池的情况
Redis服务器进程CPU使用率为60.2%(满负荷为2400%),CPU使用率降低39.50%
请求结果:每秒响应请求次数:13206.6fetches/sec,每秒响应请求数提高(13206.6-6855.71)×100%/6855.71=92.64%。
如图3所示为本发明一种多线程环境下的通信链接中转服务器的结构模块图,包括:
通信链接建立模块301,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收模块302,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配模块303,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
在其中一个实施例中:
所述通信链接建立模块301中,计算由所述指定网络地址和所述指定端口生成的哈希值作为指定哈希值,将所述链接标识、所述指定哈希值与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
所述通信连接检索分配模块303中,计算所述目标网络地址和所述目标端口生成的哈希值作为目标哈希值,从所述链接池中检索与所述访问线程关联且指定哈希值与目标哈希值相同的链接结构作为访问链接结构。
在其中一个实施例中,所述通信链接检索分配模块303,还包括:
如果从所述链接池中检索不到与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构,则将所述目标网络地址作为指定网络地址,将所述目标端口作为指定端口,建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,将所述链接标识、所述指定网络地址、所述指定端口与所述线程关联作为访问链接结构,将所述访问链接结构保存到链接池,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
在其中一个实施例中,所述通信链接检索分配模块303,具体包括:
从所述链接池中检索与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构作为访问链接结构;
对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,如果网络链接诊断成功,则所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信,如果网络链接诊断失败,则从所述链接池删除所述访问链接结构。
在其中一个实施例中:
所述通信链接建立模块301中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配模块303中,如果所述访问链接结构的最后访问时间与当前时间的差值超过预设检查时间阈值,则对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,并更新所述访问链接结构的最后访问时间为对所述访问链接结构的链接标识进行网络链接诊断的时间。
在其中一个实施例中,还包括定时清理模块:
所述通信链接建立模块301中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配模块303中,将所述访问链接结构的最后访问时间更新为所述访问线程采用所述访问链接标识从所述目标网络地址和目标端口进行通信的时间;
所述定时清理模块,每隔预设清理时间,则检查所述链接池中的所有链接结构的最后访问时间,删除最后访问时间与当前时间的差值超过预设的清理阈值的链接结构。
在其中一个实施例中:
当其中一个线程将建立的链接结构保存到链接池时,阻塞其他线程对链接池的操作;
当其中一个线程对链接池进行检索时,允许其他线程对链接池进行检索。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (14)
1.一种多线程环境下的通信链接方法,其特征在于,包括:
通信链接建立步骤,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收步骤,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配步骤,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
2.根据权利要求1所述的多线程环境下的通信链接方法,其特征在于:
所述通信链接建立步骤中,计算由所述指定网络地址和所述指定端口生成的哈希值作为指定哈希值,将所述链接标识、所述指定哈希值与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
所述通信连接检索分配步骤中,计算所述目标网络地址和所述目标端口生成的哈希值作为目标哈希值,从所述链接池中检索与所述访问线程关联且指定哈希值与目标哈希值相同的链接结构作为访问链接结构。
3.根据权利要求1所述的多线程环境下的通信链接方法,其特征在于,所述通信链接检索分配步骤,还包括:
如果从所述链接池中检索不到与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构,则将所述目标网络地址作为指定网络地址,将所述目标端口作为指定端口,建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,将所述链接标识、所述指定网络地址、所述指定端口与所述线程关联作为访问链接结构,将所述访问链接结构保存到链接池,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
4.根据权利要求1所述的多线程环境下的通信链接方法,其特征在于,所述通信链接检索分配步骤,具体包括:
从所述链接池中检索与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构作为访问链接结构;
对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,如果网络链接诊断成功,则所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信,如果网络链接诊断失败,则从所述链接池删除所述访问链接结构。
5.根据权利要求4所述的多线程环境下的通信链接方法,其特征在于:
所述通信链接建立步骤中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配步骤中,如果所述访问链接结构的最后访问时间与当前时间的差值超过预设检查时间阈值,则对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,并更新所述访问链接结构的最后访问时间为对所述访问链接结构的链接标识进行网络链接诊断的时间。
6.根据权利要求1所述的多线程环境下的通信链接中转服务器,其特征在于,还包括定时清理步骤:
所述通信链接建立步骤中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配步骤中,将所述访问链接结构的最后访问时间更新为所述访问线程采用所述访问链接标识从所述目标网络地址和目标端口进行通信的时间;
所述定时清理步骤,每隔预设清理时间,检查所述链接池中的所有链接结构的最后访问时间,删除最后访问时间与当前时间的差值超过预设的清理阈值的链接结构。
7.根据权利要求1所述的多线程环境下的通信链接方法,其特征在于:
当其中一个线程将建立的链接结构保存到链接池时,阻塞其他线程对链接池的操作;
当其中一个线程对链接池进行检索时,允许其他线程对链接池进行检索。
8.一种多线程环境下的通信链接中转服务器,其特征在于,包括:
通信链接建立模块,在至少一个线程下建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,以所述线程的线程标识作为通信线程标识,将所述链接标识、所述指定网络地址、所述指定端口与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
网络访问请求接收模块,接收包括目标网络地址和目标端口的网络访问请求,并为所述网络请求分配访问线程;
通信链接检索分配模块,从所述链接池中检索通信线程标识与所述访问线程的线程标识相同、且指定网络地址与目标网络地址相同、且指定端口与目标端口相同的链接结构作为访问链接结构,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
9.根据权利要求8所述的多线程环境下的通信链接中转服务器,其特征在于:
所述通信链接建立模块中,计算由所述指定网络地址和所述指定端口生成的哈希值作为指定哈希值,将所述链接标识、所述指定哈希值与所述通信线程标识相关联作为链接结构,将所述链接结构保存到链接池;
所述通信连接检索分配模块中,计算所述目标网络地址和所述目标端口生成的哈希值作为目标哈希值,从所述链接池中检索与所述访问线程关联且指定哈希值与目标哈希值相同的链接结构作为访问链接结构。
10.根据权利要求8所述的多线程环境下的通信链接中转服务器,其特征在于,所述通信链接检索分配模块,还包括:
如果从所述链接池中检索不到与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构,则将所述目标网络地址作为指定网络地址,将所述目标端口作为指定端口,建立到指定网络地址和指定端口的通信链接,在所述通信链接建立成功后,得到所述通信链接的链接标识,将所述链接标识、所述指定网络地址、所述指定端口与所述线程关联作为访问链接结构,将所述访问链接结构保存到链接池,所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信。
11.根据权利要求8所述的多线程环境下的通信链接中转服务器,其特征在于,所述通信链接检索分配模块,具体包括:
从所述链接池中检索与所述访问线程关联且指定网络地址与目标网络地址相同且指定端口与目标端口相同的链接结构作为访问链接结构;
对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,如果网络链接诊断成功,则所述访问线程采用所述访问链接结构的链接标识与所述目标网络地址和目标端口进行通信,如果网络链接诊断失败,则从所述链接池删除所述访问链接结构。
12.根据权利要求11所述的多线程环境下的通信链接中转服务器,其特征在于:
所述通信链接建立模块中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配模块中,如果所述访问链接结构的最后访问时间与当前时间的差值超过预设检查时间阈值,则对所述访问链接结构的指定网络地址和指定端口进行网络链接诊断,并更新所述访问链接结构的最后访问时间为对所述访问链接结构的链接标识进行网络链接诊断的时间。
13.根据权利要求8所述的多线程环境下的通信链接中转服务器,其特征在于,还包括定时清理模块:
所述通信链接建立模块中,将在所述通信链接建立成功的时间作为最后访问时间,并将所述链接标识、所述指定网络地址、所述指定端口、所述最后访问时间与所述线程关联作为链接结构,将所述链接结构保存到链接池;
所述通信链接检索分配模块中,将所述访问链接结构的最后访问时间更新为所述访问线程采用所述访问链接标识从所述目标网络地址和目标端口进行通信的时间;
所述定时清理模块,每隔预设清理时间,则检查所述链接池中的所有链接结构的最后访问时间,删除最后访问时间与当前时间的差值超过预设的清理阈值的链接结构。
14.根据权利要求8所述的多线程环境下的通信链接中转服务器,其特征在于:
当其中一个线程将建立的链接结构保存到链接池时,阻塞其他线程对链接池的操作;
当其中一个线程对链接池进行检索时,允许其他线程对链接池进行检索。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310488550.8A CN103561060B (zh) | 2013-10-17 | 2013-10-17 | 一种多线程环境下的通信链接方法及中转服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310488550.8A CN103561060B (zh) | 2013-10-17 | 2013-10-17 | 一种多线程环境下的通信链接方法及中转服务器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103561060A true CN103561060A (zh) | 2014-02-05 |
CN103561060B CN103561060B (zh) | 2017-08-11 |
Family
ID=50015210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310488550.8A Active CN103561060B (zh) | 2013-10-17 | 2013-10-17 | 一种多线程环境下的通信链接方法及中转服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103561060B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357266A (zh) * | 2015-09-30 | 2016-02-24 | 山东乾云启创信息科技股份有限公司 | 适合多种场景的socket通信与进程管理通用平台及方法 |
CN105939405A (zh) * | 2016-06-12 | 2016-09-14 | 杭州迪普科技有限公司 | 一种dhcp业务处理方法及装置 |
CN106302413A (zh) * | 2016-08-04 | 2017-01-04 | 中车青岛四方机车车辆股份有限公司 | 企业内网访问方法、ios终端、中转处理方法、中转服务器 |
CN108182121A (zh) * | 2017-12-29 | 2018-06-19 | 广州小鹏汽车科技有限公司 | 一种Android中控大屏系统模块间通信方法及系统 |
CN108712462A (zh) * | 2018-04-09 | 2018-10-26 | 阿里巴巴集团控股有限公司 | 一种连接建立方法、装置以及设备 |
CN112579210A (zh) * | 2020-12-30 | 2021-03-30 | 上海众源网络有限公司 | 一种应用程序控制方法及装置 |
CN114401315A (zh) * | 2021-12-31 | 2022-04-26 | 广东国腾量子科技有限公司 | 一种基于动态决策模型的消息推送服务系统及方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019680A1 (en) * | 2002-07-25 | 2004-01-29 | International Business Machines Corporation | Method and system to provide highly available services |
US20050120117A1 (en) * | 2003-11-26 | 2005-06-02 | International Business Machines Corporation | Efficient connection pool validation |
CN101094159A (zh) * | 2007-07-18 | 2007-12-26 | 中兴通讯股份有限公司 | 一种媒体流私网穿透的方法 |
CN101990256A (zh) * | 2010-08-27 | 2011-03-23 | 中兴通讯股份有限公司 | 长连接管理装置及长连接通讯的链路资源管理方法 |
EP2381628A1 (en) * | 2008-12-25 | 2011-10-26 | ZTE Corporation | Method and system for realizing massive terminals access of a streaming media server |
-
2013
- 2013-10-17 CN CN201310488550.8A patent/CN103561060B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040019680A1 (en) * | 2002-07-25 | 2004-01-29 | International Business Machines Corporation | Method and system to provide highly available services |
US20050120117A1 (en) * | 2003-11-26 | 2005-06-02 | International Business Machines Corporation | Efficient connection pool validation |
CN101094159A (zh) * | 2007-07-18 | 2007-12-26 | 中兴通讯股份有限公司 | 一种媒体流私网穿透的方法 |
EP2381628A1 (en) * | 2008-12-25 | 2011-10-26 | ZTE Corporation | Method and system for realizing massive terminals access of a streaming media server |
CN101448006B (zh) * | 2008-12-25 | 2012-01-11 | 中兴通讯股份有限公司 | 一种实现流媒体服务器大量终端接入的方法及系统 |
CN101990256A (zh) * | 2010-08-27 | 2011-03-23 | 中兴通讯股份有限公司 | 长连接管理装置及长连接通讯的链路资源管理方法 |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357266A (zh) * | 2015-09-30 | 2016-02-24 | 山东乾云启创信息科技股份有限公司 | 适合多种场景的socket通信与进程管理通用平台及方法 |
CN105357266B (zh) * | 2015-09-30 | 2018-11-16 | 山东乾云启创信息科技股份有限公司 | 适合多种场景的socket通信与进程管理通用平台及方法 |
CN105939405A (zh) * | 2016-06-12 | 2016-09-14 | 杭州迪普科技有限公司 | 一种dhcp业务处理方法及装置 |
CN105939405B (zh) * | 2016-06-12 | 2020-01-03 | 杭州迪普科技股份有限公司 | 一种dhcp业务处理方法及装置 |
CN106302413A (zh) * | 2016-08-04 | 2017-01-04 | 中车青岛四方机车车辆股份有限公司 | 企业内网访问方法、ios终端、中转处理方法、中转服务器 |
CN106302413B (zh) * | 2016-08-04 | 2019-11-08 | 中车青岛四方机车车辆股份有限公司 | 企业内网访问方法、ios终端、中转处理方法、中转服务器 |
CN108182121A (zh) * | 2017-12-29 | 2018-06-19 | 广州小鹏汽车科技有限公司 | 一种Android中控大屏系统模块间通信方法及系统 |
CN108182121B (zh) * | 2017-12-29 | 2020-10-20 | 广州小鹏汽车科技有限公司 | 一种Android中控大屏系统模块间通信方法及系统 |
CN108712462A (zh) * | 2018-04-09 | 2018-10-26 | 阿里巴巴集团控股有限公司 | 一种连接建立方法、装置以及设备 |
CN112579210A (zh) * | 2020-12-30 | 2021-03-30 | 上海众源网络有限公司 | 一种应用程序控制方法及装置 |
CN114401315A (zh) * | 2021-12-31 | 2022-04-26 | 广东国腾量子科技有限公司 | 一种基于动态决策模型的消息推送服务系统及方法 |
CN114401315B (zh) * | 2021-12-31 | 2023-09-12 | 广东国腾量子科技有限公司 | 一种基于动态决策模型的消息推送服务系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103561060B (zh) | 2017-08-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103561060A (zh) | 一种多线程环境下的通信链接方法及中转服务器 | |
US9639589B1 (en) | Chained replication techniques for large-scale data streams | |
US10785322B2 (en) | Server side data cache system | |
AU2014346366B2 (en) | Partition-based data stream processing framework | |
CN108205541B (zh) | 分布式网络爬虫任务的调度方法及装置 | |
US20150135255A1 (en) | Client-configurable security options for data streams | |
US8544094B2 (en) | Suspicious node detection and recovery in MapReduce computing | |
CN109309631A (zh) | 一种基于通用网络文件系统写入数据的方法及装置 | |
CN109788055B (zh) | 一种基于微服务架构的服务治理系统及其方法 | |
US20030158847A1 (en) | Scalable database management system | |
US8589537B2 (en) | Methods and computer program products for aggregating network application performance metrics by process pool | |
US20120297067A1 (en) | Load Balancing System for Workload Groups | |
CN109120709A (zh) | 一种缓存方法、装置、设备及介质 | |
US10467055B2 (en) | Computer resource provisioning failure mitigation | |
CN103607424B (zh) | 一种服务器连接方法及服务器系统 | |
CN101420458B (zh) | 基于内容分发网络的多媒体内容监控系统、方法及装置 | |
EP2108228A1 (en) | Method, apparatus, and computer program product for data upload in a computing system | |
WO2016029790A1 (zh) | 数据传输方法及装置 | |
CN104298675B (zh) | 用于缓存管理的方法和装置 | |
CN106713391A (zh) | 一种session信息的共享方法和共享系统 | |
US20130117293A1 (en) | File system directory attribute correction | |
CN105915621A (zh) | 访问数据的方法及预处理服务器 | |
CN105357250A (zh) | 一种数据运营系统 | |
WO2016095644A1 (zh) | 数据库的高可用解决方法和装置 | |
CN103235754B (zh) | 分布式文件系统中请求的处理方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |