V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mengzhuo
V2EX  ›  程序员

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

  •  
  •   mengzhuo · 2014-10-31 09:24:10 +08:00 · 3542 次点击
    这是一个创建于 3705 天前的主题,其中的信息可能已经有所发展或是发生改变。
    现在代码中已经用轮盘赌算法来实现Load balance的功能

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

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


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

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

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

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

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

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

    这样会造成突发链接瞬间增加,服务器可能受不了……
    canesten
        10
    canesten  
       2014-10-31 15:10:52 +08:00
    @mengzhuo
    reblance不是平衡目前服务器的链接吗?
    对啊,所以在增加服务器以后再rebalance一下就均衡了。
    sc
        11
    sc  
       2014-10-31 15:58:12 +08:00
    这个只要在每次服务器有变动的时候生成一次就行了。接下来就round robin好了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1680 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:24 · PVG 00:24 · LAX 08:24 · JFK 11:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.