求个算法思路:轮盘赌的改进版

2014-10-31 09:24:10 +08:00
 mengzhuo
现在代码中已经用轮盘赌算法来实现Load balance的功能

权重就是最简单的连接数,连接数越多权重越低

但是时间复杂度是O(N),因为要把所有连接数值加起来
见代码:
https://gist.github.com/85e6baa18ef02bf1a324


考察过了模拟退火,但是数量大过Kmax值时明显不能获得“按概率取得”的效果啊
3508 次点击
所在节点    程序员
11 条回复
archxm
2014-10-31 09:53:45 +08:00
这个是不是比较冷门? 不过看起来挺高大上
canesten
2014-10-31 10:03:36 +08:00
随便一个一致性哈希的做LOAD BALANCE就好
mengzhuo
2014-10-31 13:44:50 +08:00
@canesten

这不是把用户均等地分在服务器上吗?
但我需要的是按压力分配

还请指教一下
canesten
2014-10-31 13:52:34 +08:00
@mengzhuo
你要是一开始就均分,压力基本就基本上被平均了不是吗?
难道一台服务器上部署了多个不同类型的应用,你还要统计其他应用对这个服务器的负载?
mengzhuo
2014-10-31 14:31:41 +08:00
@canesten

新加的服务器怎么办? 只是小部分链接到新的服务器啊。。。。
ChanneW
2014-10-31 14:31:56 +08:00
不就直接分给连接数最少的么?
canesten
2014-10-31 14:45:05 +08:00
@mengzhuo
服务器有增减的时候要rebalance
不过看你的需求,如果是逐台增减服务器的策略可以尝试另外的方法。
比如按服务器的负载上限设计一个连接池,按贪心分配连接,不够的时候增服务器,太闲的就减服务器。
mengzhuo
2014-10-31 15:07:38 +08:00
@canesten

负载因为是用LBS的,按IT设定自动启停的
reblance不是平衡目前服务器的链接吗?

嗯,我今晚回去好好研究一下才行了……
mengzhuo
2014-10-31 15:09:10 +08:00
@ChanneW

这样会造成突发链接瞬间增加,服务器可能受不了……
canesten
2014-10-31 15:10:52 +08:00
@mengzhuo
reblance不是平衡目前服务器的链接吗?
对啊,所以在增加服务器以后再rebalance一下就均衡了。
sc
2014-10-31 15:58:12 +08:00
这个只要在每次服务器有变动的时候生成一次就行了。接下来就round robin好了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/142820

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX