基于一体化水电管控平台的ARV负载均衡系统及方法与流程

文档序号:14608815发布日期:2018-06-05 20:22阅读:139来源:国知局

本发明涉及一种基于一体化水电管控平台的ARV负载均衡系统及方法,属于水电智能管控技术领域。



背景技术:

目前研发的大规模分布式访问软件系统很多,随着目前电力行业智能化的要求越来越高,系统进行大规模并行访问的存取和维护变得越来越频繁,系统整体性能面临越来越大的挑战。工程现场常有客户端请求和计算卡顿现象,纠其原因,基本都是由于服务端需要超负荷进行大量的服务响应而造成服务器资源紧张,导致性能下降。目前迫切需要建立一套负载均衡机制,用于服务请求的负载分流,以提升系统的整体运行效率,加快服务响应速度。

传统的负载均衡方法有的算法将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,忽视了服务器之间的差异性;有的算法按照连接数或者机器资源统计进行分配,直到机器遇到卡顿或者临界状况才会切换服务对象,然而不幸的是目前很多系统基于虚拟机进行构建,系统资源消耗信息本就不易准确获取,反而容易造成错误的资源消耗判断。更为要紧的是由于水电厂监控行业对于数据处理的实时性要求,根据负载的实时情况进行判断进行切换不能很好满足系统中存在的实时请求处理滞后问题。

代理拦截是基于高级语言元数据反射机制的一种设计模式,它在调用功能函数的外层设立一个接口,接口定义与功能函数一致,在接口实现时进行函数调用预处理和功能函数调用。这一模式通常用来在实现功能的同时对功能函数的上下文环境进行管理。由于接口与功能函数的一致性,这一代理接口对于客户端来说与直接调用功能函数相比并不会感觉到差异性,因此这一机制对于客户端来说是透明的。



技术实现要素:

本发明所要解决的技术问题是克服现有技术的缺陷,提供一种基于一体化水电管控平台的ARV负载均衡系统及方法,通过代理拦截对数据访问总线进行拦截,可以异步统计各接口实现的资源和性能状况,在不影响系统运行的情况下,真实的得出资源损耗情况,提高真实负载统计的准确率。

为解决上述技术问题,本发明提供一种基于一体化水电管控平台的ARV负载均衡系统,所述系统分为客户端和服务端;所述客户端包括各类在线工作站应用客户端、实时计算应用客户端、报警应用客户端、移动应用客户端以及第三方应用客户端;所述服务端包括各专业服务器,各专业服务器通过业务接口统一向外发布;

在客户端和服务端分别构建统一入口代理模块,客户端通过统一的代理模块访问服务;服务端代理模块统一接收所有客户端的请求,在服务端代理模块构建一个拦截器,通过对服务调用返回结果进行拦截,拦截器分析服务调用接口,根据接口规范定义快速预估此次服务响应所需资源,所有计算结果均被置于拦截器的负载统计表中,服务端代理模块查询负载统计表,按照最小负载最短响应时间响应的服务器进行处理的原则进行服务器切换,将客户端的访问请求加入选定的服务器的请求队列中,并标记其请求处理ID;服务器执行完成任务后,将其处理时间,返回实际数据总量等记录下来,通过ID找到预估资源消耗进行对比。

前述的各专业服务器被划分为不同的业务功能模块,业务功能模块横向又被划分成各自的数据访问层和业务逻辑层;所述数据访问层负责从数据库中提取原始采集或整编数据,业务逻辑层负责将数据访问层获取的基础数据根据业务需求组织包装成业务数据模型;业务数据模型直接被序列化为二进制数据传送到同构客户端。

前述的在客户端和服务端的代理模块上基于高级语言的反射机制构建代理切面,其中,客户端代理切面分别在提交申请和获得服务结果两个环节建立时标来计算服务响应时间;服务端代理切面用来统计服务队列等待资源数以及当前执行任务的消耗资源数。

前述的服务端代理模块中的拦截器通过解析服务调用接口的访问请求,分析固定的参数,包括请求数据类型,时间范围,数据特征以及滑动时长,预估出此次服务响应所需资源。

基于一体化水电管控平台的ARV负载均衡系统的ARV负载均衡方法,包括以下步骤:

1)首先定义每个服务节点的业务负载权重向量V(i)={type(i)},单位时间频率向量H(i)={cnt(i)},处理数据容量向量D(i)={data(i)},另外构建参考向量R(i)={Res(i)};其中,i表示第i个服务节点;

2)在服务节点上建立loadht表和loaddt表分别代表单位时间内业务调用频率以及涉及的数据量;建立请求队列统计表reqt,统计的信息包含请求类型、预计等待时间,定义负载量阈值L0

3)从所有服务节点中选择没有超过负载量阈值的服务节点集合Nl∈{Ni|Ni∈N且Li<L0},其中,Ni表示第i个服务节点,Li表示第i个服务节点的负载量,N表示所有的服务节点;如果Nl的集合为空,则停止请求处理,将请求置于处理机请求等待队列中,否则进入步骤4);

4)对Nl中的所有服务节点,对负载量向量进行模运算,根据负载策略选择模长最小的m个服务节点集合Nm={Ni|Ni∈Nl且||Li||=min(||L1||,||L2||,…||Ln||)},然后进入步骤5),||Li||表示第i个服务节点的模,n为服务节点数;

5)对于服务节点集合Nm,查询队列统计表reqt,计算总的等待时间,选择等待时间最短的t个服务节点集合Nt={Ni|Ni∈Nm且Ti=min(T1,T2,…Tm)},Ti表示第i个服务节点的等待时间;

6)从Nt中随机选择一个服务节点Ni,如果该节点的等待队列为空,直接进行处理,算法结束;如果等待队列不为空,将请求置于等待队列中,更新loadht表和loaddt表。

前述的当把一个请求执行完成后,服务端的拦截器针对各接口统计得到接口评估权重,在一个时间范围内得到各接口的评估权重向量Di,在一个时间段内得到一个侯选权重向量集D={D1,D2,…,Di,…,Dn},最近一次学习得到的权重系数为T={λ1',λ2',...,λk',...,λ'm},计算权重系数的相似度,当相似度超过某一个阀值时,需要重新对各接口进行权重更新,其中,n为总时间,m为接口数。

前述的相似度的计算如下:

其中,similarity(Di,T)为相似度,λk'为最近一次学习得到的第k接口的权重系数,为第i时间第k接口的资源权重系数。

前述的权重更新,具体为:当所有时间的相似值similarity(Di,T)值相加小于某个阀值S的时候,系统判定需要对接口权重进行更新修改,将D的每一维的向量跟T中的每一维度进行相比运算,再将D中的所有的比值进行累加,达到最大的那一维是最需要进行权重更新的向量维Di,根据得到的接口偏移量,按照接口偏移量对该维进行修正,然后将修正后的权重向量更新至该台服务器的权重列表中。

本发明的有益效果为:

(1)通过独立的拦截器对数据访问总线进行拦截,可以异步统计各接口实现的资源和性能状况,在不影响系统运行的情况下,真实的得出资源损耗情况,提高了真实负载统计的准确率;

(2)通过将请求队列中的资源预估置于负载均衡评估体系当中,可以把握未来一段时间的服务器资源使用情况,使负载均衡机制具备了预测性;

(3)充分利用了接口服务的规范准则和系统结构特征,通过反射获取应用进程的资源信息,从进程这一粒度进行分析,极大地提高了信息数据提取的准确度,完全屏蔽了各服务器之间的物理性能差异;

(4)完全采用自动的学习方法,解决了人工参与监督提取和更新的重复和单调的工作,降低了成本。

附图说明

图1为本发明的一体化水电管控平台结构图。

具体实施方式

下面对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。

本发明的ARV(Application Resource Vector)负载均衡机制在一体化水电管控平台上进行,智能化水电厂系统将主要子系统业务集成到一个一体化水电管控平台之上,如图1所示,一体化水电管控平台分为客户端和服务端。客户端包括各类在线工作站应用客户端、实时计算应用客户端、报警应用客户端、移动应用客户端以及第三方应用客户端等等。服务端包括各专业服务器,各专业服务器通过业务接口统一向外发布,各专业服务器被划分为不同的业务功能模块,业务功能模块横向又被划分成各自的数据访问层和业务逻辑层。数据访问层负责从数据库中提取原始采集或整编数据,业务逻辑层负责将数据访问层获取的基础数据根据业务需求组织包装成业务数据模型。业务数据模型可以直接被序列化为二进制数据传送到同构客户端,客户端只需要访问代理提供的专业接口即可获取该专业的服务数据,通讯过程简单并且高效。

一体化管控平台在客户端和服务端分别构建统一入口代理模块,即所有的客户端均通过客户端代理模块访问服务层,服务端代理模块则接受所有客户端代理传送过来的请求并分发至各服务处理机。服务端代理模块统一接收所有客户端的请求,在服务端代理模块构建一个拦截器,通过对服务调用返回结果进行拦截,拦截器分析服务调用接口,根据接口规范定义快速预估此次服务响应所需资源,所有计算结果均被置于拦截器的负载统计表中,服务端代理模块查询负载统计表,按照最小负载最短响应时间响应的服务器进行处理的原则进行服务器切换,确保客户端的请求得到安全响应。客户端通过统一的代理模块访问服务,将请求提交到选择的服务器之后,该服务节点的资源消耗评估将会重新计算并刷新负载统计表。

在两端代理模块上基于高级语言的反射机制构建两个切面,其中客户端代理切面分别在提交申请和获得服务结果两个环节建立时标来计算服务响应时间,该时间是用来评判服务端处理效率以及算法优劣的重要依据;服务端切面主要是用来统计服务队列等待资源数以及当前执行任务的消耗资源数,其中获得当前执行任务的资源使用情况可以用来进一步修正评估权重,以便实时反映当前服务器系统性能。

随着智能化水电厂系统后期服务的逐步集成,服务端的负载将会越来越大,后期加入的服务器也会越来越多,但是对不同硬件配置的服务器,最初设定的接口性能指标权重不能完全反应该服务器的性能消耗状况。为了防止将来出现一些异构服务器负载过重的情况,本发明的客户端代理根据后期接入服务器的服务接口的响应的实际资源消耗对最初指定的各接口的权重估算进行学习性的调整,进而估算出符合该服务器的性能指标。处理机通过统计接口实际的时间、空间资源,对预先设定的权重不断进行迭代更新,不断优化服务器的评估权重,充分考虑将来后期服务器不断集成的状况。

目前大型的一体化集成系统设计都遵循好的访问标准,本发明将电厂监控、水调以及安全监测等各专业测量数据的访问按照实时数据和历史数据的处理要求分门别类建立接口标准的数据总线。相对来说,实时数据接口侧重内存数据的实时性存取,实时数据长期驻留服务器内存。历史数据接口主要是关系型历史数据库的访问,更侧重于知识库的数据存取。两类接口对于时间和空间资源消耗情况截然不同。

由于各专业接口测量数据访问的一致性,服务端代理模块中的拦截器通过解析指定接口的访问请求,分析固定的参数(包括请求数据类型,时间范围,数据特征以及滑动时长等信息),可以预估数据总量。比如,用户请求小时数据,起始时间为2016-11-11 00:00:00,结束时间为2016-11-12 00:00:00,那么单个测点的数据条数为24条(缺数情况下不考虑在内)。基于标准的数据接口,可以根据时间跨度,数据结果集大小以及接口运算逻辑复杂程度等预估出最终产生的特征数据数量。服务端代理模块查询负载统计表选择占用资源最少的服务器进行处理,将该请求加入选定的服务器的请求队列中,并标记其请求处理ID。请求分发到服务器后,负载计算线程重新计算该服务器的负载并更新负载统计表。服务器执行完成任务后,将其处理时间,返回实际数据总量等记录下来,通过ID找到预估资源消耗进行对比,对比结果将用作后续各资源管理权重更新的重要评判标准。

将所有请求队列的预估资源结合服务器实际资源消耗组成资源评估权重向量,对每台服务器的资源评估权重向量计算其模长。对模长最小的服务器集合,处理机选择预估等待时间最短的服务器,将请求放入该服务器的请求队列中。各服务器处理每条请求时,服务端拦截器根据该服务器的请求处理消耗时间和返回结果得出其实际的资源损耗,消耗时间除以处理数据量得出各接口的实际耗时参考向量。将实际耗时参考向量综合其运算量(处理数据量)经过平均处理跟原先各接口的权重向量(计算复杂度)进行比较,当相似度超过某一个阀值时,需要重新对各接口进行权重更新,以保证更加适应该服务器的评估权重,从而为系统运行期间进行更加准确的负载均衡做好基础。

在整个过程中,按照接口的数目确定向量维数,当把一个请求执行完成后,服务端的拦截器针对各接口统计得到的接口评估权重,在一个时间范围内可以得到各接口的评估权重向量Di。随着系统运行,在更大的时间范围内将会组成一个侯选权重向量集D={D1,D2,…,Di,…,Dn},上一次学习得到的权重系数为T={λ1',λ2',...,λk',...,λ'm}。计算相似值:

其中,λk'为最近一次计算出来的权重系数即接口运算复杂度,为第i时间第k接口的资源权重系数,m为接口数。

在所有Di中,当所有相似值similarity(Di,T)值相加小于某个阀值S的时候,系统判定需要对接口权重向量进行更新修改。将D的每一维的向量跟T中的每一维度进行相比运算,将D中的所有的比值进行累加,达到最大的那一维无疑是最需要进行权重更新的向量维Di,根据得到接口偏移量,按照接口偏移量对该维进行修正,然后将得到的向量更新至该台服务器的权重列表中。

基于上述一体化水电管控平台,本发明的基于一体化水电管控平台的ARV负载均衡方法,包括以下步骤:

1)首先定义每个服务节点的业务负载权重向量V(i)={type(i)},单位时间频率向量H(i)={cnt(i)},处理数据容量向量D(i)={data(i)},另外构建参考向量R(i)={Res(i)}。其中,i表示服务节点的编号,V(i)为一体化水电管控平台上各业务接口对节点系统资源的影响权重,H(i)为各业务调用频率,根据现场情况,以分钟为时间单位,D(i)为各业务涉及的数据量的大小,R(i)为服务机器的资源,包含cpu,内存以及网络等资源使用情况。具体的,H(i),D(i)是根据一体化管控平台的数据总线切面拦截解析后得出,具体作法为:利用高级语言的反射机制,用异步线程将各业务接口的调用上下文环境,包括业务类型、调用范围、输入参数以及返回结果等进行整理统计后填入频率表loadht和容量表loaddt中。

2)在服务节点上建立loadht表和loaddt表分别代表单位时间内业务调用频率以及涉及的数据量。建立请求队列统计表reqt,统计的信息包含请求类型、预计等待时间,定义负载量阈值L0

3)从所有服务节点中选择没有超过负载量阈值的服务节点集合Nl∈{Ni|Ni∈N且Li<L0},其中,Ni表示第i个服务节点,Li表示第i个服务节点的负载量,N表示所有的服务节点;如果Nl的集合为空,则停止请求处理,将请求置于处理机请求等待队列中,否则进入步骤4)。

4)对Nl中的所有服务节点,对负载量向量进行模运算,根据负载策略选择模长最小的m个服务节点集合Nm={Ni|Ni∈Nl且||Li||=min(||L1||,||L2||,…||Ln||)},然后进入步骤5),||Li||表示第i个服务节点的模,n为服务节点数。

5)对于服务节点集合Nm,查询队列统计表reqt,计算总的等待时间,选择等待时间最短的t个服务节点集合Nt={Ni|Ni∈Nm且Ti=min(T1,T2,…Tm)},Ti表示第i个服务节点的等待时间。

6)从Nt中随机选择一个服务节点Ni,如果该节点的等待队列为空,直接进行处理,算法结束。如果等待队列不为空,将请求置于等待队列中,更新loadht表和loaddt表。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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