CN112751934A - 一种客户端重连方法、装置、设备及存储介质 - Google Patents

一种客户端重连方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN112751934A
CN112751934A CN202011623616.6A CN202011623616A CN112751934A CN 112751934 A CN112751934 A CN 112751934A CN 202011623616 A CN202011623616 A CN 202011623616A CN 112751934 A CN112751934 A CN 112751934A
Authority
CN
China
Prior art keywords
server
client
connection
chkclientthread
session connection
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
Application number
CN202011623616.6A
Other languages
English (en)
Other versions
CN112751934B (zh
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.)
Beijing Advanced Digital Technology Co ltd
Original Assignee
Beijing Advanced Digital Technology Co 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 Beijing Advanced Digital Technology Co ltd filed Critical Beijing Advanced Digital Technology Co ltd
Priority to CN202011623616.6A priority Critical patent/CN112751934B/zh
Publication of CN112751934A publication Critical patent/CN112751934A/zh
Application granted granted Critical
Publication of CN112751934B publication Critical patent/CN112751934B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • H04L67/141Setup of application sessions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • 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
    • H04L67/143Termination or inactivation of sessions, e.g. event-controlled end of session
    • H04L67/145Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Health & Medical Sciences (AREA)
  • Cardiology (AREA)
  • General Health & Medical Sciences (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请提供了一种客户端重连方法、装置、设备及存储介质,涉及微服务技术领域。解决在客户端与服务端的session会话失效的情况下,客户端无法连接服务端的问题。所述方法包括:将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;创建ChkClientThread线程,以探测所述服务端的连通状态;当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。

Description

一种客户端重连方法、装置、设备及存储介质
技术领域
本申请涉及微服务技术领域,特别是涉及一种客户端重连方法、装置、设备及存储介质。
背景技术
微服务代理平台用于应用系统的分布式部署,为基于微服务架构构建的应用系统提供数据运营服务。微服务代理平台中引入开源的应用程序协调服务(Zookeeper)的客户端框架(Curator),在微服务代理平台进行数据运营服务中,通过Curator实现客户端与服务端的连接。
Curator内部提供了重连机制,通过该重连机制保证了服务端能够持续向客户端提供数据,但Curator内部提供的重连机制只在会话控制(session)有效期内有效,当客户端与服务端之间由于断链故障(服务端无法收到心跳包),客户端与服务端的会话控制超过指定时间时,服务端就会把该客户端置为会话失效(session expired)客户端,不允许会话失效客户端的会话标识(sessionId)再次连接服务端,即不允许在服务器创建会话失效客户端的会话标识对应的会话控制,进而造成Curator内部提供的重连机制失效,客户端无法连接服务端的情况。
发明内容
本申请实施例提供一种客户端重连方法、装置、设备及存储介质,解决在客户端与服务端的会话控制失效的情况下,客户端无法连接服务端的问题。
本申请实施例第一方面提供一种客户端重连方法,应用于微服务代理平台,所述方法包括:
将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
创建ChkClientThread线程,以探测所述服务端的连通状态;
当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
可选地,所述方法还包括:
在接收到应用终端发送的寻址请求时,实例化客户端;将所述客户端与所述应用终端建立绑定关系;
将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点,包括:
将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
可选地,重建所述客户端与所述服务端的连接,包括:
重新启动所述客户端;
从所述客户端的本地读取服务数据,在所述服务端注册重新启动的所述客户端;其中,所述服务数据是由所述客户端与所述服务端建立会话连接之后,缓存至所述客户端本地的;
将重新启动后的所述客户端与所述服务端之间建立会话连接。
可选地,当在所述服务端注册对应所述会话连接的临时节点之后,所述方法还包括:
将所述临时节点缓存在所述客户端本地;
在重建所述客户端与所述服务端的连接之后,所述方法还包括:
将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。
可选地,创建ChkClientThread线程,以探测所述服务端的连通状态,包括:
创建ChkClientThread线程;
在所述ChkClientThread线程中实例化探测器,以使所述探测器对所述服务端的IP和端口进行探测,并在所述服务端的IP和端口无异常时,向所述服务端请求连接;
所述方法还包括:
当所述探测客户端与所述服务端连接成功时,确定所述ChkClientThread线程探测到所述服务端为可连通状态。
可选地,在创建ChkClientThread线程之后,所述方法还包括:
在所述ChkClientThread线程中设置探测频率,并开启探测开关;其中,所述探测器用于按照所述探测频率对所述服务端的IP和端口进行探测;
在重建所述客户端与所述服务端的连接后,所述方法还包括:
重新开启所述探测开关。
本申请实施例第二方面提供一种客户端重连装置,所述装置包括:
临时节点注入模块,用于将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
连通性探测模块,用于创建ChkClientThread线程,以探测所述服务端的连通状态;
重连模块,用于当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
可选地,所述装置还包括:
实例化模块,用于在接收到应用终端发送的寻址请求时,实例化客户端;
绑定模块,用于将所述客户端与所述应用终端建立绑定关系;
所述临时节点注入模块包括:
第一注册子模块,用于将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
可选地,所述重连模块包括:
启动子模块,用于重新启动所述客户端;
第二注册子模块,用于从所述客户端的本地读取服务数据,在所述服务端注册重新启动的所述客户端;其中,所述服务数据是由所述客户端与所述服务端建立会话连接之后,缓存至所述客户端本地的;
建立子模块,用于将重新启动后的所述客户端与所述服务端之间建立会话连接。
可选地,所述装置还包括:
第二缓存模块,用于将所述临时节点缓存在所述客户端本地;
所述装置还包括:
数据恢复模块,用于将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。
可选地,所述连通性探测模块包括:
创建子模块,用于创建ChkClientThread线程;
实例化子模块,在所述ChkClientThread线程中实例化探测器,以使所述探测器对所述服务端的IP和端口进行探测,并在所述服务端的IP和端口无异常时,向所述服务端请求连接;
所述装置还包括:
确定模块,用于当所述探测客户端与所述服务端连接成功时,确定所述ChkClientThread线程探测到所述服务端为可连通状态。
可选地,所述装置还包括:
开启模块,用于在所述ChkClientThread线程中设置探测频率,并开启探测开关;其中,所述探测器用于按照所述探测频率对所述服务端的IP和端口进行探测;
重开模块,用于重新开启所述探测开关。
本申请实施例第三方面提供一种可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如本申请第一方面所述的方法中的步骤。
本申请实施例第四方面提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现本申请第一方面所述的方法的步骤。
本申请实施例在微服务代理平台内部创建一个检测客户端与服务端之间连接有效性的线程任务ChkClientThread,再在客户端启动,并与服务端建立初次会话连接时,在服务端注册对应会话连接的临时节点,以根据临时节点的特性,通过监测临时节点是否存在,实时监测客户端与服务端的会话连接是否失效,在临时节点失效,并且ChkClientThread线程探测到服务端为可连通状态时,重建客户端与服务端的连接。本申请通过监测临时节点是否存在,能够及时发现客户端与服务端的会话连接失效,并结合ChkClientThread线程探测的探测结果,直接将客户端与服务端的重连,不再依靠Curator内部提供的重连策略,并在客户端与服务端成功重连后,并根据服务器预先存储的客户端的服务数据,将客户端在服务端重新注册,解决了现有技术下,Curator内部提供的重连策略在客户端与服务端的会话连接失效的情况下失效,导致客户端无法连接服务端的问题。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提出的客户端重连的步骤流程图;
图2是本申请实施例探测服务端的连通状态的步骤流程图;
图3是本申请实施例执行客户端重连的流程图;
图4是本申请实施例提出的客户端重连装置的功能模块示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
微服务架构(Micro Service Architecture)是近年来软件体系架构领域出现的一个新名词,它通过将功能分解到多个独立的服务,实现对解决方案或复杂系统的解耦,其根本理念是将大型、复杂且历时长久的应用在架构上设计为内聚的多个小服务,这些小服务能够随着时间的流逝而演化。
在微服务架构下,一个应该程序按照功能被分解为多个独立的服务,每个独立的服务拥有不同的服务提供方。服务提供方根据当前流量状态,动态部署多个节点共同执行其负责的服务,因此,服务调用方必须获得节点的地址信息,才能与对应的节点通信,以获得该节点负责的程序功能。
本申请中的微服务代理平台应用于应用系统的分布式部署中,为基于微服务架构运行的应用系统提供动态寻址服务。本申请在微服务代理平台中引入Zookeeper,部署了服务端,服务端获得服务提供方的节点地址信息,并提供给服务调用方,或者获得服务调用方的节点地址信息,并提供给服务提供方。节点地址信息是指:服务提供方或服务调用方用于执行其负责的应用系统的独立服务所启动的节点的地址信息。Zookeeper是一种分布式的,开放源码的分布式应用程序协调服务。
相应地,本申请在微服务代理平台中引入Curator,通过Curator在微服务代理平台中实例化客户端,并实现客户端与服务端的连接。Curator是一种开源的Zookeeper客户端框架,封装了很多Zookeeper底层代码,解决了很多Zookeeper客户端非常底层的细节开发工作。
客户端是Curator使用建造者模式进行对象的构造,其中非常重要的一个参数是RetryPolicy,RetryPolicy是表示客户端的超时重连策略,Curator内部提供的重连机制实现步骤如下:配置RetryPolicy重连参数,包括重连次数和重连间隔时间等等。实例化Curator客户端并注入RetryPolicy对象。当Curator客户端与Zookeeper服务端出现连接异常时,Curator会根据配置的RetryPolicy参数来尝试重连。在session有效期内,如果超过RetryPolicy配置的要求,则不再尝试重连,在session失效后,即使Zookeeper服务端能够提供连接,也不会再激活与服务端之间的session连接。
但现有技术下,Curator内部提供的重连机制只在session有效期内有效,当客户端与服务端之间由于断链(服务端无法收到心跳包)而超过指定的session时间(默认最大超时时间15秒)时,服务端就会把该客户端置为session expired(会话失效)状态,并且不允许该客户端的再次连接服务端,在这种情况下,客户端内部提供的原生重连策略就会失效,导致客户端无法重新连接上服务端,进而导致微服务代理平台无法向服务提供方或服务调用方提供正确的节点地址信息。
Curator内部的重连策略有以下方式:
1、重试指定的次数(ExponentialBackoffRetry),且每一次重试之间停顿的时间逐渐增加。基于该策略进行重连出现的问题是,如果Zookeeper已经恢复连通性,此时因尝试的次数较多而导致停顿时间较长时,无法及时恢复系统的可用性。
2、指定最大重试次数的重试策略(RetryNTimes),基于该策略进行重连出现的问题是,当达到最大重连次数而仍旧无法与Zookeeper服务端连接上会导致客户端会服务端之间断开连接。
3、仅重试一次(RetryOneTime),基于该策略进行重连出现的问题是,当重连时Zookeeper如果处在无法连接状态,会导致重连失败。
4、永远重试(RetryForever),基于该策略进行重连出现的问题是,客户端无限制与Zookeeper服务端重连时会占用较多的系统资源。
5、一直重试直到达到规定的时间(RetryUntilElapsed),基于该策略进行重连出现的问题是,系统运营人员无法确定何时Zookeeper服务端可连通状态。
鉴于上述问题,本申请实施例提出了客户端重连方法,能够实时监测服务端与客户端的session是否失效,并在session失效时,对客户端和服务端进行重连,并恢复服务数据,避免因session失效导致客户端与服务端无法连接的情况发生。
图1是本申请实施例提出的客户端重连的步骤流程图,应用于微服务代理平台,参考图1,客户端重连的方法如下:
步骤S11:将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
会话连接指的是会话控制session,当访问浏览器访问某服务器的网页时,服务器端开辟一块内存,这块内存就叫做session,并且该session与浏览器是关联在一起的,服务器相关数据只允许该session对应的浏览器访问。如果另外一个浏览器也需要访问服务器,需要在服务器再开启一个属于自己的session。
将客户端与服务端建立会话连接表示,客户端和服务端启动,并且客户端与服务端已建立连接。
申请人发现,临时节点(Agent)具有特性:在客户端与服务端的session失效时,会被删除。因此,本申请在客户端与服务端启动,并建立连接时,在服务端注册临时节点,根据服务端缓存的临时节点的特性,判断客户端与服务端的session是否在有效期内。
本申请另一种实施例提出了将客户端与服务端建立会话连接的方法,所述微服务代理平台在接收到应用终端发送的寻址请求时,实例化客户端;所述微服务代理平台连接所述客户端与所述应用终端,得到绑定应用终端的客户端。微服务代理平台通过Curator内部的连接策略实现绑定应用终端的客户端与服务端的连接。
应用终端可以指服务调用方或服务提供方,在应用终端是服务调用方时,服务端获取服务提供方节点地址信息;在应用终端是服务提供方时,服务端获取服务调用方的节点地址信息。实例化客户端可以指微服务代理平台运行Curator的组件,生成客户端。
微服务代理平台实例化客户端之前,会配置Curator的参数,以设置Curator内部提供的重连策略,包括:重连次数、重连时间间隔、session超时时间、连接超时时间等。以在临时节点存续期间,客户端使用Curator内部提供的重连策略,连接服务端。
微服务代理平台在接收到应用终端发送的寻址请求时,通过Curator在微服务代理平台中实例化客户端,并连接实例化得到的客户端和应用终端,使应用终端可以通过客户端与服务端进行通信。客户端在绑定应用终端后,能够获得应用终端的节点信息、注册信息等,并且其在服务端获取的数据,应用终端也能直接获得。
微服务代理平台将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点,包括:将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
与服务端连接的客户端是绑定应用终端的客户端,会话连接是绑定应用终端的客户端在服务端开辟的内存,因此通过该会话连接,应用终端可以访问服务端,获取服务端的数据。
步骤S12:创建ChkClientThread线程,以探测所述服务端的连通状态;ChkClientThread线程又称客户端连接探测线程任务。
步骤S13:当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
在临时节点存在时,会话连接在有效期内,使用Curator提供的重连策略,连接客户端与服务端,客户端继续使用之前的会话连接,能够在服务端获取相关节点地址信息。
本申请实施例在微服务代理平台内部创建一个检测客户端与服务端之间连接有效性的线程任务ChkClientThread,再在客户端启动,并与服务端建立初次会话连接时,在服务端注册对应会话连接的临时节点,以根据临时节点的特性,通过监测临时节点是否存在,实时监测客户端与服务端的会话连接是否失效,在临时节点失效,并且ChkClientThread线程探测到服务端为可连通状态时,重建客户端与服务端的连接。解决了现有技术下,Curator内部提供的重连策略在客户端与服务端的会话连接失效的情况下失效,导致客户端无法连接服务端的问题。
本申请另一种实施例提出了客户端与服务端重新建立连接后,客户端在服务端重新注册的方法。
客户端启动后,或者绑定了应用终端的客户端启动后,会先在服务端注册,服务端在通过客户端的注册后,在本地开辟出一块内存,该内存为会话连接(session),即客户端与服务端成功建立了会话连接,或绑定了应用终端的客户端与服务端成功建立了会话连接,因此,本申请实施例中,在客户端与服务端建立会话连接之前,微服务代理平台使客户端在所述服务端注册服务数据,服务端获得了客户端的服务数据,将服务数据缓存在服务端本地。
服务数据包括客户端的注册信息、客户端标识以及用于运行寻址通信的Inst节点。对于绑定了应用终端的客户端,服务数据还包括应用终端的相关数据。
服务端内部还设置有Watcher监听器,通过Watcher提供的监听器机制,可以基于Zookeeper服务端实现分布式锁、集群管理等功能。
微服务代理平台在临时节点不存在,并且ChkClientThread线程探测到所述服务端为可连通状态时,重建客户端与服务端的连接还包括在服务端重新注册客户端。
在服务端重新注册客户端的步骤包括:重新启动所述客户端;从所述客户端的本地读取服务数据,在所述服务端注册重新启动的所述客户端;其中,所述服务数据是由所述客户端与所述服务端建立会话连接之后,缓存至所述客户端本地的;将重新启动后的所述客户端与所述服务端之间建立会话连接。
客户端在绑定应用终端时,能够将应用终端的服务数据缓存在本地,以在微服务代理平台重启客户端,重建客户端与服务端的连接时,能够直接从客户端本地获取客户端和应用终端的服务数据,实现客户端在服务端的注册。
客户端与应用终端绑定时,能够调用应用终端获取地址的组件和应用终端的参数,客户端在服务端初次注册时,将其本身的注册信息、客户端标识、与应用终端的绑定信息、用于运行寻址通信的Inst节点、应用终端获取地址的组件以及应用终端的参数缓存至服务端,以将服务数据缓存至客户端本地地。
在会话连接失效后,客户端无法再与服务端通信,现有技术下,只有重新启动新的客户端,或者进一步地还需要再次绑定客户端与应用终端,新建客户端或绑定应用终端的客户端与服务端的连接,并重新在服务端注册客户端,或重新在服务端注册绑定应用终端的客户端,才能实现客户端与服务端的会话连接,造成时间和计算资源的浪费。
本申请实施例在客户端在服务端初次连接时,将服务数据缓存在客户端,使用本申请实施例提供的重连方法,检测到临时节点不存在,并且服务端为可连通状态时,重建客户端与服务端的连接,实现在客户端与服务端的会话连接失效后的短时间内,及时重建客户端与服务端的连接,并且使用缓存的服务数据直接在服务端重新注册客户端,避免了重新进行实例化才能得到客户端,同时避免了将重新实例化得到的客户端在服务端进行注册等一系列步骤带来的时间和计算资源的浪费。
在本申请的另一种实施例中,微服务代理平台在临时节点不存在,并且ChkClientThread线程探测到所述服务端为可连通状态时,重建客户端与服务端的连接还包括在服务端重新注册临时节点,以在客户端和服务端的下一次通信过程中,能够实时监测客户端和服务端的会话连接的状态。
在所述微服务代理平台在所述服务端注册对应所述会话连接的临时节点之后,所述方法还包括:将所述临时节点缓存在所述客户端本地;在重建所述客户端与所述服务端的连接之后,所述方法还包括:将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。
将所述临时节点缓存在所述客户端本地是指在服务端的Agent下注册临时节点,在将该临时节点缓存至客户端本地的其他内存中。
本申请另一种实施例提出了微服务代理平台利用ChkClientThread线程探测服务端的连通状态的具体方法。参考图2,图2是本申请实施例探测连通状态的步骤流程图。
步骤S12-1:创建ChkClientThread线程;
步骤S12-2:在所述ChkClientThread线程中实例化探测器,以使所述探测器对所述服务端的IP和端口进行探测,并在所述服务端的IP和端口无异常时,向所述服务端请求连接;
若探测器向服务端请求连接后,服务端响应探测器的连接请求,可以确定客户端与服务端连接成功。
步骤S12-3:当所述探测客户端与所述服务端连接成功时,确定所述ChkClientThread线程探测到所述服务端为可连通状态。
探测器是ChkClientThread线程运行相关组件得到的虚拟探测器,能够实时监测服务端是否可连通。如果服务端不可连通,则不对客户端进行重连,避免系统资源的浪费。
创建ChkClientThread线程之后,微服务代理平台还在所述ChkClientThread线程中设置探测频率,并开启探测开关;其中,所述探测器用于按照所述探测频率对所述服务端的IP和端口进行探测;重新开启所述探测开关。通过开启探测开关,确定ChkClientThread线程处于工作状态,能够实时监测服务端的连通状态。在探测开关关闭的状态下,ChkClientThread线程不会探测服务器的连通状态,微服务代理平台一直使用Curator内部提供的重连策略,尝试连接客户端与服务端。
在重建所述客户端与所述服务端的连接后,所述方法还包括:重新开启所述探测开关。为了在客户端和服务端的下一次通信过程中,能够实时监测服务端的连通状态,微服务代理平台在临时节点不存在,并且ChkClientThread线程探测到服务端为可连通状态时,重建了客户端与所述服务端的连接后,还会重新开启探测开关,以使ChkClientThread线程处于工作状态。
在设置了探测频率后,所述微服务代理平台按照所述探测频率,以所述探测客户端对所述服务端的IP和端口进行探测。
按照所述探测频率,以探测客户端对所述服务端的IP和端口进行探测是指,微服务代理平台根据探测频率,不间断的对服务端的IP和端口进行探测。在本申请一种示例中,探测频率为1/0.02秒,微服务代理平台每隔2秒对对服务端的IP和端口进行探测。
在探测客户端可以连接上服务端时,服务端为可连接状态。在服务端的IP和端口异常时,或者服务端的IP和端口无异常,但探测客户端无法连接上服务端,服务端为不可连接状态。
图3是本申请实施例执行客户端重连的流程图,参考图3。微服务代理平台中服务端为集群部署,微服务代理平台包括多个服务端。数据节点是指客户端注册到服务端后,在服务端注册列表中存储的客户端临时节点(Agent节点)和用于执行寻址服务的Inst节点。
首先,客户端启动:微服务代理平台实例化客户端,客户端连接应用终端,绑定应用终端的客户端在服务端注册服务数据,将其节点数据缓存在客户端,完成与服务端的会话连接。
在客户端与服务端进行会话连接后,微服务代理平台在服务端注册临时节点。
同时,微服务代理平台创建ChkClientThread线程,在ChkClientThread线程内加载配置参数,设置探测开关、探测频率等。开启探测开关,在ChkClientThread线程实例化探测客户端。
微服务代理平台使用探测客户端探测服务端的连通状态,在服务端为可连通状态时,并且服务端的临时节点不存在时,重连客户端与服务端,并在客户端与服务端重连后,根据客户端缓存的节点数据和注册服务数据,重新将客户端注册到服务端。
在重新将客户端注册到服务端后,微服务代理平台还会将临时节点和客户端的相关inst节点数据以及Watcher监听器重新注入到服务端。
基于同一发明构思,本申请实施例提供一种客户端重连装置。参考图4,图4是本申请实施例提出的客户端重连装置的功能模块示意图。该装置包括:
临时节点注入模块41,用于将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
具体地,临时节点注入模块在客户端启动时注册一个临时节点至服务端,根据临时节点的特性,该临时节点在客户端与服务端断开连接时会被删除,利用该临时节点表示客户端和服务端之间session是否在有效期内。
连通性探测模块42,用于用于创建ChkClientThread线程,以探测所述服务端的连通状态;
具体地,连通性探测模块根据服务端发布的Ip和端口,利用telnet方法对该Ip和Port进行探测,如果无异常则尝试连接服务端,告知ChkClientThread线程该客户端为可连通状态。
重连模块43,用于当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
具体地,重连模块在服务端为可连通状态时,重连客户端和服务端。
数据恢复模块44,用于将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。还用于将客户端的服务数据重新注入服务端。
具体地,数据恢复模块在客户端重连服务端之后,将微服务代理平台中的相关节点数据和Watcher监听器重新注入服务端。
可选地,所述装置还包括:
实例化模块,用于在接收到应用终端发送的寻址请求时,实例化客户端;
绑定模块,用于将所述客户端与所述应用终端建立绑定关系;
所述临时节点注入模块包括:
第一注册子模块,用于将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
可选地,所述重连模块包括:
启动子模块,用于重新启动所述客户端;
第二注册子模块,用于从所述客户端的本地读取服务数据,在所述服务端注册重新启动的所述客户端;其中,所述服务数据是由所述客户端与所述服务端建立会话连接之后,缓存至所述客户端本地的;
建立子模块,用于将重新启动后的所述客户端与所述服务端之间建立会话连接。
可选地,所述装置还包括:
第二缓存模块,用于将所述临时节点缓存在所述客户端本地;
所述装置还包括:
数据恢复模块,用于将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。
可选地,所述连通性探测模块包括:
创建子模块,用于创建ChkClientThread线程;
实例化子模块,在所述ChkClientThread线程中实例化探测器,以使所述探测器对所述服务端的IP和端口进行探测,并在所述服务端的IP和端口无异常时,向所述服务端请求连接;
所述装置还包括:
确定模块,用于当所述探测客户端与所述服务端连接成功时,确定所述ChkClientThread线程探测到所述服务端为可连通状态。
可选地,所述装置还包括:
开启模块,用于在所述ChkClientThread线程中设置探测频率,并开启探测开关;其中,所述探测器用于按照所述探测频率对所述服务端的IP和端口进行探测;
重开模块,用于重新开启所述探测开关。
基于同一发明构思,本申请另一实施例提供一种可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本申请上述任一实施例所述的客户端重连方法中的步骤。
基于同一发明构思,本申请另一实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本申请上述任一实施例所述的客户端重连方法中的步骤。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进或说明的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请实施例是参照根据本申请实施例的方法、装置、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的一种客户端重连方法、装置、设备及存储介质,进行了详细介绍,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (10)

1.一种客户端重连方法,其特征在于,应用于微服务代理平台,所述方法包括:
将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
创建ChkClientThread线程,以探测所述服务端的连通状态;
当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在接收到应用终端发送的寻址请求时,实例化客户端;将所述客户端与所述应用终端建立绑定关系;
将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点,包括:
将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
3.根据权利要求1或2所述的方法,其特征在于,重建所述客户端与所述服务端的连接,包括:
重新启动所述客户端;
从所述客户端的本地读取服务数据,在所述服务端注册重新启动的所述客户端;其中,所述服务数据是由所述客户端与所述服务端建立会话连接之后,缓存至所述客户端本地的;
将重新启动后的所述客户端与所述服务端之间建立会话连接。
4.根据权利要求1所述的方法,其特征在于,当在所述服务端注册对应所述会话连接的临时节点之后,所述方法还包括:
将所述临时节点缓存在所述客户端本地;
在重建所述客户端与所述服务端的连接之后,所述方法还包括:
将缓存在所述客户端本地的所述临时节点重新注册至所述服务端。
5.根据权利要求1所述的方法,其特征在于,创建ChkClientThread线程,以探测所述服务端的连通状态,包括:
创建ChkClientThread线程;
在所述ChkClientThread线程中实例化探测器,以使所述探测器对所述服务端的IP和端口进行探测,并在所述服务端的IP和端口无异常时,向所述服务端请求连接;
所述方法还包括:
当所述探测客户端与所述服务端连接成功时,确定所述ChkClientThread线程探测到所述服务端为可连通状态。
6.根据权利要求5所述的方法,其特征在于,在创建ChkClientThread线程之后,所述方法还包括:
在所述ChkClientThread线程中设置探测频率,并开启探测开关;其中,所述探测器用于按照所述探测频率对所述服务端的IP和端口进行探测;
在重建所述客户端与所述服务端的连接后,所述方法还包括:
重新开启所述探测开关。
7.一种客户端重连装置,其特征在于,所述装置包括:
临时节点注入模块,用于将客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点;
连通性探测模块,用于创建ChkClientThread线程,以探测所述服务端的连通状态;
重连模块,用于当所述临时节点不存在且所述ChkClientThread线程探测到所述服务端为可连通状态时,重建所述客户端与所述服务端的连接。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
实例化模块,用于在接收到应用终端发送的寻址请求时,实例化客户端;
绑定模块,用于将所述客户端与所述应用终端建立绑定关系;
所述临时节点注入模块包括:
第一注册子模块,用于将建立有所述绑定关系的客户端与服务端建立会话连接,并在所述服务端注册对应所述会话连接的临时节点。
9.一种可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6任一所述的方法中的步骤。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行时实现如权利要求1-6任一所述的方法的步骤。
CN202011623616.6A 2020-12-29 2020-12-29 一种客户端重连方法、装置、设备及存储介质 Active CN112751934B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011623616.6A CN112751934B (zh) 2020-12-29 2020-12-29 一种客户端重连方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011623616.6A CN112751934B (zh) 2020-12-29 2020-12-29 一种客户端重连方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN112751934A true CN112751934A (zh) 2021-05-04
CN112751934B CN112751934B (zh) 2022-11-29

Family

ID=75650400

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011623616.6A Active CN112751934B (zh) 2020-12-29 2020-12-29 一种客户端重连方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN112751934B (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103383689A (zh) * 2012-05-03 2013-11-06 阿里巴巴集团控股有限公司 一种服务进程故障检测方法、装置及服务节点
US20180157561A1 (en) * 2016-12-05 2018-06-07 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
CN112134758A (zh) * 2020-09-22 2020-12-25 上海茂声智能科技有限公司 弱网环境监测和通信会话重连的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103383689A (zh) * 2012-05-03 2013-11-06 阿里巴巴集团控股有限公司 一种服务进程故障检测方法、装置及服务节点
US20180157561A1 (en) * 2016-12-05 2018-06-07 Nutanix, Inc. Disaster recovery for distributed file servers, including metadata fixers
CN112134758A (zh) * 2020-09-22 2020-12-25 上海茂声智能科技有限公司 弱网环境监测和通信会话重连的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张鹏飞: "分布式服务框架的设计与实现", 《现代计算机》 *

Also Published As

Publication number Publication date
CN112751934B (zh) 2022-11-29

Similar Documents

Publication Publication Date Title
CN1905472B (zh) 一种ims网络可靠性实现方法
CN102708018B (zh) 一种异常处理方法及系统、代理设备与控制装置
JP7326443B2 (ja) Nf間のダイレクトシグナリングを使用したnfサービスコンシューマー再起動検出
EP1468371B1 (en) Network configuration management
CN108924210A (zh) 业务请求处理方法、装置、服务器及存储介质
US20100077072A1 (en) Test Driven Deployment and Monitoring of Heterogeneous Network Systems
EP3472971B1 (en) Technique for resolving a link failure
Inouye et al. Dynamic network reconfiguration support for mobile computers
CN105589712B (zh) Bmc模块更新方法以及装置
JP2004280738A (ja) 代理応答装置
US20080140846A1 (en) Virtualization and high availability of network connections
WO2017162054A1 (zh) 一种虚拟化环境下自动部署应用程序的方法及装置
KR101139836B1 (ko) 웹 서비스 기반 관리 서비스를 발견하기 위한 2단계 방식의방법 및 시스템
CN104503861A (zh) 一种异常处理方法及系统、代理设备与控制装置
CN107872326B (zh) 一种释放会话资源的方法、装置和系统
CN110995481A (zh) 配置方法、服务器及计算机可读存储介质
CN112751934B (zh) 一种客户端重连方法、装置、设备及存储介质
JP6421516B2 (ja) サーバ装置、冗長構成サーバシステム、情報引継プログラム及び情報引継方法
Raza et al. LTE NFV rollback recovery
CN106844073B (zh) 一种诊断应用的方法、诊断客户端及系统
CN107196817B (zh) Ping线程监测方法、网络服务状态监测方法及客户端
KR101207219B1 (ko) 데이터 분산 서비스 네트워크 과부하 방지 방법
CN113094074A (zh) 一种服务集群的更新方法及装置
JP2006285453A (ja) 情報処理装置、情報処理方法、および情報処理プログラム
EP4127930A1 (en) Methods and apparatuses for enhanced 5gc restoration when a network function (nf) set is deployed in the network

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
GR01 Patent grant
GR01 Patent grant