• 请不要在回答技术问题时复制粘贴 AI 生成的内容
mengzhuo
V2EX  ›  程序员

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

  •  
  •   mengzhuo · Oct 31, 2014 · 4046 views
    This topic created in 4296 days ago, the information mentioned may be changed or developed.
    现在代码中已经用轮盘赌算法来实现Load balance的功能

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

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


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

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

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

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

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

    嗯,我今晚回去好好研究一下才行了……
    mengzhuo
        9
    mengzhuo  
    OP
       Oct 31, 2014   ❤️ 1
    @ChanneW

    这样会造成突发链接瞬间增加,服务器可能受不了……
    canesten
        10
    canesten  
       Oct 31, 2014
    @mengzhuo
    reblance不是平衡目前服务器的链接吗?
    对啊,所以在增加服务器以后再rebalance一下就均衡了。
    sc
        11
    sc  
       Oct 31, 2014
    这个只要在每次服务器有变动的时候生成一次就行了。接下来就round robin好了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2814 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:13 · PVG 23:13 · LAX 08:13 · JFK 11:13
    ♥ Do have faith in what you're doing.