博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Numpy验证Google GRE的随机选择算法
阅读量:5918 次
发布时间:2019-06-19

本文共 869 字,大约阅读时间需要 2 分钟。

最近在读《SRE Google运维解密》第20章提到数据中心内部服务器的负载均衡方法,文章对比了几种负载均衡的算法,其中随机选择算法,非常适合用 Numpy 模拟并且用 Matplotlib 画图,下面是我的代码:

# 使用 numpy 模拟 GRE 中的随机选择算法,并使用 pyplot绘图import numpy as npfrom numpy import randomr = random.randint(1,301,size = (300,225) )a = {}for i in r:    for j in i:        if(j in a.keys()):            a[j] = a[j] + 1        else:            a[j] = 0height = []z = a.values()for i in z:    height.append(i)height.sort()x = np.arange(1,301)plt.bar(x,height)plt.axis([0,301,0,280])plt.grid(True)plt.title("75%子集,225个后端")

整个模拟的思路就是首先随机生成一个二维数组,然后再统计每台服务器被选中的次数,并对次数排序并画图,然后就能够出来书中的图的样式。整个代码感觉还是有些繁琐,如果有更好的想法的朋友,欢迎与我沟通改进。

刚开始还想用直方图来绘制,仔细看了之后发现图上的并不是直方图,直方图能够反映每台前端连接后端服务器的分布情况,但是未经过排序,所以无法明显的看出最大和最小的区别。所以要对数据做一下处理,排序后再重新做图。

我按照三个参数模拟了一下,感觉随机选择算法不管子集的大小如何,负载的情况都不是很均衡。子集小的情况下,能够偏出平均值50%,子集大的时候(75%)仍能偏出平均值15%左右。

39469-20180404112753811-250894648.png

39469-20180404112802212-846524274.png

39469-20180404112809119-2024751661.png

本文为作者原创,如果您觉得本文对您有帮助,请随意打赏,您的支持将鼓励我继续创作。

39469-20170825142904777-1467390737.png

参考资料:

1、
2、
3、
4、
5、

转载地址:http://ugfvx.baihongyu.com/

你可能感兴趣的文章
认识CoreData - 基础使用
查看>>
深入理解Solidity之源文件及合约结构——Solidity中文文档(4)
查看>>
拥抱大健康,瞄准第一股
查看>>
pyhanlp 停用词与用户自定义词典功能详解
查看>>
比特币交易费用创新低的背后:交易量下降了68%
查看>>
前端自动化构建工具webpack简单入门——2
查看>>
MySQL面试题--常见的四种隔离级别
查看>>
企业级 SpringBoot 教程 (一)构建第一个SpringBoot工程
查看>>
玩转大数据系列之一:数据采集与同步
查看>>
hikari druid c3p0 dbcp jdbc对比
查看>>
interview questions
查看>>
SpringMVC的执行流程
查看>>
定位、读取手机状态等权限在6.0系统不管用
查看>>
FTP服务器开发
查看>>
CDN WAF功能开放公测 提升网络应用安全性能
查看>>
vivo Y51的USB调试模式在哪里,开启vivo Y51USB调试模式的教程
查看>>
zip压缩与解压
查看>>
hibernate,get,find,缓存,hibernate缓存
查看>>
DataTable排序,检索,合并详解
查看>>
ClusterwarePRCT-1011:Failed to run "oifcfg".Det...
查看>>