加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

什么是基于2种类型变量(在php中)实现加权随机选择的最佳方法?

发布时间:2020-12-13 21:34:43 所属栏目:PHP教程 来源:网络整理
导读:基本上我的困境就是这个.我有一个托管文件的x服务器列表.还有另一台服务器,它托管网站的 mysql数据库和应用程序.当文件上传(到前端服务器)时,应用程序检查哪个服务器上有最多可用空间,并将文件移动到那里.如果您从2个具有相同可用空间量的空服务器开始,这可
基本上我的困境就是这个.我有一个托管文件的x服务器列表.还有另一台服务器,它托管网站的 mysql数据库和应用程序.当文件上传(到前端服务器)时,应用程序检查哪个服务器上有最多可用空间,并将文件移动到那里.如果您从2个具有相同可用空间量的空服务器开始,这可以正常工作.如果你稍后将另一台服务器引入混合……它将拥有比当前服务器更多的可用空间,这种方法不是那么有效,因为所有新文件都会被遗忘地上传到新服务器,这会超载因为它将处理大部分新流量,直到它在可用空间方面赶上其余的盒子.

所以我想引入一个加权系统,这将有助于规范化文件的分发.因此,如果3个服务器各自设置为33%,并且1个服务器具有更多的可用空间,则它仍然会获得比其他服务器更多的上载(即使它具有相同的权重),但是负载将分散在所有服务器上服务器.

任何人都可以建议一个良好的PHP实现这个?

解决方法

一种方法是在所有具有容纳文件空间的服务器上汇总所有可用空间(因此显然可以排除具有可用空间但不足以容纳文件的服务器).然后确定每个服务器占用的空间百分比(因此新服务器将占比例更大的百分比).使用随机数并将其与百分比对齐以确定要选择的服务器.

例如,考虑使用具有以下可用空间级别的五台服务器:

Server 1:   2048MB
Server 2:  51400MB
Server 3:   1134MB
Server 4: 140555MB

您需要存储1500MB的文件.这使得服务器3无法运行,为我们留下了194003MB的总可用空间.

Server 1:  1.0%
Server 2: 26.5%
Server 4: 72.5%

然后,您可以选择0到100之间的随机数:40

Numbers between 0 and 1 (inclusive) would go to Server 1
Numbers > 1 and <= 26.5 would go to Server 2
Numbers > 26.5 and <= 100 would go to Server 4

所以在这种情况下,40意味着它存储在服务器4上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读