先上代码,采用php脚本语言

<?php

/* 
 * Copyright (C) FatHong
 */

/* 数据初始化,weight: 权重 */
$hosts['a'] = array('weight' => 5, 'current_weight' => 0, 'count' => 0);
$hosts['b'] = array('weight' => 3, 'current_weight' => 0, 'count' => 0);
$hosts['c'] = array('weight' => 2, 'current_weight' => 0, 'count' => 0);

$result = array();

/* 模拟10次 */
for ($i = 0; $i < 10; $i  ) {
  round_robin($hosts, $result);
}

/* 输出结果 */
print_r($result);

/* round robin 轮循 */
function round_robin(&$hosts, &$result)
{
  $total = 0;
  $best = null;

  foreach ($hosts as $key => $item) {
    $current = &$hosts[$key];
    $weight = $current['weight'];

    $current['current_weight']  = $weight;
    $total  = $weight;

    if ( ($best == null) || ($hosts[$best]['current_weight'] < 
                $current['current_weight']) ) 
    {
      $best = $key;
    }
  }

  $hosts[$best]['current_weight'] -= $total;
  $hosts[$best]['count']  ;

  $result[] = $best;
}

输出结果:

Array
(
[0] => a
[1] => b
[2] => c
[3] => a
[4] => a
[5] => b
[6] => a
[7] => c
[8] => b
[9] => a
)

负载均衡的服务器中,其实现算法有种是round-robin权重轮循,就是后端的服务器列表中,给每个服务器标上权重,代表它被采用的机率。

这段代码把最简洁的流程剥离出来,没考虑后端挂起等情况,可以知道它是怎么实现的,仅供参考.

round robin权重轮循算法php实现代码的更多相关文章

  1. Swift 运算属性

    都是直接定义,赋值使用Swift中的运算属性并不是直接用来存储值的,而是类似于函数的作用。他里面封装了getter和setter方法。比如我们举一个例子,正方形类,我们只要有边长的属性,那么周长是不是直接边长*4即可,同理只要知道周长,周长/4也能得到边长。创建一个正方形类属性round就是一个运算属性我们可以试一下有问题可以继续学习苹果开发群:414319235欢迎加入欢迎讨论问题

  2. swift3 – Xcode 8 Beta 4 Swift 3 – “圆”行为发生变化

    我有以下简单的扩展为Double,它在所有的Xcode8beta3的工作正常从Beta4开始,我得到“不能使用变异成员的不变价值:”自我“是不可变的”在回合的功能–有人有任何线索吗?

  3. round robin权重轮循算法php实现代码

    这篇文章主要介绍了round robin权重轮循算法php实现代码,需要的朋友可以参考下

  4. pandas round方法保留两位小数的设置实现

    本文主要介绍了pandas round方法保留两位小数的设置实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  5. php – mysql – 获取最接近正确值的值,根据结果返回0到很多

    我的网站允许用户猜测体育比赛的结果.在比赛结束时,应将猜测与实际结果进行比较.获胜者是具有最接近正确猜测的成员我正在寻找一种方法来返回所有猜测正确结果和得分差异的成员如果没有(零)成员猜对正确返回猜测最接近正确结果的成员SeeMYSQLFIDLEEXAMPLE我修改了脚本以更改固定值,如下所示我的问题是如果我在下表中运行此脚本:即使我将结果完全正确,nothing也会显示:我的变量值在sql语句中

  6. php – MySQL圆怪异常的bug

    我面临着一个非常奇怪的错误?现在在mysqlPHP上.是一个简单的选择,在下面的例子中,我使用多个字段来尝试解释我的问题:>“field”是11.5>$PHPvar是1.15MySQL查询:好吧,我想要得到13.23.“field”*$PHPvar=13.225,所以使用round我应该得到13.23,对吗?怎么可能,当谈到使用“领域”时,我的结果是假轮?

  7. delphi – 浮点数转换恐怖,还有出路吗?

    :如果使用银行家规则,它应该给我总是1519672而不是1519671.我想必须有一些损坏的内存导致问题,SelectNextPage行只显示它.但是在三台不同的机器上会出现同样的问题.任何人都可以告诉我如何追踪这个问题?或者如何确保始终获得稳定的转换结果?

  8. delphi的取整函数round、trunc、ceil和floor

    总结以上是DEVMAX为你收集整理的delphi的取整函数round、trunc、ceil和floor全部内容。如果觉得DEVMAX网站内容还不错,欢迎将DEVMAX网站推荐给好友。

  9. c# – 在x64平台上Math.Round的性能显着下降

    当使用Math.Round转换double为int时,我注意到了一个非常显着的的性能下降,而x64与x86相比.我在Corei73770K上的64位Windows上进行了测试.有人可以重现吗?有没有什么好的理由呢?也许有些奇怪的边界条件?仅供参考,我将Math.Round与2个近似值进行了比较:条件转换和6755399441055744技巧.运行时间为:以下是基准代码:更新2016-11-23:安德烈·阿金欣在Andreynet/coreclrrepo上贴了一个question之后,被添加到了1.2.0的

  10. c# – 舍入单个

    解决方法我会认为您现有的解决方案是正确的.潜在的问题是,您希望根据其基数10表示来舍入数字,但您已将它们存储为基础2浮点数.所提供的2.135的例子是其中基数2表示与基数10不完全匹配的那些边缘情况之一.要获得预期的舍入行为,您必须将数字转换为基数10.最简单的方法正是您已经在做的:暂时将数字转换为十进制长度足以调用Math.Round.

随机推荐

  1. PHP个人网站架设连环讲(一)

    先下一个OmnihttpdProffesinalV2.06,装上就有PHP4beta3可以用了。PHP4给我们带来一个简单的方法,就是使用SESSION(会话)级变量。但是如果不是PHP4又该怎么办?我们可以假设某人在15分钟以内对你的网页的请求都不属于一个新的人次,这样你可以做个计数的过程存在INC里,在每一个页面引用,访客第一次进入时将访问时间送到cookie里。以后每个页面被访问时都检查cookie上次访问时间值。

  2. PHP函数学习之PHP函数点评

    PHP函数使用说明,应用举例,精简点评,希望对您学习php有所帮助

  3. ecshop2.7.3 在php5.4下的各种错误问题处理

    将方法内的函数,分拆为2个部分。这个和gd库没有一点关系,是ecshop程序的问题。会出现这种问题,不外乎就是当前会员的session或者程序对cookie的处理存在漏洞。进过本地测试,includes\modules\integrates\ecshop.php这个整合自身会员的类中没有重写integrate.php中的check_cookie()方法导致,验证cookie时返回的username为空,丢失了登录状态,在ecshop.php中重写了此方法就可以了。把他加到ecshop.php的最后面去就可

  4. NT IIS下用ODBC连接数据库

    $connection=intodbc_connect建立数据库连接,$query_string="查询记录的条件"如:$query_string="select*fromtable"用$cur=intodbc_exec检索数据库,将记录集放入$cur变量中。再用while{$var1=odbc_result;$var2=odbc_result;...}读取odbc_exec()返回的数据集$cur。最后是odbc_close关闭数据库的连接。odbc_result()函数是取当前记录的指定字段值。

  5. PHP使用JpGraph绘制折线图操作示例【附源码下载】

    这篇文章主要介绍了PHP使用JpGraph绘制折线图操作,结合实例形式分析了php使用JpGraph的相关操作技巧与注意事项,并附带源码供读者下载参考,需要的朋友可以参考下

  6. zen_cart实现支付前生成订单的方法

    这篇文章主要介绍了zen_cart实现支付前生成订单的方法,结合实例形式详细分析了zen_cart支付前生成订单的具体步骤与相关实现技巧,需要的朋友可以参考下

  7. Thinkphp5框架实现获取数据库数据到视图的方法

    这篇文章主要介绍了Thinkphp5框架实现获取数据库数据到视图的方法,涉及thinkPHP5数据库配置、读取、模型操作及视图调用相关操作技巧,需要的朋友可以参考下

  8. PHP+jquery+CSS制作头像登录窗(仿QQ登陆)

    本篇文章介绍了PHP结合jQ和CSS制作头像登录窗(仿QQ登陆),实现了类似QQ的登陆界面,很有参考价值,有需要的朋友可以了解一下。

  9. 基于win2003虚拟机中apache服务器的访问

    下面小编就为大家带来一篇基于win2003虚拟机中apache服务器的访问。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  10. Yii2中组件的注册与创建方法

    这篇文章主要介绍了Yii2之组件的注册与创建的实现方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下

返回
顶部