minio在实际工作项目中的应用

1.应用系统架构

minio在实际工作项目中的应用_第1张图片
整个架构中,模块之间使用http协议通信,并且每个模块的作用如下:
1)Web/API服务器的作用是提供UMS系统的认证和鉴权,即验证Web客户端或者开发者API请求接口的合法性;
2)文件管理服务器的作用是提供对外操作minIO服务器的接口,根据目前UMS系统的业务需求,只提供了获取上传文件presignedURL,设置过期时间, 设置对外访问
策略,创建存储桶,生成下载文件URL的功能;那么什么是presignedURL呢?它是对象所有者使用自己的安全凭证来创建预签名的 URL,以授予有限时间内的上传或下
载对象权限,从而与其他用户共享对象,注:即使是私有对象使用presignedURL也可以共享给他人,并且presignedURL最大有效期为7天。
其中文件管理服务器获取上传文件presignedURL的方法直接使用了minIO官方API,当然你也可以自己实现presignedURL方法,此外,由于下载presignedURL最大保留时间为7天,不符合UMS系统业务需求,所以,文件管理服务器自己实现了一个生成下载URL的方法,此链接的过期时间可任意设置,但前提要把存储桶的对外访问策略设置为public。由此,客户端就可以直接使用上传presignedURL上文件到minIO服务器,使用下载链接直接下载文件即可。
3)minIO集群作用是存储实体文件,该集群采用去中心化无共享架构,各节点间为对等关系,连接至任一节点均可实现对集群的访问,minIO集群前端增加了Nginx实现反向代理;minIO节点之间的通信使用的都是rpc。此外,管理minIO服务器除了上面提到的SDK以外,官方还提供了命令行和web页面的形式,内容分别如下:

1.# minIO Client (mc)为ls,cat,cp,mirror,diff,find等UNIX命令提供了一种替代方案。它支持文件系统和兼容Amazon S3的云存储服务(AWS Signature v2和v4)  
2.$ wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc  
3.$ chmod +x mc  
4.$ ./mc -h  
5.ls       列出文件和文件夹。  
6.mb       创建一个存储桶或一个文件夹。  
7.cat      显示文件和对象内容。  
8.pipe     将一个STDIN重定向到一个对象或者文件或者STDOUT。  
9.share    生成用于共享的URL。  
10.cp       拷贝文件和对象。  
11.mirror   给存储桶和文件夹做镜像。  
12.find     基于参数查找文件。  
13.diff     对两个文件夹或者存储桶比较差异。  
14.rm       删除文件和对象。  
15.events   管理对象通知。  
16.watch    监视文件和对象的事件。  
17.policy   管理访问策略。  
18.config   管理mc配置文件。  
19.update   检查软件更新。  
20.version  输出版本信息

把Nginx代理ip和端口号或者minIO集群中任意节点的ip和端口号输入浏览器,输入minIO的账户名和密码即可登录,界面如下:
minio在实际工作项目中的应用_第2张图片

2.具体交互逻辑

minio在实际工作项目中的应用_第3张图片
首先,客户端要请求业务服务器(WebServer/APIServer)获取上传文件的凭证(presignedURL),然后,业务服务器响应一个上传文件URL和下载文件的URL,客户端使用上传URL上传文件到文件服务器,使用下载URL作为请求后端的文件参数,如发送邮件消息支持上传本地图片,上传到后端的图片即可使用文件下载URL作为参数。

该方案的优点如下:

  • 客户端直接上传文件到minIO服务器,不经过业务服务器,减轻业务服务器的压力,提高可用性
  • 数据库服务器只存储文件的下载URL,减少数据库的存储量
  • 支持上传超大文件,比如3G以上等,硬件性能足够的情况下,minIO服务器单个文件最大可达5T
  • 上传文件的数量没有限制
  • 可以解决同名文件覆盖问题
  • 可以适配任何兼容S3协议的文件服务器,满足不同客户的要求

    以上内容来自于文章:

    极光笔记丨搭建UMS私有云文件服务器

你可能感兴趣的:(minio在实际工作项目中的应用)