法律状态公告日
法律状态信息
法律状态
2019-09-10
授权
授权
2017-03-22
实质审查的生效 IPC(主分类):H04L12/803 申请日:20161104
实质审查的生效
2017-02-22
公开
公开
技术领域
本发明属于信息系统领域,尤其涉及一种基于实时负载率的远程服务调用负载均衡系统。
背景技术
随着信息系统的发展,应用规模日趋庞大,不同应用间的交互不断增多,传统信息系统存在大量重复的共性业务逻辑,大大降低了系统的可靠性、可维护性与可定制性。目前,采取将核心业务抽取出来成为服务,划分原有复杂的应用,以模块形式独立部署,能够实现服务的共享与重用。
然而当服务数量不断增多,服务间依赖关系变的复杂,简单暴露与引用远程服务无法满足用户需求。传统的远程服务调用过程中,客户端直接配置远程服务地址进行服务访问,大量服务交互使得服务地址的配置管理十分困难。
在集群环境中,为保证服务调用的可靠性,多采用多服务实例部署。即单个服务包含多个可用的服务实例,防止单个服务实例出现异常的情况下,仍能维持服务的正常访问。在多实例场景中,如何选择服务实例进行连接成为服务交互中不可避免的问题。随机负载均衡算法,采用随机的方式发放客户端请求;轮询负载均衡算法,采用遍历服务实例列表的方式发放客户端请求。以上算法不具有一定的动态性,未能考虑服务的实时负载情况,并且不支持用户自定义的负载策略配置。
发明内容
发明目的:本发明针对目前信息系统中远程服务调用过程中存在的服务寻址不透明、服务负载不均问题,从服务实时负载率角度,提出一种基于实时负载率的远程服务调用负载均衡系统,包括监控中心、注册中心、客户端和服务端,
所述监控中心用于状态监控和统计服务连接数,并向注册中心定时上报;
所述注册中心用于提供服务发布与服务订阅,向客户端推送可用服务实例列表,并实时获取服务负载数量,计算服务实例负载等级;
所述客户端包括负载均衡器模块,所述负载均衡器模块用于分析服务实例负载等级,根据负载均衡筛选算法筛选出服务实例,并推荐给客户端。
所述服务端用于提供远程服务并向注册中心注册服务实例名称和访问地址等信息。
所述监控中心用于状态监控和统计服务连接数,具体包括:
监控中心分别接收服务端与客户端定时发送的心跳数据,根据心跳状态判断当前客户端与服务端的连接情况,将服务实例的新增、变更、异常、断开信息实时推送给在线的客户端;
监控中心实时统计当前服务实例所对应的客户端连接数信息,并向注册中心推送实例连接数更新列表;
监控中心提供可配置的监控周期设置,用户根据系统需求,定制监控统计频率。
所述注册中心作为负载均衡架构服务发布与服务订阅中心,分别向服务端与客户端提供服务自动注册与订阅功能。同时,注册中心内置服务实例负载等级划分器,接收由监控中心推送的服务实例当前连接数信息,并计算实时的服务实例负载率。
所述注册中心用于提供服务发布与服务订阅,向客户端推送可用服务实例列表,并实时获取服务负载数量,计算服务实例负载等级,具体包括:
启动服务实例时,服务实例自动向注册中心发送注册信息,包括服务实例访问地址、服务实例名称、服务实例支持最大连接数MAX信息,注册中心接收注册信息并进行持久化,同时通知客户端;
注册中心获取服务实例连接数信息,计算服务负载率情况,实时将服务实例负载等级变动列表推送给客户端;
注册中心提供负载等级划分算法,根据等级划分标准,以级别数代替具体连接数字,表示服务实例当前负载率,同时屏蔽小范围连接数频繁上下波动导致的级别数更新,避免大量负载等级变更信息发送所导致的资源浪费;
当客户端启动时,向注册中心发送服务连接请求,注册中心接收服务连接请求,查询当前服务下可用服务实例列表向客户端推送,可用服务实例列表包括服务实例地址及其负载等级信息;
注册中心支持自定义的负载等级划分标准配置;
注册中心支持自定义的波动屏蔽范围配置。
所述注册中心包括负载等级划分模块,负载等级划分模块提供负载等级划分算法,计算服务实例当前负载率(Load Factor,LF),并将负载率转化为相应负载等级(LoadLevel,LL)以可量化的方式表示当前服务负载状态。
服务实例当前负载率LF的计算方式为:当前连接服务实例的客户端数量(ClientNumber,CN)与服务实例配置的最大连接数MAX之间的比值,通过如下公式计算负载等级LL:
所述负载等级划分模块提供可配置的负载等级划分标准,支持用户自定义的划分方式:负载等级划分模块提供划分标准的可配置文件,用户通过修改文件中包括等级数等配置项,生成自定义负载等级划分标准。
为避免连接服务实例的客户端数量在等级边界值上下波动导致负载等级在连续两个区间之间不断转换,并推送大量负载等级变更信息,所述负载等级划分模块对指定范围的连接服务实例的客户端数量变化采用屏蔽处理,方法如下:通过如下公式计算变动率CR(Change Rate,CR):
其中CN’表示前次统计得到的连接服务实例的客户端数量。
将变动率CR与设置的最小变动率MIN_CR(Minimal Change Rate,MIN_CR)进行比较,若CR≤MIN_CR,判定此次负载变动较小,屏蔽此次变动;若CR>MIN_CR,判定此次负载变动有效,计算负载均衡等级,并向负载均衡器模块推送服务实例新的负载等级值。
与负载等级划分标准相同,除了默认提供的MIN_CR值(0.1),架构支持可配置的MIN_CR值设置,用户可根据服务实例的实际负载状况进行配置。
负载率越高,负载等级越高,服务实例当前负载越大。默认的负载等级由高到低分包括1级、2级、3级、4级、5级。
默认的负载等级划分标准为:
负载率在20%以内(包括20%),相应负载等级为5(LOW);
负载率在20%以上,40%以内(包括40%),相应负载等级为4;
负载率在40%以上,60%以内(包括60%),相应负载等级为3;
负载率在60%以上,80%以内(包括80%),相应负载等级为2;
负载率在80%以上,相应负载等级为1(HIGH)。
所述负载均衡器模块为远程服务调用架构提供可定制化的负载均衡策略,从可用服务实例列表中筛选出服务实例向客户端推荐。
所述负载均衡器模块用于分析服务实例负载等级,根据负载均衡筛选算法筛选出服务实例,并推荐给客户端,具体包括:
负载均衡器模块维护服务实例信息缓存,保证服务实例信息实时准确性,在注册中心故障中,仍能通过本地缓存实现服务调用;
负载均衡器模块提供基于服务实例负载均衡等级的负载均衡筛选算法,根据服务实例实时的负载率,分配客户端调用请求;
负载均衡器模块对于连接数等级最低的服务实例,始终推荐,减少重复的计算导致的客户端连接请求响应效率降低;
负载均衡器模块对不含有最高或最低负载等级服务实例集合,计算所有服务实例等级之和,按照负载等级高被选中概率低,负载等级低被选中概率高的算法,均衡化服务实例负载,从可用服务实例列表中筛选出服务实例,并向客户端推荐连接。所述负载均衡筛选算法包括如下步骤:
步骤1,一个服务包含一个服务实例的集合I={i0,i1,i2,...,iq},q为自然数,
步骤2,若
步骤3,若
步骤4,若
步骤3包括如下步骤:
步骤3-1,对Imid中的元素按照负载等级由高到低进行排序,Imid={i0,i1,i2,...,in},其中i0表示Imid中负载等级最高的服务实例,in表示负载等级最低的服务实例;若Imid中存在负载等级相同的服务实例,则每个负载等级只计算一次;
步骤3-2,计算Imid中所有元素的负载等级之和
步骤3-3,生成随机数r∈(0,sum(Imid)];
步骤3-4,被选中的服务实例i′满足:
有益效果:本发明针对服务远程调用技术领域,特别针对实时远程服务在发布订阅、监控与服务路由方面的应用。本发明通过注册中心、监控中心实现服务的透明寻址与实时监控,通过基于服务实时负载率的负载均衡算法以及可配置设置,实现服务调用的负载均衡。本发明能够实现远程服务资源的透明访问与平均分配。本发明收集服务实例的发布信息、实时状态与连接数量,根据可定制化的负载均衡算法,划分服务负载等级并筛选出服务实例向客户端推荐,实现对服务资源的合理调用。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1为负载均衡系统架构。
图2为服务实例发布流程。
图3为服务实例订阅流程。
图4为服务实例更新流程。
图5为服务实例负载均衡算法流程。
具体实施方式
本发明是一种负载均衡策略,解决服务远程调用过程中的发布、订阅问题,特别是在服务访问过程中实现可动态调节的负载均衡方法。
如图1所示,本发明提出一种基于实时负载率的远程服务调用负载均衡系统,包括监控中心、注册中心、客户端和服务端,所述客户端包括负载均衡器模块,所述负载均衡器模块用于分析服务实例负载等级,根据负载均衡筛选算法筛选出服务实例,并推荐给客户端。
所述监控中心用于状态监控和统计服务连接数,具体包括:
所述监控中心用于状态监控和统计服务连接数,并向注册中心定时上报。监控中心分别接收服务端与客户端定时发送的心跳数据,根据心跳状态判断当前客户端与服务端的连接情况,将服务实例的新增、变更、异常、断开信息实时推送给在线的客户端;
所述注册中心作为负载均衡架构服务发布与服务订阅中心,分别向服务端与客户端提供服务自动注册与订阅功能。同时,注册中心内置服务实例负载等级划分器,接收由监控中心推送的服务实例当前连接数信息,并计算实时的服务实例负载率。注册中心向客户端推送可用服务实例列表,并实时获取服务负载数量,计算服务实例负载等级;
监控中心提供可配置的监控周期设置,用户根据系统需求,定制监控统计频率。
如图2所示,为服务实例发布流程。服务端启动后,注册服务实例,然后上报心跳信息,如果服务实例启动中,继续上报心跳信息,否则停止上报心跳信息。
如图3所示,为服务实例订阅流程。客户端启动后,发送服务订阅请求,注册中心接收请求,获取服务实例列表,推送服务实例列表向客户端,客户端接收服务实例列表信息。如图4所示,为服务实例更新流程,监控中心实时统计当前服务实例所对应的客户端连接数信息,并向注册中心推送实例连接数更新列表,客户端接收服务实例更新信息后进行更新。
所述注册中心用于提供服务发布与服务订阅,向客户端推送可用服务实例列表,并实时获取服务负载数量,计算服务实例负载等级,具体包括:
启动服务实例时,服务实例自动向注册中心发送注册信息,包括服务实例访问地址、服务实例名称、服务实例支持最大连接数MAX信息,注册中心接收注册信息并进行持久化,同时通知客户端。
注册中心获取服务实例连接数信息,计算服务负载率情况,实时将服务实例负载等级变动列表推送给客户端。
注册中心提供负载等级划分算法,根据等级划分标准,以级别数代替具体连接数字,表示服务实例当前负载率,同时屏蔽小范围连接数频繁上下波动导致的级别数更新,避免大量负载等级变更信息发送所导致的资源浪费;
当客户端启动时,向注册中心发送服务连接请求,注册中心接收服务连接请求,查询当前服务下可用服务实例列表向客户端推送,可用服务实例列表包括服务实例地址及其负载等级信息。
注册中心支持自定义的负载等级划分标准配置;
注册中心支持自定义的波动屏蔽范围配置。
所述注册中心包括负载等级划分模块,负载等级划分模块提供负载等级划分算法,计算服务实例当前负载率(Load Factor,LF),并将负载率转化为相应负载等级(LoadLevel,LL)以可量化的方式表示当前服务负载状态。
服务实例当前负载率LF的计算方式为:当前连接服务实例的客户端数量(ClientNumber,CN)与服务实例配置的最大连接数MAX之间的比值,通过如下公式计算负载等级LL:
其中,CN表示当前连接服务实例的客户端数量。
所述负载等级划分模块提供可配置的负载等级划分标准,支持用户自定义的划分方式:负载等级划分模块提供划分标准的可配置文件,用户通过修改文件中包括等级数LN、负载率范围LFR配置项,生成自定义负载等级划分标准。
所述负载等级划分模块提供可配置的负载等级划分标准,支持用户自定义的划分方式:负载等级划分模块提供划分标准的可配置文件,用户通过修改文件中包括等级数等配置项,生成自定义负载等级划分标准。
为避免连接服务实例的客户端数量在等级边界值上下波动导致负载等级在连续两个区间之间不断转换,并推送大量负载等级变更信息,所述负载等级划分模块对指定范围的连接服务实例的客户端数量变化采用屏蔽处理,方法如下:通过如下公式计算变动率CR(Change Rate,CR):
其中CN’表示前次统计得到的连接服务实例的客户端数量。
将变动率CR与设置的最小变动率MIN_CR进行比较,若CR≤MIN_CR,判定此次负载变动较小,屏蔽此次变动;若CR>MIN_CR,判定此次负载变动有效,计算负载均衡等级,并向负载均衡器模块推送服务实例新的负载等级值。
与负载等级划分标准相同,除了默认提供的MIN_CR值(0.1),架构支持可配置的MIN_CR值设置,用户可根据服务实例的实际负载状况进行配置。
负载率越高,负载等级越高,服务实例当前负载越大。默认的负载等级由高到低分包括1级、2级、3级、4级、5级。
默认的负载等级划分标准为:
负载率在20%以内(包括20%),相应负载等级为5(LOW);
负载率在20%以上,40%以内(包括40%),相应负载等级为4;
负载率在40%以上,60%以内(包括60%),相应负载等级为3;
负载率在60%以上,80%以内(包括80%),相应负载等级为2;
负载率在80%以上,相应负载等级为1(HIGH)。
所述负载均衡器模块为远程服务调用架构提供可定制化的负载均衡策略,从可用服务实例列表中筛选出服务实例向客户端推荐。
所述负载均衡器模块用于分析服务实例负载等级,根据负载均衡筛选算法筛选出服务实例,并推荐给客户端,具体包括:
负载均衡器模块维护服务实例信息缓存,保证服务实例信息实时准确性,在注册中心故障中,仍能通过本地缓存实现服务调用;
负载均衡器模块提供基于服务实例负载均衡等级的负载均衡筛选算法,根据服务实例实时的负载率,分配客户端调用请求;
负载均衡器模块对于连接数等级最低的服务实例,始终推荐,减少重复的计算导致的客户端连接请求响应效率降低;
负载均衡器模块对不含有最高或最低负载等级服务实例集合,计算所有服务实例等级之和,按照负载等级高被选中概率低,负载等级低被选中概率高的算法,均衡化服务实例负载,从可用服务实例列表中筛选出服务实例,并向客户端推荐连接。如图5所示,所述负载均衡筛选算法包括如下步骤:
步骤1,一个服务包含一个服务实例的集合I={i0,i1,i2,...,iq}(q为自然数),
步骤2,若
步骤3,若
步骤4,若
步骤3包括如下步骤:
步骤3-1,对Imid中的元素按照负载等级由高到低进行排序,Imid={i0,i1,i2,...,in},其中i0表示Imid中负载等级最高的服务实例,in表示负载等级最低的服务实例;若Imid中存在负载等级相同的服务实例,则每个负载等级只计算一次;
步骤3-2,计算Imid中所有元素的负载等级之和
步骤3-3,生成随机数r∈(0,sum(Imid)];
步骤3-4,被选中的服务实例i′满足:
本发明支持服务的透明访问、实时监控与负载均衡。通过监控服务实例运行状态,统计服务实例的实时负载情况,本发明能够在同一服务多个服务实例间有效均衡分配客户端请求,使得客户端调用请求大概率发送至当前处于空闲状态的服务实例端,降低单个服务实例高负荷出现概率,从而整体提高远程服务调用的可靠性与稳定性,实现服务调用负载均衡。
尽管本发明就优选实施方式进行了示意和描述,但本领域的技术人员应当理解,只要不超出本发明的权利要求所限定的范围,可以对本发明进行各种变化和修改。
机译: 使用GM(GEIGER-MULLER)管和PIN(正-负-负)二极管和远程辐射发射/接收装置的便携式辐射测量仪以及一种精确测量测量值和测量值的低和高剂量辐射量的方法通过GPS(全球定位系统)和CDMA(码分多址)进行辐射
机译: 使用GM(GEIGER-MULLER)管和PIN(正-负-负)二极管和远程辐射发射/接收装置的便携式辐射测量仪以及一种精确测量测量值和测量值的低和高剂量辐射量的方法通过GPS(全球定位系统)和CDMA(码分多址)进行辐射
机译: 面部动画控制方法和基于3D游戏引擎的实时交互式远程授课系统,特别是用于游戏引擎技术与基于交互式3D的交互式远程授课系统的有效结合