此刻的负载平衡技能,可以说是满大街都是,可是我们根基都逗留在了利用的阶段上,并没有真正深入去相识其焦点。假如然的呈现了问题,大概就很难知道是什么原因导致了,只能去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; }
分步表明就是:
算法示意图如下:
处事器权重越高,在线段上占的长度越长,被随机数选中的概率也越大。
刚开始的时候,我觉得是哪个数学家搞出来的公式获得的呢,功效道理却出奇的简朴,所以好的对象不必然是巨大的,可能说看起来牛逼的对象,不必然就很巨大,可是必定是大大都人意想不到的。