前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Numpy验证Google GRE的随机选择算法

使用Numpy验证Google GRE的随机选择算法

作者头像
大江小浪
发布2018-07-24 16:34:54
8490
发布2018-07-24 16:34:54
举报
文章被收录于专栏:小狼的世界

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

代码语言:javascript
复制
# 使用 numpy 模拟 GRE 中的随机选择算法,并使用 pyplot绘图

import numpy as np
from numpy import random

r = 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] = 0

height = []
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%左右。

本文为作者原创。

参考资料: 1、SRE Google 运维解密 2、Python中plt.hist参数详解 3、Matplotlib 4、彻底解决matplotlib中文乱码问题 5、numpy中的随机数模块

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档