什么是基于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上. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |