前段时间,一个朋友找我聊“自研通用存储“的话题。他带了一个10多人的存储团队。目前已有的存储产品是一个针对XXXXX数据存储。无论是设计还是接口,都完全是针对这个特定的场景来做的。如果就在这个方向上一直迭代,能满足公司内部的需求,也已经足够养活一个团队了。
然而他们出去谈项目的时候,经常遇到通用存储的需求。例如客户会问,你们这个支持对象吗?支持文件吗?支持块吗?基于这个背景,他们打算组建通用存储开发团队。由于通用存储方面经验不足,于是就各方咨询取经,各方调研。以下是一些大概的结论,也算不得什么秘密,这里总结一下给需要的朋友一些启发。
以下从技术路线、开源存储、团队规模以及战略制定几方面展开来讲。
技术路线可选项有:
1)自研,一般大厂或者比较专业的一些公司走这条路线。
2)基于CEPH开发,有一些公司在CEPH上耕耘很久,吃的比较透,有能力基于CEPH做大的改动和优化。
3)基于CEPH维护,小团队,技术能力稍不足的可以基于CEPH维护,解决一些日常问题。
4)基于GlusterFS开发,除了CEPH之外GlusterFS也是一个不错的选择。
开源存储调研
1)CEPH
a) 优点)主流开源存储系统、功能强大、支持完善的NFS能力,成熟度高,功能稳定;统一存储,支持文件、对象、块三种接口;支持arm 64位平台,易于扩展。
b) 缺点)体积庞大、资源占用过多、硬件要求高;设计复杂、针对HDD设计、性能不高,小文件性能尤差,写放大严重;维护成本高,代码量庞大,100万行以上,且都是C++,代码晦涩、维护艰难。
2)GlusterFS
a) 优点)无中心节点设计,统一命名空间,堆栈式设计;支持纠删码和副本,文件功能稳定;社区资料丰富,易于学习和维护。
b) 缺点)代码量较庞大,50万行以上,社区活跃度不高;不支持对象及块功能;
3)minIO
a) 优点)支持S3接口,对象功能强大;实施部署容易,使用简单,维护方便;支持X86,arm,云,容器等多种环境,属于热点产品,社区活跃。
b) 缺点)只支持对象方式,不支持文件和块。
4)FastDfs
a) 优点)设计简单,架构清晰,文件功能简单稳定;接口形式简单,小文件性能优秀;代码量小,6万行左右,易于上手维护。
b) 缺点)仅支持简单的文件功能,不支持其他接口类型;仅支持副本模式,不支持纠删码;文档不够完善,无长远规划,社区能力非常有限。
从团队规模上来讲,大厂基本几百上千人的力量投入。小一点的厂商,多的在100人,少的在30~50人,更少的比如基于CEPH维护的,十几人。那这位朋友的团队也是十多人的样子,都没有通用存储软件的开发经验。
经过一系列调研。这位朋友认为,需要在现有的团队基础之上,招募2人具有丰富通用存储研发经验的人员,构建10人+的通用存储研发团队。由于人力资源问题,基本技术路线就是基于CEPH维护。经过一段时间的摸索,需要掌握CEPH的设计原理、基础架构、深入研究一些核心模块。然后具备交互、维护、BUG定位和定制化开发的能力。最后基于CEPH构建并提供统一存储产品。
云和恩墨 张洋 2021.9.12
领取专属 10元无门槛券
私享最新 技术干货