一个巧妙的负载均衡算法 :翘动你的大脑
现在的负载均衡技术,可以说是满大街都是,但是我们基本都停留在了使用的阶段上,并没有真正深入去了解其核心。如果真的出现了问题,可
现在的负载均衡技术,可以说是满大街都是,但是我们基本都停留在了使用的阶段上,并没有真正深入去了解其核心。如果真的出现了问题,可能就很难知道是什么原因导致了,只能去google,百度了。 因此,了解一些核心的东西,还是不错的。
负载均衡大概流程就是,随时收集各服务器信息或者各服务器主动上报信息,由配置主心进行保存,计算出权重,然后根据相应算法进行服务机器选择。(当然了,这不是本文的重点,我也说得不一定对)
我要展示的是,一个根据权重进行机器选择的一个巧妙算法,如下:
- int chooseOneRoute ( LB_SvrInfo * & pSvr )
- {
- double dblTotalWeight = 0.0;
- int i = 0;
- time_t curTime = time(NULL);
- //权重的计算方法是Late方法
- if ( curTime - calWeightTime >= CAL_WEIGHT_TIME_INTERVAL )
- {
- calculateWeight();
- }
- //先把各服务器权重加起来
- for ( i = 0; i < MAX_SERVER_NUM; i++ )
- {
- if ( !oServerInfo[i].isOkForRoute() ) continue;
- dblTotalWeight += oServerInfo[i].getWeight();
- }
- dblTotalWeight *= rand() / ( RAND_MAX + 1.0 );
- //做减法
- for ( i = 0; i < MAX_SERVER_NUM; i++ )
- {
- if ( !oServerInfo[i].isOkForRoute() ) continue;
- dblTotalWeight -= oServerInfo[i].getWeight();
- //找到对应服务器
- if ( dblTotalWeight < 0 ) break;
- }
- pSvr = &( oServerInfo[i] );
- return 0;
- }
分步解释就是:
先计算得到各机器的权重值,保存起来;
按顺序将各机器权重相加,相加之后就相当于各机器在总权重上占了各相应的一段比例;
取随机数,得到一个0~1的随机值,并乘以总权重,作为选中机器的标志;
再按顺序减去各机器的权重,当减到选择机器的权重范围时,就得到了机器号,从而选定该机器。
算法示意图如下:
服务器权重越高,在线段上占的长度越长,被随机数选中的概率也越大。
刚开始的时候,我以为是哪个数学家搞出来的公式得到的呢,结果原理却出奇的简单,所以好的东西不一定是复杂的,或者说看起来牛逼的东西,不一定就很复杂,但是肯定是大多数人意想不到的。
责任编辑:售电衡衡
免责声明:本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
我要收藏
个赞
-
碳中和战略|赵英民副部长致辞全文
2020-10-19碳中和,碳排放,赵英民 -
两部门:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
国家发改委、国家能源局:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业
-
碳中和战略|赵英民副部长致辞全文
2020-10-19碳中和,碳排放,赵英民 -
深度报告 | 基于分类监管与当量协同的碳市场框架设计方案
2020-07-21碳市场,碳排放,碳交易 -
碳市场让重庆能源转型与经济发展并进
2020-07-21碳市场,碳排放,重庆
-
两部门:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
国家发改委、国家能源局:推广不停电作业技术 减少停电时间和停电次数
2020-09-28获得电力,供电可靠性,供电企业 -
2020年二季度福建省统调燃煤电厂节能减排信息披露
2020-07-21火电环保,燃煤电厂,超低排放
-
四川“专线供电”身陷违法困境
2019-12-16专线供电 -
我国能源替代规范法律问题研究(上)
2019-10-31能源替代规范法律 -
区域链结构对于数据中心有什么影响?这个影响是好是坏呢!