• 再议负载均衡算法


    负载均衡的用途,路由等:

    硬件方式:F5的负载均衡设备(张善友的以此起头,C#编写,ASP.NET Session State Partitioning using State Server Load Balancing)ASP.NET记录会话状态,采用负载均衡算法来分区存储状态数据。

    软件方式:IP层,章文嵩的LVS

         HTTP层:ngnix

         HTTP层:dobbo(cluster)(java)https://segmentfault.com/a/1190000009594166 (?待学)

     以前遇到的一个场景也适用:有很多大个的ELT文件,需要拷贝到HPC Cluster的各台机器上,各台机器的可用磁盘空间不一样,可以以此为权重,用负载均衡算法分配,效果较好。当初用了随机分配,检查哪个硬盘可用空间更大,就往哪个上拷贝的方式,这样的缺点,就是每次拷贝文件之前,都增加一次检查磁盘可用空间的操作,浪费了时间,增加了磁盘管理器的负担。

    一个业务场景:专利代理部门,新人(或实习生)与资深代理人的权重不一样,要按权重分工。参考如下算法(实现是否正确未验证):

    class Server{  
        private String ip;  
        private String port;  
        public int weight;  
    }  
    class LoadBalancer{  
        private static List<Server> list=new List<Server>();  
        private static int totalWeight=0;  
        static{//加载配置文件,将解析的服务器列表添加到list中.同时计算出总权重值  
            //list.add(server);  
            //totalWeight+=server.weight;  
        }  
        private static LoadBalancer loadBalancer=new LoadBalancer();  
        private LoadBalancer(){}  
        public static LoadBalancer getLoadBalancer(){  
            return loadBalancer;  
        }  
        public Server getServer(){  
            int sum=0;  
            int rand=(int)(1+Math.random()*totalWeight);  
            for(Server serv : list){////由概率区间值决定服务器的分配  
                sum+=serv.weight;  
                if(rand<=sum){  
                    return serv;  
                }else{  
                    continue;  
                }  
            }  
            return null;//不会出现这种情况。  
        }  
    }  

    参照上述方法改造上述场景的话,Server这个概念抽象形容人不太合适,不如用Worker更好。Worker不用IP和Port,这两个组合抽象成一个ID即可。

    另外,Selenium Grid,应该也是采用的负载均衡算法分配的WebDriver的任务。(?待考)

  • 相关阅读:
    GISer面对创业的困惑
    近期微博吐槽言论存档,涉及“性能优化”、C++陋习等
    HDU 2825 Wireless Password【AC自动机+DP】
    20130809, 微软八月安全补丁提前通知
    终于把3DMAX的MSE搞定了!
    UVA 11464 Even Parity (独特思路)
    [置顶] hdu 4418 高斯消元解方程求期望
    UVA 10652 Board Wrapping
    少儿编程-教育:少儿编程教育
    少儿编程:目录
  • 原文地址:https://www.cnblogs.com/rgqancy/p/7550193.html
Copyright © 2020-2023  润新知