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

来源:7-3 编码实战:Go访问管理Ceph集群

qq_青年早报_0

2019-06-29

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

写回答

2回答

weibo_隱懓_0

2020-03-31

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

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

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

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

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


0
2
weibo_隱懓_0
回复
qq_青年早报_0
但是API是有限的,比如如果对文件进行额外的处理就不行了。比如上传图片ZIP包,要求检验包内图片合法性,或者对文件二次处理,这些都要在本地化基础上进行的。当然如果就单一满足API的业务场景怎么传都可以。
2020-03-31
共2条回复

xiaomo

2019-06-29

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

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

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

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

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

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

0
0

Go实战仿百度云盘-实现企业级分布式云存储系统

紧随“云时代”技术潮流,分布式云存储系统,做第一代云程序员

1077 学习 · 494 问题

查看课程