Performance Azure-如何同时将同一blob上的性能提高3000-18000个用户?

Performance Azure-如何同时将同一blob上的性能提高3000-18000个用户?,performance,azure,blob,Performance,Azure,Blob,Azure-如何提高3000-18000个客户端在5分钟内下载的同一个blob下载的性能?(无法使用CDN,因为我们需要文件在SAS中是私有的) 要求: 我们不能使用CDN,因为文件或“blob”需要是私有的。我们将在所有同步下载请求上生成SAS密钥 文件/blob将是在考试开始前24或48小时上传的加密考试。 -在考试开始前的5-10分钟内,在同一开始时间下载3000-18000次 172–1000个水滴。大小(53 K字节–10 M字节) 我们有一个web服务来验证学生信息、pin、考试日

Azure-如何提高3000-18000个客户端在5分钟内下载的同一个blob下载的性能?(无法使用CDN,因为我们需要文件在SAS中是私有的)

要求:

  • 我们不能使用CDN,因为文件或“blob”需要是私有的。我们将在所有同步下载请求上生成SAS密钥
  • 文件/blob将是在考试开始前24或48小时上传的加密考试。 -在考试开始前的5-10分钟内,在同一开始时间下载3000-18000次
  • 172–1000个水滴。大小(53 K字节–10 M字节)
  • 我们有一个web服务来验证学生信息、pin、考试日期/时间是否正确。如果正确,则生成URI和SAS
  • Azure网站表示,单个blob只有480 Mbit/s
  • 但Azure网站的另一部分提到20 Mbit/秒时高达20000转/秒
想法

  • 水滴的快照会有帮助吗?
    • 我认为只有当您知道源blob在下载过程中正在更新时,快照才有帮助
  • 特优会有帮助吗?
    • 我认为premium只是意味着它存储在SSD上的价格要高于美元),但我们需要更多的带宽,而且许多客户端都会遇到相同的问题
  • 创建50份同样的考试会有帮助吗?
    • 然后通过文件的每个副本旋转每个客户端浏览器
在AZURE论坛上列出
复制。但是,不要轮换,而是给客户一个列表,让他们随机挑选。如果第一个请求失败,这也会让它们退回到另一台服务器

我会使用Redis缓存将blob缓存在内存中,而不是将blob用作源。在Azure中,您可以启动适合卷大小的Redis缓存。那么您就不受blob服务的限制了

当请求第一个文件时
1.检查Redis缓存中的文件。
a.Found-从缓存中提供文件。
b.Not Found-从blob中获取文件并放入缓存。提供文件

下一个请求将使用缓存中的文件,释放azure blob存储

这比在blob存储上复制文件要好,因为您可以在Redis缓存中设置过期时间,它会自行清理


您可以将SAS密钥与CDN一起使用,前提是您将为所有用户使用相同的SAS密钥,并且不会为每个用户生成唯一的SAS。如果您希望用户在5-10分钟内到达,那么您可以生成一个15分钟的SAS,并将其与CDN一起使用。只需确保还将blob上的缓存TTL设置为SAS指定的相同持续时间,因为CDN实际上不会验证SAS权限(无论何时CDN必须从源站获取对象,blob存储都会对其进行验证)。有关更多信息,请参阅

Jason建议使用多个blob也是一个很好的解决方案


您还可以启动多个Webrole实例,并在这些实例上本地托管文件,然后不向用户发送SAS URL(非授权用户可以使用该URL),您可以实际验证用户身份并直接从Webrole提供文件。如果您的所有流量都在10分钟内,那么您可以增加数百个实例,并且成本仍然很低。

如何从缓存中提供文件?通过客户端对Web角色的请求?如果是,那么为什么首先将文件放在缓存中,为什么不将文件放在web角色的本地存储中?缓存并不是真正用于10 MB对象的,您最终将被序列化,性能将受到影响。@K我的建议是将文件保留在内存中,不要在azure blob存储或工作角色上使用磁盘。我认为工作人员角色也会遇到提问者可能遇到的磁盘限制。好的,那么你可能想修改你的答案,说是在内存中,而不是在redis缓存中,因为Azure redis缓存不在内存中,它是一个远程redis缓存服务器。嗯,当我有时间工作的时候,我会用你的Redis缓存链接做一个测试,看看它是否有效。谢谢,有很多想法可以尝试。我们需要CDN文件在10小时内过期?我看到他们违约7天后到期。还有一些MSDN页面说CDN文件需要很长时间才能删除。我尝试了使用SAS的CDN,但安全性失败,因为我能够在没有SAS密钥的情况下下载文件。还是我的CDN安全设置有误?我们需要将文件锁定在CDN中。仅允许具有有效SAS的用户下载。您可以使用缓存控制标头将CDN过期时间设置为所需的长度,一旦过期,它将立即生效(不确定您所说的长时间删除是什么意思)。确保在CDN选项中启用了查询字符串,否则您将获得您看到的行为,您可以在不使用SAS的情况下访问文件。