实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其可读存储介质与流程

摘要: 本发明涉及金融交易系统领域,尤其涉及客户端通信,具体是指一种实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其计算机可读存储介质。背景技术:1...
实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其可读存储介质与流程

本发明涉及金融交易系统领域,尤其涉及客户端通信,具体是指一种实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其计算机可读存储介质。

背景技术:

1、现有客户端侧故障切换方案主要分为两类:一是加权地址列表故障切换方案,通过配置加权地址列表和熔断器模式进行故障检测与切换,但所有地址共用同一等级,无法实现地址的分层管理,且熔断器依赖业务请求失败统计,低流量时段故障发现延迟大;二是客户端侧负载均衡方案,支持按序尝试和轮询等内置策略,但地址来源单一,不支持多配置源地址池叠加,且缺乏组合故障检测机制。综上,现有方案存在地址管理单一化、故障检测维度单一、切换策略僵化且缺乏先验质量数据等问题。

技术实现思路

1、本发明的目的是克服了上述现有技术的缺点,提供了一种满足灵活性高、检测准确性高、适用范围较为广泛的实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其计算机可读存储介质。

2、为了实现上述目的,本发明的实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其计算机可读存储介质如下:

3、该实现多优先级地址池与组合探测的客户端故障切换的方法,其主要特点是,所述的方法包括以下步骤:

4、(1)从全局配置文件解析普通地址列表并构建普通地址池,从本地配置文件的优先级节解析优先地址列表,并将所述优先地址列表插入到所述普通地址池的头部,以形成接入顺序先于所述普通地址池的优先地址池,以及从本地配置文件的强制节解析强制地址列表以形成强制地址池;其中,强制地址、优先地址和普通地址的接入优先级依次降低;

5、(2)当所述强制地址池中的强制地址处于启用状态时,直接将所述强制地址作为连接目标建立安全连接,并且跳过对所述普通地址池和所述优先地址池的连接尝试,同时跳过后续的组合检测步骤和故障切换;当所述强制地址池中的强制地址未处于启用状态时,按照优先地址、普通地址的优先级顺序,从所述优先地址池和所述普通地址池中依次尝试建立安全连接,连接成功后启动主循环线程和心跳检测线程;

6、(3)在所述主循环线程运行期间,通过所述心跳检测线程监控心跳包响应状态,并通过所述主循环线程监控输入输出操作返回结果;设置累加计数器,当心跳包未响应时,所述累加计数器增加第一数值;当主循环输入输出操作返回失败时,所述累加计数器增加第二数值,所述第二数值大于所述第一数值;当心跳包正常响应时,将所述累加计数器清零;当所述累加计数器的数值达到预设阈值时,触发故障切换;

7、(4)执行第一切换步骤,在触发故障切换时,终止当前的主循环线程,以当前连接的地址的下一个地址为起点,以固定间隔遍历所述优先地址池和所述普通地址池中的所有地址,依次对每个地址尝试重连,并在每次重连失败时累加连续连接失败次数,在每轮尝试前检查停止标志;

8、(5)执行第二切换步骤,在所述第一切换步骤中遍历全部地址均失败时,进入无间隔自旋重试模式继续执行重连,在每轮重试前检查所述停止标志,以允许外部请求中断。

9、较佳地,所述的步骤(1)中构建普通地址池,具体为:通过带随机种子的优先队列对所述普通地址列表进行乱序排列。

10、较佳地,所述的步骤(3)还包括以下步骤:

11、所述心跳检测线程每个心跳周期检查服务端是否已响应心跳包,若未响应,则将所述累加计数器增加1;所述主循环线程在发送操作或接收操作返回失败时置位重连标识,并将所述累加计数器增加2;所述预设阈值为2。

12、较佳地,所述的步骤(4)的连续连接失败次数通过连续连接失败计数器记录,通过所述连续连接失败计数器统计故障切换过程中连续失败的连接尝试次数,并在重连成功后被重置。

13、较佳地,所述的步骤(4)中以固定间隔遍历所述优先地址池和所述普通地址池中的所有地址,依次对每个地址尝试重连,具体包括以下步骤:

14、对每个地址执行安全连接尝试,若尝试失败则增加所述连续连接失败次数并等待300毫秒,然后继续对下一个地址进行尝试;若尝试成功则启动新的主循环线程并重置所述连续连接失败次数和所述累加计数器。

15、较佳地,所述的步骤(5)具体包括以下步骤:

16、循环执行重连操作,在每轮重试前检查所述停止标志,并在接收到外部停止请求时中断所述自旋重试;重连成功后,启动新的主循环线程并返回正常运行流程。

17、较佳地,所述的方法还包括测速步骤,具体包括以下步骤:

18、创建独立于主连接的临时安全连接实例,使用与主连接相同的证书配置,依次连接待测地址列表中的各个目标地址;独立测量到各个目标地址的完整建连延迟,并通过回调接口逐条上报测速结果,所述测速步骤不阻塞当前的主连接。

19、较佳地,所述的安全连接为安全套接字层连接或传输层安全协议连接,支持国密sm2证书与rsa证书的自动识别;所述安全连接的传输支持基于http协议、socks4协议或socks5协议的代理隧道传输,以及lz4协议级压缩;所述组合检测步骤、所述第一切换步骤和所述第二切换步骤中的故障切换逻辑与传输层的加密协议类型、代理模式和压缩策略解耦。

20、较佳地,所述的步骤(2)还包括以下步骤:

21、记录每次安全连接的连接耗时,并将所述连接耗时写入日志文件;所述连接耗时为从高精度时钟开始计时到接收到服务端首条消息的时间差。

22、较佳地,所述的主循环线程持续从消息队列中取出请求并发送至服务端,以及接收服务端返回的响应消息和推送消息。

23、该实现多优先级地址池与组合探测的客户端故障切换的系统,其主要特点是,所述的系统包括:

24、配置层,用于通过全局配置文件的各地址节提供基础服务地址列表,构成普通地址池的数据源;通过本地配置文件的优先级节提供优先地址池,通过本地配置文件的强制节提供强制地址池;

25、地址池管理层,与所述配置层连接,包含普通地址池、优先地址池和强制地址池;

26、组合故障检测模块,与所述地址池管理层连接,通过心跳检测线程监控心跳包响应状态,并通过所述主循环线程监控输入输出操作返回结果,通过连续连接失败计数器记录故障切换过程中连续失败的连接尝试次数;

27、故障切换执行层,与所述组合故障检测层连接,用于在触发故障切换时,终止当前的主循环线程,以当前连接的地址的下一个地址为起点,以固定间隔遍历所述优先地址池和所述普通地址池中的所有地址,依次对每个地址尝试重连,并在每次重连失败时累加连续连接失败次数,在每轮尝试前检查停止标志;并在遍历全部地址均失败时,进入无间隔自旋重试模式继续执行重连,在每轮重试前检查所述停止标志。

28、较佳地,所述的系统还包括测速模块,用于创建独立于主连接的临时安全连接实例,使用与主连接相同的证书配置,依次连接待测地址列表中的各个目标地址,独立测量到各个目标地址的完整建连延迟,并通过回调接口逐条上报测速结果。

29、较佳地,所述的系统还包括传输层,用于提供安全套接字层或传输层安全协议的加密通信,支持国密sm2证书和rsa证书的自动识别、基于http协议、socks4协议或socks5协议的代理隧道传输以及lz4协议级压缩,所述故障切换执行层与所述传输层解耦。

30、该实现多优先级地址池与组合探测的客户端故障切换的装置,其主要特点是,所述的装置包括:

31、处理器,被配置成执行计算机可执行指令;

32、存储器,存储一个或多个计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述的实现多优先级地址池与组合探测的客户端故障切换的方法的各个步骤。

33、该实现多优先级地址池与组合探测的客户端故障切换的处理器,其主要特点是,所述的处理器被配置成执行计算机可执行指令,所述的计算机可执行指令被所述的处理器执行时,实现上述的实现多优先级地址池与组合探测的客户端故障切换的方法的各个步骤。

34、该计算机可读存储介质,其主要特点是,其上存储有计算机程序,所述的计算机程序可被处理器执行以实现上述的实现多优先级地址池与组合探测的客户端故障切换的方法的各个步骤。

35、采用了本发明的实现多优先级地址池与组合探测的客户端故障切换的方法、装置、处理器及其计算机可读存储介质,地址管理灵活性高,三个独立地址池来自不同配置源,通过本地配置的强制地址实现紧急流量调度,通过优先地址实现分服务端地址优先接入,无需修改全局配置。本发明的故障检测准确性高,心跳超时+i/o循环异常+连接失败计数的三路组合检测,覆盖了服务进程挂死但tcp连接未断开(心跳不回复)、链路半打开(i/o操作失败)和目标地址不可达(连接超时)三种故障模式。本发明的切换策略完备,双阶段执行机制兼顾了快速恢复和持续可用。phase 1在300ms量级完成单轮重试,适应瞬时抖动;phase 2持续自旋直至恢复,适应长时间故障场景,同时停止标志可被外部随时中断。本发明的先验质量数据辅助决策,独立ssl测速通道可在不影响主连接的情况下获知各备用地址的建连延迟,辅助运维选择最优切换目标。本发明的传输层透明,故障切换逻辑与ssl协议类型(gmssl/标准tls)、代理模式(http/socks4/socks5)、压缩策略无关,一次实现适用于多种网络环境。