请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

为什么本地存储和Ceph集群都要写入一份数据呢?

直接往ceph集群写不就可以了吗,而且不用写完之后再转移

正在回答 回答被采纳积分+3

2回答

weibo_隱懓_0 2020-03-31 17:13:37

我补充一点,因为如果服务独立这个角度来看,直接透传ceph不合适,在大规模公司ceph是独立维护的

  1. 文件的校验和后续对文件的操作因为不在本地没法执行

  2. 分块上传无法执行,因为你不可能去ceph上进行合并数据

  3. 今后如果增加或更换存储对客户端暴露接口太多了,试想传一个文件还需根据后端存储目标的多少调用不同的接口多可怕。还是后端进行统一存储比较好

至于老师这里的ceph采用的RGW的形式进行调用ceph, 其实如果用cephFS来存储的话,挂载到本地磁盘,那就相当于在本地存一份数据了。因为是本地挂载,所以可以对文件进行上面的分块之类的文件操作了


0 回复 有任何疑惑可以回复我~
  • 提问者 qq_青年早报_0 #1
    不是吧,ceph rgw是兼容S3协议的呀,后端只要兼容S3协议, 无论是ceph,还是minio什么的,API都是兼容的,分块上传当然支持了。 文件校验也是可以的:https://aws.amazon.com/cn/premiumsupport/knowledge-center/data-integrity-s3/
    回复 有任何疑惑可以回复我~ 2020-03-31 17:32:49
  • weibo_隱懓_0 回复 提问者 qq_青年早报_0 #2
    但是API是有限的,比如如果对文件进行额外的处理就不行了。比如上传图片ZIP包,要求检验包内图片合法性,或者对文件二次处理,这些都要在本地化基础上进行的。当然如果就单一满足API的业务场景怎么传都可以。
    回复 有任何疑惑可以回复我~ 2020-03-31 21:56:12
xiaomo 2019-06-29 22:51:11

同学你好,可以这么实现的,只不过实现的逻辑就不太一样了, 一般可以这样做:
1)客户端向后端api获取ceph的上传入口url;

2)客户端上传文件到ceph集群;

3)客户端调用后端api,通知后端服务已经完成文件上传;

4)后端服务请求ceph接口验证文件是否已经完成上传;

5)后端服务更新用户文件信息;

6)后端服务响应客户端,最后返回文件已经上传的相关信息。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信