应用于移动端的自适应负载均衡和保证高可用的方法与流程

文档序号:26003887发布日期:2021-07-23 21:21阅读:152来源:国知局
应用于移动端的自适应负载均衡和保证高可用的方法与流程

本发明实施例涉及互联网技术领域,具体涉及一种应用于移动端的自适应负载均衡和保证高可用的方法。



背景技术:

随着移动互联网时代的到来,移动设备已经成为人们接入互联网的主要媒介。而承载移动端访问请求的服务器由于受限于单个物理单元的处理能力,往往需要通过服务器集群技术将对单一服务器的负载均摊到多个服务器上。通常情况下,移动客户端需要使用域名来进行负载均衡和保证服务的高可用,将域名指向后端服务集群中的多台机器的ip地址,通过域名的dns解析到后端某一台服务器对外提供服务。简单通过域名解析的方案,有以下缺陷:

1、使用dns解析的轮询算法,往往导致后端服务负载不均衡。由于后端服务器硬件配置存在差异、运行各种计算任务消耗不同,简单的将请求平均分散到不同服务器往往导致某些服务器负载过高,而某些服务器负载相对空闲,无法做到精确的负载均衡。而当后端服务器宕机时,域名解析的过程无法及时将故障机器ip移除,造成短时间内部分请求无法正确响应,影响服务的可用性。

2、对于移动客户端,通过域名实现负载均衡的方案无法应对复杂的网络环境和异常情况。由于移动设备的网络环境复杂多变,客户端通过网络连接到服务器的成功率受限于多种因素,例如:客户端网络经过的路由器是否仅支持ipv6网络、路由器是否进行了一些安全配置限制tcp、udp等某些协议的数据包;客户端本地的dns缓存异常、客户端网络所在的运营商级别dns解析服务器故障、某一区域的dns解析服务器故障;客户端进入网络信号弱的地区等。当出现这些异常情况时,单一的域名解析方案可能会连接失败,并且没有其他备选方案进行异常处理,造成服务不可用,影响用户体验。

3、传统的负载均衡方式无法实现负载的动态转移,当客户端连接的服务器负载升高,无法将一部分客户端转移到其他服务器上,只能等待客户端主动断开。同时,客户端缺少主动的异常检测机制,当所连接的服务器链路发生异常,如丢包过多、频繁超时时,无法主动进行故障转移。

4、传统的负载均衡方式,只能做到事后转移,无法提前预判用户可能存在异常的风险,以及无法统计整个区域故障对用户的影响,做到提前介入,将异常的影响降至最低。



技术实现要素:

为此,本发明实施例提供一种应用于移动端的自适应负载均衡和保证高可用的方法,以解决现有的移动端通过域名解析到后端服务器对外提供服务的方案存在的负载不均衡,影响服务的可用性,无法应对复杂的网络环境和异常情况,无法实现负载的动态转移,无法主动进行故障转移,无法提前预判用户可能存在异常的风险等问题。

为了实现上述目的,本发明实施例提供如下技术方案:

根据本发明实施例的第一方面,提出了一种应用于移动端的自适应负载均衡和保证高可用的方法,所述方法包括:在移动客户端运行有连接建立模块,在服务端运行有资源调度模块;

所述连接建立模块用于向资源调度模块请求获取可用服务器信息以建立连接,当连接不成功时,使用多种备选方案进行并行重试,当某一方案连接成功时,将成功状态返回给客户端业务逻辑;动态探测已建立的连接状态,当出现异常时主动转移连接;当出现某台服务器负载过高时,接收资源调度模块推送的负载转移信令进行负载转移;

所述资源调度模块用于定期收集服务器集群内各业务服务器的状态信息并在集群内同步,计算各业务服务器的状态得分,接收并响应客户端的请求将可用服务器信息返回给连接建立模块;当出现某台服务器负载过高时,根据算法筛选出需要转移的客户端,并向客户端推送负载转移信令通知部分客户端将连接转移至其他服务器;动态计算某一区域用户的异常状态情况,当用户所在区域异常比例较高时对来自该区域的用户实现自动转移;基于机器学习策略对可能出现异常的用户进行预测,将用户提前转移至可正常服务的服务器。

进一步地,所述资源调度模块定期收集服务器集群内各业务服务器的状态信息并在集群内同步,计算各业务服务器的状态得分,具体包括:

收集业务服务器定时汇报的状态信息并存储在内存中,所述状态信息包括机器ipv4地址、ipv6地址、对外域名、cpu使用情况、内存占用情况、网卡流量使用情况以及磁盘io使用情况;

根据所收集到的状态信息,计算出资源得分,并将得分结果存储在内存中,得分计算公式为:得分=cpu使用率*第一权重系数+内存使用率*第二权重系数+网卡流量*第三权重系数+磁盘io*第四权重系数;

当有业务服务器宕机时,资源调度模块根据连接断开事件及时感知,并清理内存中对应业务服务器的状态信息;

定期检查内存中的业务服务器状态信息,当某台业务服务器超过配置的时间阈值没有进行状态汇报,则资源调度模块从内存中清理掉该台服务器的状态信息;

定期将内存中的全量状态信息同步给集群中的其他资源调度模块。

进一步地,所述资源调度模块接收并响应客户端的请求将可用服务器信息返回给连接建立模块,具体包括:

根据内存中各业务服务器状态信息得分,获得得分最小的服务器;

从内存中查询到得分最小的服务器的ipv4地址、ipv6地址、对外域名信息,并将以上信息写入应答包中,将所述应答包返回给客户端。

进一步地,所述连接建立模块向资源调度模块请求获取可用服务器信息以建立连接,当连接不成功时,使用多种备选方案进行并行重试,当某一方案连接成功时,将成功状态返回给客户端业务逻辑,具体包括:

向服务端的资源调度模块发送请求,并接收资源调度模块返回的可用服务器信息应答包并解析其中内容;

使用应答包中的ipv4地址进行连接,当连接成功时,结束全部流程,通知客户端连接建立成功并将连接句柄返回给客户端业务逻辑;

当连接建立失败时,启动三个异步线程,针对应答包中的ipv4地址、ipv6地址和对外域名,分别在异步线程中尝试建立连接,当任何一个线程中首先建立连接成功时,则结束其他异步线程的工作,通知客户端连接建立成功并将连接句柄返回给客户端业务逻辑;

当全部异步连接线程都连接失败时,重复执行以上异步线程步骤,直到满足配置的次数阈值后仍未成功建立连接,则终止尝试,通知客户端连接建立失败。

进一步地,所述资源调度模块在当出现某台服务器负载过高时,根据算法筛选出需要转移的客户端,向客户端推送负载转移信令通知部分客户端将连接转移至其他服务器,具体包括:

遍历内存中的各业务服务器资源得分,将资源得分大于配置阈值的服务器加入待处理队列;

遍历待处理队列,获取待处理队列中每台服务器上的客户端连接信息,计算每个连接的加权得分值,得分计算公式为:得分=登录时长加权值+连接活跃度*第五权重系数+连接健康得分*第六权重系数,其中,连接活跃度通过该连接最近n次发包时间进行加权计算均值得出,连接健康得分根据该连接最近n次发生丢包、超时等错误的次数计算得出;

将上述加权得分值最高的前m个连接,加入待转移队列;

遍历待转移队列中的所有连接,将负载转移信令通过双工的tcp连接推送至客户端转移负载。

进一步地,所述连接建立模块在当出现异常时主动转移连接以及当出现某台服务器负载过高时,接收资源调度模块推送的负载转移信令进行负载转移,具体包括:

当接收到服务端推送的负载转移信令时,将负载转移状态加入待处理队列;

定期计算客户端自身与服务器连接的健康得分,健康得分根据该连接最近n次发生丢包、超时等错误的次数加权计算得出,当健康得分超过配置阈值时,将异常转移状态加入待处理队列;

当待处理队列中存在负载转移状态或异常转移状态时,则重新向资源调度模块请求获取可用服务器信息以建立连接。

进一步地,所述资源调度模块动态计算某一区域用户的异常状态情况,当用户所在区域异常比例较高时对来自该区域的用户实现自动转移,具体包括:

当出现连接异常断开时,收集用户相关的区域信息,发送至区域统计子模块;

区域统计子模块定期对所存储的区域异常信息进行计算分类,得出异常出现概率较高的区域用户分布比例;

将异常用户比例较高的区域信息同步至资源调度模块;

当新用户请求连接后端服务器时,资源调度模块通过对用户区域进行判断,当用户所在区域异常比例较高时,自动将该用户连接至其他可用区,实现区域用户的转移。

进一步地,所述资源调度模块基于机器学习策略对可能出现异常的用户进行预测,将用户提前转移至可正常服务的服务器,具体包括:

将服务端收集到的正常行为数据和异常行为数据同步给离线计算子模块,正常行为数据和异常行为数据包括:用户区域、用户网络运营商信息、用户最近n次错误原因及时间、用户最近n次连接断开时间、用户重新连接间隔、用户最近n次请求的延迟;

离线计算子模块定期从正常行为数据和异常行为数据提取样本特征,将特征归一化后得到一组训练数据,构建预测模型,结合所述训练数据并使用梯度下降法计算出当损失函数最小时的模型参数;

将计算所生成的预测模型及参数定期同步至资源调度模块;

资源调度模块定期对新连接和已有连接使用预测模型进行计算,将计算得出的异常高风险连接标记;

资源调度模块定期将高风险连接转移至服务的其他可用区,完成异常的提前转移。

根据本发明实施例的第二方面,提出了一种计算机可读存储介质,所述计算机可读存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于被处理器执行如上任一项所述的应用于移动端的自适应负载均衡和保证高可用的方法。

本发明实施例具有如下优点:

本发明实施例提出的一种应用于移动端的自适应负载均衡和保证高可用的方法,在移动客户端运行有连接建立模块,在服务端运行有资源调度模块。资源调度模块可以根据机器的实际运行情况、机器硬件配置情况等动态推算出机器的负载水平,相较于传统的域名解析方式,使服务器集群的负载分布更加平均,服务器资源得到充分利用,节省了机器成本,降低了机器负载过高造成宕机的几率;同时搭配使用的客户端连接建立模块,当连接建立失败时,通过并行的尝试多种备选方案,提高连接成功率,减少重试等待延迟,提高了用户体验,尤其在面对移动端复杂的网络情况,如进入地铁电梯等信号不稳定区域、使用公共wifi网络不稳定等场景,能显著提高连接建立成功几率,减少重试等待延迟,提高了用户体验和服务的可用性;服务端和客户端配合,当服务器负载升高或客户端网络连接出现异常时,根据算法动态进行负载转移和连接重连,既保护了服务器,也提高了服务的可用性;对异常区域的动态计算和通过机器学习方式实现的异常状态预判,做到了事前干预,提前预判可能出现异常的用户,并引导其转移至其他可用区,大大降低了异常出现的概率。

附图说明

为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引伸获得其它的实施附图。

图1为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中系统架构示意图;

图2为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中资源调度模块收集服务器状态信息流程示意图;

图3为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中资源调度模块接收并响应客户端的请求流程示意图;

图4为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中连接建立模块建立连接过程示意图;

图5为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中资源调度模块执行负载转移流程示意图;

图6为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中连接建立模块执行负载转移和异常转移流程示意图;

图7为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中资源调度模块进行区域故障转移流程示意图;

图8为本发明实施例1提供的应用于移动端的自适应负载均衡和保证高可用的方法中资源调度模块进行异常预测流程示意图。

具体实施方式

以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例1提出了一种应用于移动端的自适应负载均衡和保证高可用的方法,具体的,如图1所示,该方法包括:

在移动客户端运行有连接建立模块,在服务端运行有资源调度模块;

连接建立模块用于向资源调度模块请求获取可用服务器信息以建立连接,当连接不成功时,使用多种备选方案进行并行重试,当某一方案连接成功时,将成功状态返回给客户端业务逻辑;动态探测已建立的连接状态,当出现异常时主动转移连接;当出现某台服务器负载过高时,接收资源调度模块推送的负载转移信令进行负载转移;

资源调度模块用于定期收集服务器集群内各业务服务器的状态信息并在集群内同步,计算各业务服务器的状态得分,接收并响应客户端的请求将可用服务器信息返回给连接建立模块;当出现某台服务器负载过高时,根据算法筛选出需要转移的客户端,并向客户端推送负载转移信令通知部分客户端将连接转移至其他服务器;动态计算某一区域用户的异常状态情况,当用户所在区域异常比例较高时对来自该区域的用户实现自动转移;基于机器学习策略对可能出现异常的用户进行预测,将用户提前转移至可正常服务的服务器。

本实施例中,资源调度模块定期收集服务器集群内各业务服务器的状态信息并在集群内同步,计算各业务服务器的状态得分,如图2所示,具体包括:

收集业务服务器定时汇报的状态信息并存储在内存中,状态信息包括机器ipv4地址、ipv6地址、对外域名、cpu使用情况、内存占用情况、网卡流量使用情况以及磁盘io使用情况;

根据所收集到的状态信息,计算出资源得分,并将得分结果存储在内存中,得分计算公式为:得分=cpu使用率*第一权重系数+内存使用率*第二权重系数+网卡流量*第三权重系数+磁盘io*第四权重系数;

当有业务服务器宕机时,资源调度模块根据连接断开事件及时感知,并清理内存中对应业务服务器的状态信息;

定期检查内存中的业务服务器状态信息,当某台业务服务器超过配置的时间阈值没有进行状态汇报,则资源调度模块从内存中清理掉该台服务器的状态信息;

定期将内存中的全量状态信息同步给集群中的其他资源调度模块。

本实施例中,资源调度模块接收并响应客户端的请求将可用服务器信息返回给连接建立模块,如图3所示,具体包括:

根据内存中各业务服务器状态信息得分,获得得分最小的服务器;

从内存中查询到得分最小的服务器的ipv4地址、ipv6地址、对外域名信息,并将以上信息写入应答包中,将应答包返回给客户端。

本实施例中,连接建立模块向资源调度模块请求获取可用服务器信息以建立连接,当连接不成功时,使用多种备选方案进行并行重试,当某一方案连接成功时,将成功状态返回给客户端业务逻辑,如图4所示,具体包括:

向服务端的资源调度模块发送请求,并接收资源调度模块返回的可用服务器信息应答包并解析其中内容;

使用应答包中的ipv4地址进行连接,当连接成功时,结束全部流程,通知客户端连接建立成功并将连接句柄返回给客户端业务逻辑;

当连接建立失败时,启动三个异步线程,针对应答包中的ipv4地址、ipv6地址和对外域名,分别在异步线程中尝试建立连接,当任何一个线程中首先建立连接成功时,则结束其他异步线程的工作,通知客户端连接建立成功并将连接句柄返回给客户端业务逻辑;

当全部异步连接线程都连接失败时,重复执行以上异步线程步骤,直到满足配置的次数阈值后仍未成功建立连接,则终止尝试,通知客户端连接建立失败。

本实施例中,资源调度模块在当出现某台服务器负载过高时,根据算法筛选出需要转移的客户端,向客户端推送负载转移信令通知部分客户端将连接转移至其他服务器,如图5所示,具体包括:

遍历内存中的各业务服务器资源得分,将资源得分大于配置阈值的服务器加入待处理队列;

遍历待处理队列,获取待处理队列中每台服务器上的客户端连接信息,计算每个连接的加权得分值,得分计算公式为:得分=登录时长加权值+连接活跃度*第五权重系数+连接健康得分*第六权重系数,其中,连接活跃度通过该连接最近n次发包时间进行加权计算均值得出,连接健康得分根据该连接最近n次发生丢包、超时等错误的次数计算得出;

将上述加权得分值最高的前m个连接,加入待转移队列;

遍历待转移队列中的所有连接,将负载转移信令通过双工的tcp连接推送至客户端转移负载。

本实施例中,连接建立模块在当出现异常时主动转移连接以及当出现某台服务器负载过高时,接收资源调度模块推送的负载转移信令进行负载转移,如图6所示,具体包括:

当接收到服务端推送的负载转移信令时,将负载转移状态加入待处理队列;

定期计算客户端自身与服务器连接的健康得分,健康得分根据该连接最近n次发生丢包、超时等错误的次数加权计算得出,当健康得分超过配置阈值时,将异常转移状态加入待处理队列;

当待处理队列中存在负载转移状态或异常转移状态时,则重新向资源调度模块请求获取可用服务器信息以建立连接。

本实施例中,资源调度模块动态计算某一区域用户的异常状态情况,当用户所在区域异常比例较高时对来自该区域的用户实现自动转移,如图7所示,具体包括:

当出现连接异常断开时,收集用户相关的区域信息,发送至区域统计子模块;

区域统计子模块定期对所存储的区域异常信息进行计算分类,得出异常出现概率较高的区域用户分布比例;

将异常用户比例较高的区域信息同步至资源调度模块;

当新用户请求连接后端服务器时,资源调度模块通过对用户区域进行判断,当用户所在区域异常比例较高时,自动将该用户连接至其他可用区,实现区域用户的转移。

本实施例中,资源调度模块基于机器学习策略对可能出现异常的用户进行预测,将用户提前转移至可正常服务的服务器,如图8所示,具体包括:

将服务端收集到的正常行为数据和异常行为数据同步给离线计算子模块,正常行为数据和异常行为数据包括:用户区域、用户网络运营商信息、用户最近n次错误原因及时间、用户最近n次连接断开时间、用户重新连接间隔、用户最近n次请求的延迟;

离线计算子模块定期从正常行为数据和异常行为数据提取样本特征,将特征归一化后得到一组训练数据,构建预测模型,结合训练数据并使用梯度下降法计算出当损失函数最小时的模型参数;

训练数据:

[(x0,x1,x2,…,xn)=>y]

其中,x0、x1、x2…为对应用户行为数据经过归一化至[0,1]区间内的值,y为是否异常,0代表正常,1代表异常;

归一化公式为:

x'=(x-xmin)/(xmax-xmin);

预测模型:

f(x)=w0+w1xx+w2x2+...+wnxn

损失函数:

梯度下降法公式为:

结合训练数,使用梯度下降法计算出当j(w)最小时的w0,w1,…,wn,带入预测模型;

将计算所生成的预测模型及参数定期同步至资源调度模块;

资源调度模块定期对新连接和已有连接使用预测模型进行计算,将计算得出的异常高风险连接标记;

资源调度模块定期将高风险连接转移至服务的其他可用区,完成异常的提前转移。

综上,本发明实施例通过一个运行在服务端的资源调度器,实现对业务服务器运行信息和访问地址的采集,同时动态管理可用服务器的列表,可以根据客户端的请求计算出当前负载最低的机器,并返回给客户端的连接建立模块。

客户端通过连接建立模块在连接建立失败时,采用备选策略,同时对备选的ipv4地址、ipv6地址和域名进行并发尝试,当有一个方式连接成功时,服务的可用性即可得到保证,同时并发的重试策略相较于串行的重试方式,可以减少等待时间和延迟,提高用户体验。

当客户端所连接的服务器发生负载过高时,本发明具备动态负载转移能力,服务器根据算法筛选出需要转移的客户端,将负载转移信令实时推送至客户端,通知客户端转移负载。

当客户端与服务器间连接出现异常时,本发明可以通过算法计算出异常得分,当得分较高时,客户端具备主动转移连接的能力。

本发明的服务端可以动态计算某一区域用户的异常状态情况,来自该区域的用户实现自动转移。同时服务端引入机器学习策略,根据用户的异常行为数据离线训练预测模型,提前预判用户可能发生的异常状况,将用户转移至可正常服务的服务器。

与上述实施例1相对应的,本发明实施例2提出了一种计算机可读存储介质,计算机可读存储介质中包含一个或多个程序指令,一个或多个程序指令用于被处理器执行如上实施例1的应用于移动端的自适应负载均衡和保证高可用的方法。

虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1