CN108712462A - 一种连接建立方法、装置以及设备 - Google Patents

一种连接建立方法、装置以及设备 Download PDF

Info

Publication number
CN108712462A
CN108712462A CN201810310410.4A CN201810310410A CN108712462A CN 108712462 A CN108712462 A CN 108712462A CN 201810310410 A CN201810310410 A CN 201810310410A CN 108712462 A CN108712462 A CN 108712462A
Authority
CN
China
Prior art keywords
connection
hash table
establishing
task
established
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.)
Pending
Application number
CN201810310410.4A
Other languages
English (en)
Inventor
崔晓旻
蒋涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810310410.4A priority Critical patent/CN108712462A/zh
Publication of CN108712462A publication Critical patent/CN108712462A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Communication Control (AREA)

Abstract

本说明书实施例公开了一种连接建立方法、装置以及设备。方案包括:根据待建立连接的信息,获取对应的哈希表键,在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在,若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值;并且进一步地支持对针对已建立的该连接的空闲检测、主动断连、自动重连。

Description

一种连接建立方法、装置以及设备
技术领域
本说明书涉及计算机软件技术领域,尤其涉及一种连接建立方法、装置以及设备。
背景技术
在很多分布式架构的发展模式下,架构内部的远程过程调用(Remote ProcedureCall,RPC)通信框架,以及消息通信中间件都需要基于传输控制协议(TransmissionControl Protocol,TCP)连接来通信,因此,如何保证通信过程的稳定性,达到通信高可用的目的,需要在TCP连接层面设计一套方案,如连接建立、连接管理等方面具体如何处理等。
在现有技术中,在连接建立过程中,需要通过加锁来规避并发问题。
基于现有技术,需要能够提高通信效率的连接建立方案。
发明内容
本说明书实施例提供一种连接建立方法、装置以及设备,用以解决如下技术问题:需要能够提高通信效率的连接建立方案。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种连接建立方法,包括:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
本说明书实施例提供的一种连接建立装置,包括:
键获取模块,根据待建立连接的信息,获取对应的哈希表键;
值确定模块,在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
建立模块,若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
本说明书实施例提供的一种连接建立设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:在建立连接时,无需加锁也能够一定程度上规避并发问题,有利于提高通信效率。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书的方案在一种实际应用场景下的整体原理示意图;
图2为本说明书实施例提供的一种连接建立方法的流程示意图;
图3为本说明书实施例提供的一种实际应用场景下,上述连接建立方法的具体实施流程示意图;
图4为本说明书实施例提供的一种实际应用场景下,客户端进行连接空闲检测和断连重连的流程示意图;
图5为本说明书实施例提供的一种实际应用场景下,服务端进行连接空闲检测和断连的流程示意图;
图6为本说明书实施例提供的对应于图2的一种连接建立装置的结构示意图。
具体实施方式
本说明书实施例提供一种连接建立方法、装置以及设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
本说明书实施例提供了连接层面的一套处理方案,涉及连接建立,连接建立后的管理具体如何进行,该方案针对连接建立并发问题无需依赖于加锁,有助于提高通信效率,实现连接的高可用性。所述连接主要指传输层的TCP连接,当然,方案并不限于处理TCP连接,TCP连接以外的连接也可能处理,比如,HTTP连接等。
图1为本说明书的方案在一种实际应用场景下的整体原理示意图,这是微服务的一种使用场景,客户端本地有连接池需要跟服务端建立连接,方案涉及客户端和服务端。针对客户端,方案主要包括:基于哈希表无需加锁建立连接(简称无锁建连)、连接空闲检测(简称空闲检测)、主动断开连接(简称主动断连)、自动重新建立连接(简称自动重连);针对服务端,方案主要包括空闲检测、主动断连。
下面主要基于上述整体原理,对本说明书的方案进行详细说明。
空闲检测、主动断连、自动重连都是在连接建立之后才可能执行的动作,因此,先对连接建立进行说明,再介绍后续动作。图2为本说明书实施例提供的一种连接建立方法的流程示意图,是从客户端角度描述的,执行主体为客户端。需要说明的是,在实际应用中,连接建立也有可能由服务端发起,在这种情况下,图2中的流程也可以由服务端来执行,以下主要以由客户端发起连接建立为例进行说明。
图2中的流程可以包括以下步骤:
S202:根据待建立连接的信息,获取对应的哈希表键。
在本说明书实施例中,待建立连接的信息用于标识该待建立连接,所述信息比如是五元组(源IP地址、源端口地址、目的IP地址、目的端口地址、传输层协议)中内容,一般至少包含目的IP地址和目的端口地址,上述场景下即,建连所针对的服务端IP地址和端口地址。若预先按照一定的规则,为待建立的每条连接分配了唯一标识(比如,连接编号等),则被分配的唯一标识也可以作为待建立连接的信息。
在本说明书实施例中,为了管理连接建立,预先构建了哈希表,并保存于客户端本地或者便于客户端查询的其他处。已建立和待建立的不同的每条连接分别对应于哈希表中一个不同的键。通过预先对哈希表键的表示方式进行设计,使根据待建立连接的信息,能够确定哈希表中对应的键,设计方式不限,能够实现目的即可。
例如,使哈希表中的每个键分别表示为一个目的IP地址和一个目的端口地址的组合形式(比如,相接构成一个数字串等),或者组合后进一步的变换形式(比如,计算该数字串的摘要等),则根据待建立连接的目的IP地址和目的端口地址,通过组合或者组合后变换,即可确定对应的哈希表键。
S204:在对应的哈希表中,确定是否存在该哈希表键的值(也简称为键值),该值的存在表明所述待建立连接的连接建立任务已存在。
在本说明书实施例中,步骤S204中对上述哈希表中键值的意义进行了限定。实施时为了实现这样的限定,客户端每当新建立一个连接建立任务,需要在自己的哈希表中,为对应的哈希表键插入值,若该值已存在,则表明该连接建立任务已存在,则不再建立相同的该连接建立任务,反之,若该值不存在,则表明该连接建立任务尚不存在,则可以建立该连接建立任务,从而有利于避免连接建立并发带来的冲突。
S206:若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
在本说明书实施例中,建立连接任务、插入键值可以用同一个动作实现,也可以分别用不同动作实现。对于前一种情况,比如,对于面向对象编程语言,可以预先定义的连接建立任务类,则每个连接建立任务分别是该连接建立任务类的一个实例(也即一个对象),使键值的数据类型为连接建立任务,则一个键值即表示一个连接建立任务,可以使:“在哈希表中插入该哈希表键的值”即相当于“建立该连接建立任务”。对于后一种情况,对建立连接任务、插入键值这两个不同动作的执行顺序不做限定,可以同时执行,也可以先后执行。
在本说明书实施例中,连接建立完成后,可以在需要时从连接池获取该连接,进而通过该连接进行业务交互。
通过图2的方法,在建立连接时,无需加锁也能够一定程度上规避并发问题,有利于提高通信效率。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,以及连接建立后,空闲检测、主动断连、自动重连等方案,这些方案有助于提高连接的高可用性。下面进行说明。
在本说明书实施例中,对于步骤S202,所述根据待建立连接的信息,获取对应的哈希表键,具体可以包括:根据待建立连接的IP地址和端口地址,生成对应的哈希表键。比如,按照预设规则,对待建立连接对应的服务端IP地址和端口地址进行组合,得到对应的哈希表键。
在本说明书实施例中,为了减少方案成本,以及提高针对并发问题的实际解决效果,可以利用能够提供并发控制功能的特定接口,来实现连接的建立。比如,对于步骤S204和S206,假定该值表征该连接建立任务,则所述通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值,具体可以包括:通过调用特定接口,在所述哈希表中插入该哈希表键的值,所述特定接口保证对该值的插入操作的原子性(也即,保证只有一个该值被插入,以保证使得相同的连接建立任务不会建立多个);通过执行该值所表征的该连接建立任务,建立连接。
例如,可以采用ConcurrentHashMap作为上述的哈希表,以及采用ConcurrentHashMap提供的putIfAbsent接口作为上述特定接口,ConcurrentHashMap是一种具有并发能力的哈希表,其中提供了一些并发控制接口如putIfAbsent接口等来解决原子性问题。在调用putIfAbsent接口插入键值时,会判断该键值是否已存在,若否,则插入该键值并返回NULL,否则,不会覆盖已存在的键值,直接返回该已存在的键值。
需要说明的是,上例通常是基于JAVA语言实现的,若其他语言也提供了能够实现上例效果的哈希表和接口,则也可以用于方案实施。
在本说明书实施例中,该连接建立任务的执行由某个线程来执行,将该线程称为当前线程,在该连接建立任务的执行过程中,可以阻塞当前线程,防止其他任务占用,从而有利于当前线程更可靠地执行该连接建立任务。
基于此,对于步骤S204,所述确定是否存在该哈希表键的值后,可以执行:若确定是存在该哈希表键的值,则判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成。类似地,对于步骤S206,所述执行该连接建立任务,具体可以包括:执行该连接建立任务,以及判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成。
上面对无锁建连的方案进行了详细说明,在多线程并发调用场景下,会有大量建立连接的动作,基于该方案,能够采用无锁化的建连模型,来保证特定数目的连接,并预热好连接,放在连接池中,以供业务需要时使用。
本说明书还提供了空闲检测方案,以及与其配套的主动断连方案和自动重连,以保证已建立的连接的高可用性,以及降低无谓的连接资源消耗。下面详细说明。
连接建立后,客户端和/或服务端可以针对该连接,进行空闲检测。具体可以周期性地进行空闲检测,客户端的检测周期可以相对短些,比如每3秒或者5秒一次等,服务端的检测周期可以相对长些,比如每分钟一次等。客户端进行空闲检测的目的是:在检测到连接空闲后,可以触发心跳以保持连接,以避免连接自动失效,另外,根据具体的空闲持续情况,也可以主动断开连接,以避免浪费客户端资源。服务端进行空闲检测的目的是:在检测到连接空闲后,可以主动断开连接,以避免浪费服务端资源,以及避免过多的空闲连接(其中一些空闲连接可能已成为坏连接)导致文件句柄数过多进而导致服务不可用。
在本说明书实施例中,对于步骤S206,所述建立连接,具体可以包括:在客户端与服务端之间建立连接。所述建立连接后,可以执行:所述客户端周期性地检测已建立的该连接是否空闲;若是,则为该连接触发心跳,并根据所述心跳的超时情况,主动断开该连接或者维持该连接。可以只要心跳超时,就主动断开该连接,但是,在实际应用中,考虑到网络设备抖动、网络瞬时故障等情况,一次心跳超时可能是偶然的,因此,可以多等待几个空闲检测周期,如果持续心跳超时,再主动断开该连接,从而有助于提高连接管理的容错性。
根据上一段的分析,所述根据所述心跳的超时情况,主动断开或者维持该连接,具体可以包括:判断所述心跳是否已超时;若否,则所述客户端维持该连接,并等待下一个周期的连接空闲检测;否则,若所述心跳在设定数量的周期内均超时,则所述客户端主动断开该连接。设定数量通常大于1。
进一步地,在建立连接后,服务端也可以周期性地检测已建立的该连接是否空闲,若是,则可以主动断开该连接。除了服务端主动断开连接的情况以外,还可能由于网络设备故障等原因导致连接断开,针对这些情况,为了提高服务的可用性,客户端可以具有自动重连功能,若已建立的该连接断开,且并非客户端主动断开,则客户端基于自动重连功能,可以自动重新建立连接。在实际应用中,自动重连功能可以是能够在客户端开启或者关闭的功能,以适应于不同需求。
根据上面的说明,本说明书实施例还提供了一种实际应用场景下,上述连接建立方法的具体实施流程示意图,如图3所示。
图3中的流程主要包括:根据待建立的连接的信息,获取对应的哈希表键;根据该哈希表键查询键值是否存在,从而判断对应的连接建立任务是否已存在;若存在,则获取该已存在的连接建立任务,判断该连接建立任务是否已执行完成;若不存在,则新建并执行唯一连接建立任务(此处的唯一指该连接建立任务最多只有一个,不会有多个相同的该连接建立任务),判断该连接建立任务是否已执行完成;若该连接建立任务已执行完成,则获取连接以发起通信,若该连接建立任务尚未执行完成,则使当前线程处于阻塞状态以等待该连接建立任务执行完成。
进一步地,本说明书实施例还提供了一种实际应用场景下,客户端进行连接空闲检测和断连重连的流程示意图,如图4所示。
图4中的流程主要包括:开始一轮空闲检测(每个客户端空闲检测周期内进行一轮空闲检测),客户端检测连接是否空闲;若不空闲,则等待下一轮空闲检测;若空闲,则触发心跳,判断心跳是否超时,若未超时,则等待下一轮空闲检测,若超时,则将超时次数计数加1(每一轮中超时记1次),判断超时次数是否超过设定次数(比如3次),若未超过,则等待下一轮空闲检测,若超过,则客户端主动断开连接,若开启了自动重连,则客户端重连。
进一步地,本说明书实施例还提供了一种实际应用场景下,服务端进行连接空闲检测和断连的流程示意图,如图5所示。
图5中的流程主要包括:开始一轮空闲检测(每个服务端空闲检测周期内进行一轮空闲检测),服务端检测连接是否空闲;若不空闲,则等待下一轮空闲检测;若空闲,则服务端主动断开连接,等待客户端重连。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图6为本说明书实施例提供的对应于图2的一种连接建立装置的结构示意图,虚线方框表示可选的模块,所述装置包括:
键获取模块601,根据待建立连接的信息,获取对应的哈希表键;
值确定模块602,在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
建立模块603,若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
可选地,所述键获取模块601根据待建立连接的信息,获取对应的哈希表键,具体包括:
所述键获取模块601根据待建立连接的IP地址和端口地址,生成对应的哈希表键。
可选地,该值表征该连接建立任务;
所述建立模块603通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值,具体包括:
所述建立模块603通过调用特定接口,在所述哈希表中插入该哈希表键的值,所述特定接口保证对该值的插入操作的原子性;
通过执行该值所表征的该连接建立任务,建立连接。
可选地,所述哈希表包括ConcurrentHashMap,所述特定接口包括putIfAbsent接口。
可选地,在所述值确定模块602确定是否存在该哈希表键的值后,若是,则所述建立模块603判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成;
所述建立模块603执行该连接建立任务,具体包括:
所述建立模块603执行该连接建立任务,以及判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成。
可选地,所述建立模块603建立连接,具体包括:
所述建立模块603在客户端与服务端之间建立连接;
所述装置位于所述客户端,所述装置还包括:
空闲检测模块604,在所述建立模块603建立连接后,周期性地检测已建立的该连接是否空闲;若是,则为该连接触发心跳,并根据所述心跳的超时情况,主动断开该连接或者维持该连接。
可选地,所述空闲检测模块604根据所述心跳的超时情况,主动断开或者维持该连接,具体包括:
所述空闲检测模块604判断所述心跳是否已超时;若否,则维持该连接,并等待下一个周期的连接空闲检测;否则,若所述心跳在设定数量的周期内均超时,则主动断开该连接。
可选地,所述装置还包括:
自动重连模块605,在所述建立模块603建立连接后,若所述连接断开,且所述客户端的自动重连功能处于开启状态,则自动重新建立连接。
可选地,所述建立模块603建立连接,具体包括:
所述建立模块603在客户端与服务端之间建立连接;
在所述建立模块603建立连接后,所述服务端周期性地检测已建立的该连接是否空闲;若是,则主动断开该连接。
可选地,所述连接包括传输控制协议TCP连接。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备和非易失性计算机存储介质。
本说明书实施例提供的对应于图2的一种连接建立设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
本说明书实施例提供的对应于图2的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、设备、非易失性计算机存储介质与方法是对应的,因此,装置、设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、设备、非易失性计算机存储介质的有益技术效果。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、系统、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书实施例可提供为方法、系统或计算机程序产品。因此,本说明书可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (21)

1.一种连接建立方法,包括:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
2.如权利要求1所述的方法,所述根据待建立连接的信息,获取对应的哈希表键,具体包括:
根据待建立连接的IP地址和端口地址,生成对应的哈希表键。
3.如权利要求1所述的方法,该值表征该连接建立任务;
所述通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值,具体包括:
通过调用特定接口,在所述哈希表中插入该哈希表键的值,所述特定接口保证对该值的插入操作的原子性;
通过执行该值所表征的该连接建立任务,建立连接。
4.如权利要求3所述的方法,所述哈希表包括ConcurrentHashMap,所述特定接口包括putIfAbsent接口。
5.如权利要求1所述的方法,所述确定是否存在该哈希表键的值后,所述方法还包括:
若是,则判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成;
所述执行该连接建立任务,具体包括:
执行该连接建立任务,以及判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成。
6.如权利要求1所述的方法,所述建立连接,具体包括:
在客户端与服务端之间建立连接;
所述建立连接后,所述方法还包括:
所述客户端周期性地检测已建立的该连接是否空闲;
若是,则为该连接触发心跳,并根据所述心跳的超时情况,主动断开该连接或者维持该连接。
7.如权利要求6所述的方法,所述根据所述心跳的超时情况,主动断开或者维持该连接,具体包括:
判断所述心跳是否已超时;
若否,则所述客户端维持该连接,并等待下一个周期的连接空闲检测;否则,若所述心跳在设定数量的周期内均超时,则所述客户端主动断开该连接。
8.如权利要求6所述的方法,所述建立连接后,所述方法还包括:若所述连接断开,且所述客户端的自动重连功能处于开启状态,则所述客户端自动重新建立连接。
9.如权利要求1所述的方法,所述建立连接,具体包括:
在客户端与服务端之间建立连接;
所述建立连接后,所述方法还包括:
所述服务端周期性地检测已建立的该连接是否空闲;
若是,则主动断开该连接。
10.如权利要求1~9任一项所述的方法,所述连接包括传输控制协议TCP连接。
11.一种连接建立装置,包括:
键获取模块,根据待建立连接的信息,获取对应的哈希表键;
值确定模块,在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
建立模块,若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
12.如权利要求11所述的装置,所述键获取模块根据待建立连接的信息,获取对应的哈希表键,具体包括:
所述键获取模块根据待建立连接的IP地址和端口地址,生成对应的哈希表键。
13.如权利要求11所述的装置,该值表征该连接建立任务;
所述建立模块通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值,具体包括:
所述建立模块通过调用特定接口,在所述哈希表中插入该哈希表键的值,所述特定接口保证对该值的插入操作的原子性;
通过执行该值所表征的该连接建立任务,建立连接。
14.如权利要求13所述的装置,所述哈希表包括ConcurrentHashMap,所述特定接口包括putIfAbsent接口。
15.如权利要求11所述的装置,在所述值确定模块确定是否存在该哈希表键的值后,若是,则所述建立模块判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成;
所述建立模块执行该连接建立任务,具体包括:
所述建立模块执行该连接建立任务,以及判断该连接建立任务是否已执行完成,若未执行完成,则阻塞当前线程,以等待该连接建立任务执行完成。
16.如权利要求11所述的装置,所述建立模块建立连接,具体包括:
所述建立模块在客户端与服务端之间建立连接;
所述装置位于所述客户端,所述装置还包括:
空闲检测模块,在所述建立模块建立连接后,周期性地检测已建立的该连接是否空闲;若是,则为该连接触发心跳,并根据所述心跳的超时情况,主动断开该连接或者维持该连接。
17.如权利要求16所述的装置,所述空闲检测模块根据所述心跳的超时情况,主动断开或者维持该连接,具体包括:
所述空闲检测模块判断所述心跳是否已超时;若否,则维持该连接,并等待下一个周期的连接空闲检测;否则,若所述心跳在设定数量的周期内均超时,则主动断开该连接。
18.如权利要求16所述的装置,所述装置还包括:
自动重连模块,在所述建立模块建立连接后,若所述连接断开,且所述客户端的自动重连功能处于开启状态,则所述客户端自动重新建立连接。
19.如权利要求11所述的装置,所述建立模块建立连接,具体包括:
所述建立模块在客户端与服务端之间建立连接;
在所述建立模块建立连接后,所述服务端周期性地检测已建立的该连接是否空闲;若是,则主动断开该连接。
20.如权利要求11~19任一项所述的装置,所述连接包括传输控制协议TCP连接。
21.一种连接建立设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
根据待建立连接的信息,获取对应的哈希表键;
在对应的哈希表中,确定是否存在该哈希表键的值,该值的存在表明所述待建立连接的连接建立任务已存在;
若否,则通过建立并执行该连接建立任务,建立连接,以及在所述哈希表中插入该哈希表键的值。
CN201810310410.4A 2018-04-09 2018-04-09 一种连接建立方法、装置以及设备 Pending CN108712462A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810310410.4A CN108712462A (zh) 2018-04-09 2018-04-09 一种连接建立方法、装置以及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810310410.4A CN108712462A (zh) 2018-04-09 2018-04-09 一种连接建立方法、装置以及设备

Publications (1)

Publication Number Publication Date
CN108712462A true CN108712462A (zh) 2018-10-26

Family

ID=63866603

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810310410.4A Pending CN108712462A (zh) 2018-04-09 2018-04-09 一种连接建立方法、装置以及设备

Country Status (1)

Country Link
CN (1) CN108712462A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889775A (zh) * 2018-12-26 2019-06-14 视联动力信息技术股份有限公司 一种数据超时处理的方法和装置
CN111405007A (zh) * 2020-03-06 2020-07-10 Oppo广东移动通信有限公司 Tcp会话管理方法、装置、存储介质及电子设备
CN111510492A (zh) * 2020-04-15 2020-08-07 矩阵元技术(深圳)有限公司 一种实现断线重连的数据处理方法、装置、设备及系统
CN111857982A (zh) * 2019-04-25 2020-10-30 浙江大学 一种数据处理方法及其装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114547A1 (en) * 2003-10-06 2005-05-26 Chien-Sheng Wu Network address and port number translation system
CN101247328A (zh) * 2007-12-28 2008-08-20 北京高信达网络科技有限公司 网络应用的多连接处理方法及装置
CN101815014A (zh) * 2010-02-09 2010-08-25 上海百络信息技术有限公司 基于连接的实时网络数据捕获方法
CN102202064A (zh) * 2011-06-13 2011-09-28 刘胜利 基于网络数据流分析的木马通信行为特征提取方法
CN103179039A (zh) * 2012-10-25 2013-06-26 四川省电力公司信息通信公司 一种有效过滤正常网络数据包的方法
CN103561060A (zh) * 2013-10-17 2014-02-05 北京京东尚科信息技术有限公司 一种多线程环境下的通信链接方法及中转服务器

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050114547A1 (en) * 2003-10-06 2005-05-26 Chien-Sheng Wu Network address and port number translation system
CN101247328A (zh) * 2007-12-28 2008-08-20 北京高信达网络科技有限公司 网络应用的多连接处理方法及装置
CN101815014A (zh) * 2010-02-09 2010-08-25 上海百络信息技术有限公司 基于连接的实时网络数据捕获方法
CN102202064A (zh) * 2011-06-13 2011-09-28 刘胜利 基于网络数据流分析的木马通信行为特征提取方法
CN103179039A (zh) * 2012-10-25 2013-06-26 四川省电力公司信息通信公司 一种有效过滤正常网络数据包的方法
CN103561060A (zh) * 2013-10-17 2014-02-05 北京京东尚科信息技术有限公司 一种多线程环境下的通信链接方法及中转服务器

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109889775A (zh) * 2018-12-26 2019-06-14 视联动力信息技术股份有限公司 一种数据超时处理的方法和装置
CN111857982A (zh) * 2019-04-25 2020-10-30 浙江大学 一种数据处理方法及其装置
CN111857982B (zh) * 2019-04-25 2023-10-27 浙江大学 一种数据处理方法及其装置
CN111405007A (zh) * 2020-03-06 2020-07-10 Oppo广东移动通信有限公司 Tcp会话管理方法、装置、存储介质及电子设备
CN111405007B (zh) * 2020-03-06 2022-10-21 Oppo广东移动通信有限公司 Tcp会话管理方法、装置、存储介质及电子设备
CN111510492A (zh) * 2020-04-15 2020-08-07 矩阵元技术(深圳)有限公司 一种实现断线重连的数据处理方法、装置、设备及系统

Similar Documents

Publication Publication Date Title
CN108712462A (zh) 一种连接建立方法、装置以及设备
CN107657059A (zh) 基于区块链应用系统的数据同步方法、中间件及系统
US10938577B2 (en) Blockchain service acceptance and consensus method and devices
JP6884870B2 (ja) ブロックチェーンを基にしたデータ処理方法および装置
KR101962502B1 (ko) 전력 효율적인 애플리케이션 통지 시스템
CN110191231A (zh) 一种未读消息提醒方法、装置、终端设备及存储介质
US10712798B2 (en) Sensor processing method of mobile terminal, storage medium, and electronic device
WO2022022575A1 (zh) 显示控制方法、装置和存储介质
CN108549562A (zh) 一种图像加载的方法及装置
CN107196772A (zh) 一种广播消息的方法及装置
CN108833252A (zh) 一种基于集群的信息发送方法、装置及设备
EP3779692B1 (en) Blockchain data processing
CN106034138A (zh) 一种远程服务调用方法及装置
EP3407162A1 (en) Mobile terminal application program processing method and apparatus, storage medium, and electronic device
CN109002357A (zh) 资源分配方法、装置及物联网系统
CN110134503A (zh) 一种集群环境下的定时任务处理方法、装置及存储介质
CN109982034A (zh) 视频监控系统中的访问请求处理方法及装置
CN110430255A (zh) 分布式集群中服务请求的处理方法、系统以及电子设备
CN105991416B (zh) 一种消息传递方法及消息传递中间件
CN109117282A (zh) 一种数据传输方法、通讯组件、装置及系统
WO2023231342A1 (zh) 基于变量状态自动执行合约的方法和装置
CN108989072A (zh) 一种部署、管理及调用组件的方法及装置
CN108681492A (zh) 数据处理方法及装置
CN110460673A (zh) 一种服务地址获取方法、装置及设备
CN107329812B (zh) 一种运行协程的方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20201021

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20201021

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20181026