2019-05-04
负载均衡算法-最小活跃数加权LeastActiveWeighted
负载均衡 评论:0 浏览:182

转载请注明出处:https://oldnoop.tech/c/201.html

编写Server类

封装服务器的信息,包括地址,总的请求数,活跃数

封装获取,增加总的请求数,获取/增加/减少活跃数的方法

选取服务器

定义 服务器列表

定义 随机数生成器

选取的时候

先获取当前的服务器列表,

定义变量

     zeroActiveCount 活跃数为零的服务器个数

     zeroIndexArray 活跃数为零的服务器的索引数组

     minValue 活跃数不为零的最小 计算数值

     minValueCount 活跃数不为零的 最小 计算数值的 服务器个数

     minValueIndexArray 活跃数不为零的 最小 计算数值的 服务器索引数组

循环服务器列表

     对于每个服务器,拿到服务器当前的活跃数,配置权重,以及 活跃数减去 权重的数值

     如果活跃数为0,

          添加到数组zeroIndexArray, zeroIndexArray 个数加1

    如果活跃数 不为0

          如果服务器计算数值 小于 最小数值,

               修改最小计算数值minValue为 当前服务器的 计算数值

               修改最小数值个数minValueCount 为1

               修改最小数值服务器索引数组第一个元素minValueIndexArray [0]为 当前服务器的索引

          如果服务器计算数值  等于 最小数值,

               修改最小计算数值的 服务器数量 minValueCount 加1

               修改最小计算数值的 服务器索引数组 的 对应位置 minValueIndexArray [minValueCount ++] 为当前服务器的索引

循环结束之后,

     将零活跃数的索引数组复制到 最小计算数值的数组,一起作为备选服务器

     如果备选的服务器的个数optionalCount为1,

          则直接选择这个服务器

     如果备选的服务器的个数optionalCount不为1,

          则存在多个服务器 备选,使用随机算法,随机选择其中的一个服务器

添加,删除服务器, 修改服务器列表

采用Copy-And-Write模式

先复制当前的服务器列表,得到一个新的集合,

然后进行修改,

最后将修改后的数据设置回去

测试

编写发送请求的方法sendRequest,

     使用Thread的sleep方法模拟业务耗时

编写处理请求的方法handRequest,

     先选取服务器,

    再增加服务器的总请求数,活跃数

    然后发送请求,

    最后,发送请求完毕,减少服务器的活跃数

说明:

    这里仅为了测试,编写代码方便,

    将发送请求和处理请求的方法放在 负载均衡器中

    实际业务场合,应该将这些方法剥离出去

执行测试



  • 转载请注明出处:https://oldnoop.tech/c/201.html

Copyright © 2018 oldnoop.tech. All Rights Reserved

鄂ICP备2023022735号-1