一、前言说明
本文主要介绍客户端(web,android,ios,小程序),服务端,对象存储端,三端的数据流链路。其中对象存储端不仅仅适用私有部署的minio,还适用公有云的对象存储,如阿里云,腾讯云,七牛云等云厂商提供的对象存储服务。
二、标准的对象存储互联网访问链路(推荐)
上传步骤介绍
1、客户端请求上传文件
2、业务系统调用对象存储获取临时凭证
3、对象存储返回临时凭证
4、业务系统将临时凭证返给客户端,一般还会附带上传的路径
5、客户端依靠临时凭证上传文件
6、上传完成后,对象存储应答客户端
7、客户端上传完成对象后,应答服务端。该步骤一般是调用业务操作接口
下载步骤介绍
8、客户端根据业务情况请求服务端
9、服务端从数据库拿到对象存储path后,调用对象存储,生成临时访问路径
10、对象存储服务器返回临时访问路径给业务服务器(一般有有效期限制)
11、业务服务端将临时访问路径返给客户端
12、客户端使用临时路径访问数据(过期之后图片将不能再访问)
三、对象存储写的变种访问(数据流经业务系统)
上传链路介绍
1、客户端将对象数据流和业务字段一起提交到业务系统
2、业务系统调用对象存储服务存储数据,
3、对象存储服务返回存储完成
4、业务系统响应客户端
(说明:1到2之间,或者3到4直接,业务系统要处理自己的业务,如保存数据库等操作)
优缺点分析
优点:
1、整体业务链看着变简单了,比较好直观的理解
2、对象存储服务器不用直接暴露公网写(这点在很多公司比较看中)
缺点:
1、业务接口中混合了对象流的传输,架构上形成耦合
2、数据流会在内网中被拷贝传输一次
3、在高并发场景,业务系统会因为处理数据流而成为瓶颈
四、对象存储读的变种访问(不设读访问权限,公有读)
读取链路分析
1、客户端请求业务系统,正常的业务查询
2、业务系统返回查询的数据给客户端,一般会包含对象的绝对访问地址
3、客户端使用绝对地址对对象存储服务器读取存储数据
优缺点分析
优点:
1、对于图片等对象数据,直接一个绝对地址即可访问,使用简单
2、读阶段业务系统与对象存储服务器完全解耦
缺点:
1、对象数据保密性较差,任何人拿到这个绝对地址都能访问
备注:
这种访问的选择视情况而定,要根据自己的业务情况来定
五、其他访问的变种形式
1、读的时候由业务系统转数据流给客户端
2、对象存储的读写皆不设置权限(公有读,公有写),这种只适合内网环境的对象存在,不适合应用在公网。因为是公有写,如果应用在公网,可以匿名写,那就是漏洞。