媒体存储按照对象名的UTF-8编码范围来进行自动分区管理,对系统进行水平扩展与动态负载均衡。如果您在上传大量文件时,在对象命名规则上使用了顺序前缀(如时间戳或字母递增顺序),有可能导致大量对象的请求访问集中于某个特定分区,造成访问热点。从而导致热点分区上的请求速率受限,出现访问时延上升的问题。
针对此类问题,我们建议您在为对象命名时使用随机前缀,让对象均匀分布在多个分区上。
例如:
您可能上传的对象文件名格式如下:
bucket_name/test-20230613/1.log
bucket_name/test-20230613/2.log
bucket_name/test-20230613/3.log
bucket_name/test-20230613/4.log
bucket_name/test-20230613/5.log
...
此时,我们建议您将对象计算hash值(即对象的md5),然后取md5中的前3-4个字符作为对象名的前缀。我们这里以3个字符为例,可以修改成如下形式:
bucket_name/d3b/test-20230613/1.log
bucket_name/fe2/test-20230613/2.log
bucket_name/94d/test-20230613/3.log
bucket_name/fa3/test-20230613/4.log
bucket_name/e3a/test-20230613/5.log
...