类似的问题和答案已经足够多了。然而,很少有人提到前缀。首先,不再需要前缀随机化,请参见此处
此S3请求率性能提升消除了之前随机化对象前缀以实现更快性能的任何指导。这意味着您现在可以在S3对象命名中使用逻辑或顺序命名模式,而不会对性能产生任何影响。
现在回到我的问题上来。我仍然感到“减速”,我不明白为什么
我的所有对象分布如下:
/foo/bar/baz/node_1/folder1/file1.bin
/foo/bar/baz/node_1/folder1/file2.bin
/foo/bar/baz/node_1/folder2/file1.bin
/foo/bar/baz/node_2/folder1/file1.bin
/foo/bar/baz/node_2/folder1/file2.bin
每个节点都有自己的前缀,然后是“文件夹”名称,然后是“文件”名称。每个“文件夹”中大约有40个“文件”。假设我有大约20个节点,每个节点下大约有200个“文件夹”,每个文件夹下大约有40个“文件”。在这种情况下,前缀由公共部分“/foo/bar/baz”、节点和文件夹组成,所以即使我并行上传所有40个文件,单个前缀的压力也是40,对吗?即使我从所有节点向每个“文件夹”上传40个文件,每个前缀的压力仍然是40。对吗?如果是,我怎么会得到“SlowDown”?如果没有,我应该如何处理它?自定义RetryStrategy
?为什么使用指数回退的DefaultRetryStrategy
不能解决这个问题?
EDIT001:这里解释一下前缀的含义
好的,在与AWS支持团队合作一个月后,在S3工程团队的协助下,简短的回答是,“随机化”是旧方式的前缀。长话短说,正如原始问题中的链接所述,它们确实提高了S3的性能,然而,您总是可以让S3屈服。关键是,它们在内部对bucket中排序的所有对象进行分区,分区作用于bucket前缀,并按照前缀的字典顺序对其进行组织,因此,不管怎样,当你把很多文件放在不同的“文件夹”中时,它仍然会对prefix的外部施加压力,然后它会尝试对外部进行分区,这时你会遇到“减速”。好吧,你可以通过重试来成倍地后退,但在我的情况下,5分钟的后退并没有奏效,那么最后的办法是在前缀前面加上一些随机标记,最好是均匀分布的。就是这样。在攻击性较小的情况下,S3工程团队可以检查您的使用情况并手动划分存储桶(在存储桶级别完成)。在我们的情况下不起作用。
不,没有钱可以购买每个前缀的更多请求,因为,我想没有实体可以支付亚马逊重写S3后端。
2020年更新:好吧,在对S3前缀实施随机化之后,我只能说一件事,如果你努力尝试,随机化不会有帮助。我们仍在放缓,但不像以前那样频繁。除了重新安排失败的操作以便以后执行之外,没有其他方法可以解决此问题。
还有一个2020年的更新:呵呵,你对你的bucket所做的列表请求的数量阻止了我们对bucket进行正确的分区。英雄联盟
我正在从事一个项目,其中读/写请求的数量随着数据大小的增加而增加。但在测试50GB数据时,我们对s3发出了非常高的读/写请求,s3抛出了“请降低您的请求率”错误。我们无法选择减少请求的选项,所以是否有任何可能的方法可以更灵活地使用s3来避免此问题。任何帮助都将不胜感激。
我有一个具有OAuth2授权的Spring Cloud应用程序: 我添加了这个安全配置: github:https://github.com/rcbandit111/OAuth2/blob/master/src/main/java/org/engine/security/WebSecurityConfig.java 打开Angular应用程序时,出现访问错误: 您知道我需要应用什么配置才能在没有强
本文向大家介绍Oracle Database 降低,包括了Oracle Database 降低的使用技巧和注意事项,需要的朋友参考一下 示例 LOWER将字符串中的所有大写字母转换为小写。 输出: 文本 你好,world123!
问题内容: 我尝试了python 请求库文档中提供的示例。 使用,我得到了响应代码,但是我想获得所请求的每个页面的内容。例如,这不起作用: 问题答案: 注意 下面的答案是不适用于请求v0.13.0 +。编写此问题后,异步功能已移至。但是,你可以将其替换为下面的内容,它应该可以工作。 我已经留下了这个答案,以反映原始问题,即有关使用请求的问题。 要异步执行多个任务,你必须: 为每个对象定义一个函数(
一个应用的请求是用 yii\web\Request 对象来表示的,该对象提供了诸如 请求参数(译者注:通常是GET参数或者POST参数)、HTTP头、cookies等信息。 默认情况下,对于一个给定的请求,你可以通过 request application component 应用组件(yii\web\Request 类的实例) 获得访问相应的请求对象。在本章节,我们将介绍怎样在你的应用中使用这个
Wiki ▸ [[API--中文手册]] ▸ [[核心函数]] ▸ 请求 如果你不访问数据那么你就不能可视化它。幸运的是有很多的方法可以把数据放到浏览器中。对于小数据集,你可以硬编码到你的脚本里,或者使用数据属性嵌入到DOM中。对于大数据集,你可以引用外部脚本并定义你的数据为一个全局变量。(JSONP就是一个常见的例子)。最通用的方式是使用XMLHttpRequest, 或说XHR加载数据到浏览器