自伸缩TCP链路维持方法、系统和存储介质与流程

文档序号:30642336发布日期:2022-07-05 22:26阅读:84来源:国知局
自伸缩TCP链路维持方法、系统和存储介质与流程
自伸缩tcp链路维持方法、系统和存储介质
技术领域
1.本技术涉及网络技术,特别是一种自伸缩tcp链路维持方法、系统和存储介质。


背景技术:

2.现有的tcp连接多使用运行坏境自带的长连接机制,或者使用连接池来控制连接的总量,在网络稳定或者tcp通讯频次很低的情况下能够满足要求,但是在网络连接情况一般,或者业务模块很多需要经常断开切换重连时,可能会导致端口资源占用过多,甚至出现无端口资源可用的问题。


技术实现要素:

3.本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种自伸缩tcp链路维持方法、系统和存储介质,以缓解端口资源占用过多,导致无端口资源可用的问题。
4.一方面,本技术实施例提供了一种自伸缩tcp链路维持方法,包括以下步骤:
5.判断tcp链路是否处于中断状态;
6.在tcp链路处于中断状态时,若当前时刻减去上一次重连失败的时刻小于当前的重连时间间隔,则返回判断tcp链路是否处于中断状态的步骤;
7.若当前时刻减去上一次重连失败的时刻大于等于当前的重连时间间隔,则判断是否满足重连条件;
8.若满足重连条件,则将重连次数加一,并执行重新连接;
9.若不满足重连条件,则返回判断tcp链路是否处于中断状态的步骤;
10.若重连成功,则将重连次数置零,重置重连时间间隔至默认值,记录连接时刻,返回判断tcp链路是否处于中断状态的步骤;
11.若重连失败,根据重连次数配置重连时间间隔,记录连接时刻,返回判断tcp链路是否处于中断状态的步骤,其中,重连次数与重连时间间隔正相关。
12.在一些实施例中,所述判断tcp链路是否处于中断状态,具体为:
13.按照周期确定tcp链路是否处于中断状态。
14.在一些实施例中,所述判断是否满足重连条件,具体是:
15.判断是否满足依次判断是否满足第一至第n重连条件,其中n是大于等于2的整数;
16.第一至第n重连条件中任一不满足,则判定不满足重连条件,满足第一至第n重连条件,则判定满足重连条件。
17.在一些实施例中,第m重连条件为在第m时间范围内记录连接时刻的数量小于第m预设值,m是属于1~n的整数。
18.在一些实施例中,第l时间范围长度小于第l-1时间范围,第l预设值小于第l-1预设值,其中,l是属于2~n的整数。
19.在一些实施例中,所述判断是否满足重连条件,具体是:
20.满足以下全部条件则判定满足重连条件,否则判定不满足重连条件;
21.在30分钟内记录连接时刻的数量小于9;
22.在25分钟内记录连接时刻的数量小于8;
23.在20分钟内记录连接时刻的数量小于7;
24.在15分钟内记录连接时刻的数量小于6;
25.在10分钟内记录连接时刻的数量小于5;
26.在5分钟内记录连接时刻的数量小于4;
27.在1分钟内记录连接时刻的数量小于3;
28.在30秒内记录连接时刻的数量小于2;
29.在10秒内记录连接时刻的数量小于1。
30.在一些实施例中,所述根据重连次数配置重连时间间隔,具体为:
31.当重连次数等于1时,将所述重连时间间隔配置为10秒;
32.当重连次数等于2时,将所述重连时间间隔配置为30秒;
33.当重连次数等于3时,将所述重连时间间隔配置为60秒;
34.当重连次数大于等于4时,将所述重连时间间隔配置为300秒。
35.在一些实施例中,记录连接时刻,具体是将当前的时刻,记录到重连记录表中,所述上一次重连失败的时刻,从重连记录表中查询。
36.另一方面,本技术实施例公开了一种自伸缩tcp链路维持系统,包括:
37.存储器,用于存储程序;
38.处理器,用于加载所述程序以执行所述的自伸缩tcp链路维持方法。
39.另一方面,本技术实施例公开了一种计算机可读存储介质,其存储有程序,所述程序被处理器执行时实现所述的自伸缩tcp链路维持方法。
40.本技术实施例首先判断当前tcp链路是否处于中断状态,如果处于中断状态,则看重连是否满足当前的重连时间间隔,以确保tcp链路不能连续尝试重连,然后判断是否满足重连条件,通过判断是否满足重连条件来进一步筛选掉频繁连接的请求,当tcp链路实施重连的时候,动态地增加重连失败的条件,以进一步降低其重连的频率,通过这样的方式可以使得难以重连的链路的重连频率降低,使得资源不会被频繁的重连请求所占用,使得容易重连的tcp链路可以快速连接。
附图说明
41.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图做一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
42.图1是本技术实施例提供的一种自伸缩tcp链路维持方法的流程图;
43.图2是本技术实施例提供的一种自伸缩tcp链路维持系统的模块框图。
具体实施方式
44.为使本技术的目的、技术方案和优点更加清楚,以下将参照本技术实施例中的附
图,通过实施方式清楚、完整地描述本技术的技术方案,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
45.在本发明的描述中,若干的含义是一个以上,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
46.本发明的描述中,除非另有明确的限定,设置等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
47.本发明的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
48.为了实现在网络连接情况一般,或者业务模块很多需要经常断开切换重连时,稳定可靠地长期保持tcp链路,保持tcp连接长期在线,解决端口资源占用过多,甚至出现无端口资源可用的问题,需要通过本文的熔断机制技术方案,下面对技术方案进行详细说明:
49.tcp链路的流程一般是:应用进程启动-》链路打开-》链路保持-》链路通信-》应用进程退出-》链路关闭。本技术要描述“链路保持”这一部分。
50.参照图1,本技术实施例提供了一种自伸缩tcp链路维持方法,包括以下步骤:
51.s1、判断tcp链路是否处于中断状态。一般是按照设定的周期执行该步骤,一般可以数十毫秒执行一次。需要理解的是,此时tcp链路处于打开状态,如果不需要,可以通过程序关闭tcp链路,此时判断的是tcp链路是否仍然在维持状态。
52.s2、在tcp链路处于中断状态时,若当前时刻减去上一次重连失败的时刻小于当前的重连时间间隔,则返回判断tcp链路是否处于中断状态的步骤,即步骤s1。该步骤的目的在于,通过设置一个重连时间间隔来降低重连的次数,避免完全不存在重连可能性的tcp链路反复进行重连,导致资源被占用,能够连接上的tcp链路因为资源不足而导致不能链接。如果为满足重连时间间隔,则说明需要继续等待。
53.s3、若当前时刻减去上一次重连失败的时刻大于等于当前的重连时间间隔,则判断是否满足重连条件。本步骤将满足重连时间间隔的请求,进行进一步的判断,以确定是否下一步的条件,通过多层条件,将重连失败次数多的重连频率降低。这样可以自然筛选出难以重连的tcp链路,使得能够重连的tcp链路可以快速恢复。
54.s4、若满足重连条件,则将重连次数加一,并执行重新连接。在本步骤中,重连条件与一定时间内的重连次数有关。例如,可以是要求30分钟内的重连次数小于一定数值。重连条件可以有多个,可以设置满足若干条件作为判定满足重连条件的要求。
55.s5、若不满足重连条件,则返回判断tcp链路是否处于中断状态的步骤,即步骤s1。以一定时间内的重连次数作为重连条件,可以筛选出短时间内进行了多次重连的tcp链路,这样可以进一步区分出链接不稳定、不能恢复连接的链路,使得端口资源可以让出给可以重连成功的链路。只有满足重连条件的
56.s6、若重连成功,则将重连次数置零,重置重连时间间隔至默认值,记录连接时刻,返回判断tcp链路是否处于中断状态的步骤,即步骤s1。在本实施例中,重连次数置零,那么在下次中断的时候,不会因为重连次数导致重连时间间隔被累加到较大的数值。重置重连时间间隔相当于重置了重连的时间间隔要求。这样下次再中断的时候,tcp链路也有机会快速恢复。
57.s7、若重连失败,根据重连次数配置重连时间间隔,记录连接时刻,返回判断tcp链路是否处于中断状态的步骤,即步骤s1,其中,重连次数与重连时间间隔正相关。本步骤的目的在于惩罚性的增加tcp链路重连的要求,这相当于一种熔断机制,重连失败的次数越多,则重连的时间间隔更大。
58.例如,在一些实施例中,所述根据重连次数配置重连时间间隔,具体为:
59.当重连次数等于1时,将所述重连时间间隔配置为10秒;
60.当重连次数等于2时,将所述重连时间间隔配置为30秒;
61.当重连次数等于3时,将所述重连时间间隔配置为60秒;
62.当重连次数大于等于4时,将所述重连时间间隔配置为300秒。
63.此外,无论重连是否成功,都会记录连接时刻,具体是将当前的时刻,记录到重连记录表中,所述上一次重连失败的时刻,从重连记录表中查询。
64.经过以上步骤控制,当链路状态从连接正常,突然变成连接中断时,可立即进行重连尝试,实现了由于网络情况突变(网络拥塞、网线拔插等)导致的中断后快速恢复。当网络长时间瘫痪,逐级提高重连间隔,并最终保持和指定阈值,可以在显著减少端口消耗的同时,提高连接的恢复速度。当链路是正常的,由应用进程主动断开或链路远端被动断开时,在一个熔断周期内前一部分快速重试连接阈值次,在周期的后面部分可以稳定维持阈值次重试,实现周期的闭环,在周期环的滚动期间,重试动作自动伸缩,解决了由于应用上层导致的频繁中断端口资源快速损耗的问题。
65.在一些实施例中,所述判断是否满足重连条件,具体是:
66.判断是否满足依次判断是否满足第一至第n重连条件,其中n是大于等于2的整数;
67.第一至第n重连条件中任一不满足,则判定不满足重连条件,满足第一至第n重连条件,则判定满足重连条件。
68.第m重连条件为在第m时间范围内记录连接时刻的数量小于第m预设值,m是属于1~n的整数。
69.在一些实施例中,第l时间范围长度小于第l-1时间范围,第l预设值小于第l-1预设值,其中,l是属于2~n的整数。
70.通过设置上述条件规则,可以在多种情况下过滤掉频繁实施重连的tcp链路,降低这些tcp链路重连的频率。使得其必须满足一定的时间间隔条件。
71.具体地,所述判断是否满足重连条件,具体是:
72.满足以下全部条件则判定满足重连条件,否则判定不满足重连条件;
73.在30分钟内记录连接时刻的数量小于9;
74.在25分钟内记录连接时刻的数量小于8;
75.在20分钟内记录连接时刻的数量小于7;
76.在15分钟内记录连接时刻的数量小于6;
77.在10分钟内记录连接时刻的数量小于5;
78.在5分钟内记录连接时刻的数量小于4;
79.在1分钟内记录连接时刻的数量小于3;
80.在30秒内记录连接时刻的数量小于2;
81.在10秒内记录连接时刻的数量小于1。
82.本实施例公开了一种可靠的自伸缩tcp链路维持算法,下面对其进行详细的说明:
83.变量定义:
84.retrytmlastreconnect:表示上一次失败重连的时刻,默认值为0;
85.retrycyclereconnect:表示当前熔断范围内的重连时间间隔,单位秒,默认为1;
86.retryreconnectcounter:表示已经连续重连的次数,默认为0;
87.connectrecord:表示最近的连接时刻记录列表,单位秒;
88.secondcounter:表示当前时刻值,单位秒;
89.isactive:表示链路连接状态,true为连接正常、false为连接中断;
90.链路维持过程每50ms定期检查链路当前连接状态,当isactive为true时,等待进入下一个连接状态检查周期,当isactive为false时,进入重连检查期。
91.链路维持过程步骤:
92.1.当isactive为true时,等待进入步骤1,当isactive为false时,进入步骤2。
93.2.当secondcounter减retrytmlastreconnect小于retrycyclereconnect成立时,等待进入步骤1;当表达式不成立时进入步骤3。在应用进程首次启动的情况下,本步骤表达式必然成立。本步骤用于执行熔断重试间隔。
94.3.当connectrecord在30分钟内的记录数量大于等于9成立时,等待进入步骤1;当表达式不成立时进入步骤4。
95.4.当connectrecord在25分钟内的记录数量大于等于8成立时,等待进入步骤1;当表达式不成立时进入步骤5。
96.5.当connectrecord在20分钟内的记录数量大于等于7成立时,等待进入步骤1;当表达式不成立时进入步骤6。
97.6.当connectrecord在15分钟内的记录数量大于等于6成立时,等待进入步骤1;当表达式不成立时进入步骤7。
98.7.当connectrecord在10分钟内的记录数量大于等于5成立时,等待进入步骤1;当表达式不成立时进入步骤8。
99.8.当connectrecord在5分钟内的记录数量大于等于4成立时,等待进入步骤1;当表达式不成立时进入步骤9。
100.9.当connectrecord在1分钟内的记录数量大于等于3成立时,等待进入步骤1;当表达式不成立时进入步骤10。
101.10.当connectrecord在30秒内的记录数量大于等于2成立时,等待进入步骤1;当表达式不成立时进入步骤11。
102.11.当connectrecord在10秒内的记录数量大于等于1成立时,等待进入步骤1;当表达式不成立时进入步骤12。步骤4至11用于执行熔断重试次数。
103.12.retryreconnectcounter累加1,对失败连续重连次数计数,用于熔断检查条
件,然后进入步骤13。
104.13.retrytmlastreconnect赋值为secondcounter,用于熔断检查条件,然后进入步骤14。
105.14.执行重连,重连成功则执行1)~4),重连失败则进入步骤15;
106.1)retryreconnectcounter赋值为0;
107.2)retrycyclereconnect赋值为1;
108.3)connectrecord增加一条记录,值为secondcounter;
109.4)等待进入步骤1;
110.15.connectrecord增加一条记录,值为secondcounter,用于熔断检查条件,然后进入步骤16。
111.16.当retryreconnectcounter等于1成立时retrycyclereconnect赋值为10,否则当retryreconnectcounter等于2成立时retrycyclereconnect赋值为30,否则当retryreconnectcounter等于3成立时retrycyclereconnect赋值为60,否则当retryreconnectcounter大于等于4成立时retrycyclereconnect赋值为300。意思是当连续重连失败时,把重连间隔分别降级到10秒、30秒、60秒和一直保持5分钟。
112.17.等待进入步骤1。
113.经过以上步骤控制,当链路状态从连接正常,突然变成连接中断时,可立即进行重连尝试,实现了由于网络情况突变(网络拥塞、网线拔插等)导致的中断后快速恢复。当网络长时间瘫痪,逐级提高重连间隔,并最终保持和指定阈值,可以在显著减少端口消耗的同时,提高连接的恢复速度。当链路是正常的,由应用进程主动断开或链路远端被动断开时,在一个熔断周期内前一部分快速重试连接阈值次,在周期的后面部分可以稳定维持阈值次重试,实现周期的闭环,在周期环的滚动期间,重试动作自动伸缩,解决了由于应用上层导致的频繁中断端口资源快速损耗的问题。为应用进程7*24小时不间断运行提供保障。
114.参照图2,本实施例公开了一种自伸缩tcp链路维持系统,包括:
115.存储器,用于存储程序;
116.处理器,用于加载所述程序以执行所述的自伸缩tcp链路维持方法。
117.本实施例公开了一种计算机可读存储介质,其存储有程序,所述程序被处理器执行时实现所述的自伸缩tcp链路维持方法。
118.在本技术中所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等各种可以存储程序代码的介质。
119.注意,上述仅为本技术的较佳实施例及所运用技术原理。本领域技术人员会理解,本技术不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本技术的保护范围。因此,虽然通过以上实施例对本技术进行
了较为详细的说明,但是本技术不仅仅限于以上实施例,在不脱离本技术构思的情况下,还可以包括更多其他等效实施例,而本技术的范围由所附的权利要求范围决定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1