/yfs

:house:基于Atomix实现的超精简分布式对象存储

Primary LanguageJavaApache License 2.0Apache-2.0

Join the chat at https://gitter.im/chengdedeng/yfs

YFS

YFS是基于Atomix实现的分布式对象存储,类似于Swift。YFS目标是成为高度可伸缩且安全可靠的对象存储服务,实现海量文件的存储、备份和归档。很多企业都有大量牵涉到商业机密信息的文件需要存储,考虑到安全等诸多因素,一般企业是不愿意放到公有云存储上的,所以就有了YFS的诞生。

YFS在分布式一致性上基于Raft协议,Atomix的前身Copycat是其中非常优秀的实现,它在ONF的产品中已经得到了充分验证。

环境及编译

  1. JDK8及以上、maven3
  2. mvn package -Dmaven.test.skip=true
  3. yfs-gateway/target/yfs-gateway-.zip和yfs-store/target/yfs-store-.zip就是部署文件

Quick Start

为了能够快速搭建YFS整套环境,非常有必要简单阐述下YFS的架构设计,这对于快速上手该项目非常有帮助。

architecture

从上图可知YFS由Gateway和分组的Store两部分组成,Gateway主要负责路由、鉴权、流控、安全等非存储功能,Store主要负责存储。每个Group至少由三个Store节点 组成,这三个Store所存储的数据一模一样,也就是说每个文件至少有三个备份。Gateway也至少有三个节点,Store节点会自动上报metadata给Gateway,Gateway根据Store节点上报的信息来调整自己的路由策略。由于使用Raft来解决分布式数据一致性的问题,所以都最少要求三个点。根据2n+1的原则,所以不论是Gateway还是Group中的Store节点在写入数据的时候,最多只能允许一个节点宕机;但是读操作只要还有一个健康节点,就可以成功返回。