问题:
生产环境,由于存储文件太快,导致很快一个桶里百万文件,几个T的大小。
多级目录获取目录名是个问题,list_objects如果用recursive=true递归,当目录很多且级数多时,卡死掉。
通过客户端进入桶里,也会卡死。
但业务系统来调用minio接口,获取里面的文件,又没事,可以正常拿到。
解决方法:
核心思想:对客户端进行控制。
客户端查询时需要指定目录或文件名。即,需已经知道是哪个目录或哪个文件,再去查。而非遍历或递归minio的桶里的文件来获取目录名。所以需要对minio桶里的目录名进行管理。
参考:linux目录文件太多导致卡死 存储 minio dfs【实战】
对目录有个专门管理,例如将目录名存在某张表里。
原理
这就像在办公的时候,有人会用一个excel来存一些关键信息(例如文件名,目录名,项目名,重要人物的名字,等等),来提示自己。然后再去某个大的目录里(或磁区,或联络人,或大的excel)里去搜索。当然,有的人记忆好,他存在自己脑子里。
文件系统的设计参考现实中的事物。
很多设计都会来源于生活,例如token令牌。
SpringBoot 对Minio对象存储服务操作,关于多级目录如何操作_minio获取文件夹下的子目录文件名_yzcheng90的博客-CSDN博客