当前位置:网站首页>企业级存储发展趋势谈:开源存储的冷思考
企业级存储发展趋势谈:开源存储的冷思考
2022-06-10 18:48:00 【阿明观察】

很多年之前,
业内就讨论过
开源与自研的关系,
孰轻孰重,
孰好孰坏,
到现在也还没有定论。
开源软件蓬勃发展,为何机遇与挑战并存?
事实上,我们很多行业似乎都离不开开源软件了。为什么呢?开源造就了多个产业的发展,已经成为了当前不少行业创新的重要途径。
Synopsys公司2020年研究数据显示,99%的商业软件含有开源组件,75%则直接由开源代码组成。开源软件的使用不断增多,在云计算、大数据、人工智能、工业互联网等新兴领域,开源软件已成为重要的创新发展模式。
从中国对于全球开源软件的整体贡献情况来看,2021年7月,国家信息安全发展中心副主任董大健分析指出,中国开源代码贡献已经占全球40%左右,国家“十四五规划”也首次加入了开源体系建设的相关发展要求。不过,他同时也指出,开源体系也具有一些系统性的问题和风险。
尽管开源软件存在一定的问题与风险,但大家对于开源应用与开发的兴趣依旧浓厚,因此,国内外对于开源的安全性研究也十分重视。美国WhiteSource公司发布的《2019年开源组件安全漏洞现状报告》显示,2019年公开的开源软件漏洞数量已增至6000多个,增幅近50%;而后在其2020年发布的《开源安全年度报告》显示,平均每1000行开源代码中就有14个安全漏洞,每1400行开源代码中就有1个高危安全漏洞。
2021年底,国家信息中心公共技术服务部王晓冬在《我国开源软件产业面临的突出风险及对策研究》一文中分析指出,我国开源软件产业存在断供、代码安全、知识产权、自主创新等风险。
理性认识开源存储,到底哪里好哪里不好?
事实上,开源带动了存储初创科技公司的诞生,带动了与存储相关的开源生态的发展。基于开源软件构建存储产品的厂商,与开源社区相辅相成,相互促进,共同发展。开源项目也吸引了资本的兴趣,在资本与开源社区加持下,这类存储厂商也开始了开源项目的商业化之路。
然而,企业级存储厂商的开源商业化之路来得还是不容易的,从分布式存储软件的开源发展与现状来看,目前主流的开源软件主要包括Ceph、HDFS、Swift、Lustre、GlusterFS等。
其中,按照存储类型来划分,Ceph属于融合块、对象、文件于一体的统一存储, HDFS、Lustre、GlusterFS归属于文件存储类,Swift是OpenStack开源云计算项目的子项目之一,属于OpenStack Object Storage对象存储。Ceph与GlusterFS的齐头并进,将中国的开源存储发展推向了新的阶段,对于云计算与软件定义存储的发展贡献了一定的力量。当前来看,Ceph的开源存储支持者比较多,社区建设更为庞大,开发者贡献频率也相对较高。
从开源存储的整体发展优势来分析,因为社区开发者与开发团队贡献的代码多,各自有所专长专注的功能领域,迭代自然更快。
同时,因为代码开源,只要是社区组织中的成员,遵循一定的规则,代码就都可以拿来使用,必然存在开发成本优势。
建设开源社区的同时也就是在建设开源生态,这是来自全球开发者的贡献地。每一位社区成员与社区组织本身都在开源生态的共同作用下,不断推动开源存储软件的应用与对外交付。由此可见,开源存储软件的整体生态还是非常强大,行业影响力也在不断深入。
然而,存储软件面临的商业化挑战,不是一时半会儿可以解决的。坚持自研路线的存储厂商,如曙光、华为等经历了数十年之久的技术积累,如果开源存储软件短时间内就能搞定,这说明了什么?值得冷静思考一下。
站在用户需求的角度来看,分布式存储的发展正确路线应该是如何实现容量、性能、可用性、可靠性、可伸缩性这五点的平衡。对于开源存储软件而言,Scale-out架构带来的存储容量上的灵活扩展能力,加上闪存与大容量硬盘技术的迅猛发展,让存储系统的性能也能获得足够高的表现,同时也实现了很好的伸缩性。然而在可用性与可靠性上,都需要进一步的优化与提升。
在稳定性方面,开源社区处于一个开放的生态中,不是一批人或某一个开发团队写的代码,对软件架构设计的理解参差不齐,开发逻辑可能不一致,不稳定因素及安全隐患风险更大。代码程序及产品软件存在缺陷是不可避免的,在不同的阶段发现缺陷并进行修正,对于代码稳定性的影响程度不同,付出的成本也不同。据相关统计数据估计,在软件测试、发布阶段纠正缺陷的成本是编码阶段发现并纠正缺陷的成本的15-90倍,如果在交付用户之后才发现并解决缺陷,这个数字将达到50-200倍。因此,任何安全隐患都可能造成巨大的损失。而对于开源社区代码而言,由于其开放性和庞杂性,导致很难有社区开发者将开源存储代码进行完整的测试。基于开源存储软件构建的商业化产品,如果不能对100%的源代码进行测试,那么这就可能为用户交付稳定可靠的存储系统埋下了不少隐患。
在整体服务质量方面,因为开源带来的Bug问题逐年递增,如何真正解决实际应用中的Bug问题,对开源存储厂商的技术能力有着不同程度的挑战。厂商研发实力强大,自然对于用户的服务质量就高,厂商研发实力弱一些,带给用户的服务质量就存在“折扣”。可见,每一次开源存储软件的交付,都是对开源存储厂商的技术考验。
此外,在大规模部署的时候,开源存储的稳定性和可用性存在一定的挑战。以Ceph为例,其商业化存储有不少案例,但直接使用开源Ceph构建数十PB甚至上百PB的大规模案例,到目前几乎没有。
当然,这里需要值得注意的是,自主研发的商业化存储软件,也不意味着所有代码模块都是封闭的。庞大的系统化工程中,必然会借鉴、改进或采用少量开源框架或组件,同样也会因为开源组件引入而潜藏安全漏洞。
存储软件自主研发的根本主要聚焦在四个方面:
一是,整体的架构设计;
二是,核心数据通路的构建;
三是,从底层到上层的各个关键模块的软件设计及编码实现 ;
四是,系统的安全性等,即自主研发意味着厂商对于存储系统的功能、性能、可靠性等具有完全控制权,做到系统整体性上的自主,同时通过完备的单元测试、系统测试、产品测试,结合白盒测试、灰盒测试、黑盒测试等手段,交付高质量的产品,将用户的应用风险降到最低。
用户做存储选型,到底是开源还是自研?
全球存储观察分析认为,开源与自研好比硬币的正反面,都有其存在的价值。根据不同场景与应用需求,按照用户自身技术开发的能力高低选择,这才是理性的解决之道。

从性能、可靠性、稳定性、备份容灾等角度考量,用户在面对核心业务应用场景的方案选择时,对开源存储一直都比较谨慎。特别是用户本身运维团队比较薄弱的情况下,将面临后续软件维护、更新迭代等一系列技术挑战。因此,在核心业务、生产系统和大规模部署情况下,用户选择存储系统的观念依然“保守”,自研存储系统依然是其首选。
从另一方面来看,对于具备一定数量的存储开发人员,或具有存储软件领域开发背景的用户来说,自身具备对开源存储软件的代码修改、优化与调试的综合能力,甚至团队成员可能就是某些开源社区的贡献者。在这种情况下,借助存储开源软件,便于配合业务创新应用的发展趋势下,可获得更为快捷、灵活的应用部署。由此可见,倘若企业用户的存储软件开发能力强,选择开源创新不失为一条符合产业发展的好路径。
对用户而言,存储选择到底是开源还是自研产品,需要考虑到企业自身的综合成本,包括自身应用部署后的数据安全性要求,存储软件开发与运维人员成本,自身存储实际应用过程中解决问题的服务质量。当然,数据安全、运维成本与服务质量,对于任何一个开源存储厂商而言,也是值得重视的三大问题。
从存储应用角度出发,开源与自研已经成为了企业级存储发展的两大趋势,好比人的左手与右手。企业用户到底会用左手多一些,还是用右手多一些,只在于企业自身的技术能力与实际应用需求。有时候左右手一起上,也不是没有可能。一切皆有可能,当然最大的可能还是在于自身的技术开发能力到底有多少可能。
对于“开源存储+自研存储”的融合发展模式,有多少企业用户会真的开启,我们也可以拭目以待。
(by Aming)
- END-
你
怎
么
看
?
欢迎文末评论补充!
【全球存储观察 | 科技明说】专注科技公司分析,用数据说话,带你看懂科技。本文和作者回复仅代表个人观点,不构成任何投资建议。
边栏推荐
- Analyse du code source de Tencent libco CO CO - Process open source library
- 【C语言进阶】指针的进阶【中篇】
- An error row size too large (& gt; 8126) occurs when MySQL's MyISAM engine switches to InnoDB
- [web] personal homepage web homework "timetable", "photo album" and "message board"
- 今年高考期间各考点秩序井然,未发生影响安全的敏感案事件
- 长颈鹿的脖子变长其实不是因为吃高处的树叶?科学家在1700万年前的化石中找到答案
- 如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储
- 【C语言进阶】数据的存储【上篇】【万字总结】
- VR全景如何应用在家装中?体验真实的家装效果
- 【C语言】还搞不明白结构体吗?不妨来看看这篇文章,带你初步了解结构体
猜你喜欢

深入理解LightGBM

APICloud可视化开发新手图文教程

Source code analysis of Tencent libco collaboration open source library (III) -- Exploring collaboration switching process assembly register saving and efficient collaboration environment

【C语言】一不小心写出bug?凡人教你如何写出好代码【详解vs中调试技巧】

如何查询 SAPGUI 屏幕上某个字段对应的数据库表存储

100003字,带你解密 双11、618电商大促场景下的系统架构体系

腾讯Libco协程开源库 源码分析(三)---- 探索协程切换流程 汇编寄存器保存 高效保存协程环境

After the college entrance examination, VR panoramic tour will show you the beautiful scenery of the scenic spot

Deep understanding of lightgbm

SAR图像聚焦质量评价插件
随机推荐
Mongodb 唯一索引
Esp8266 system environment setup
详细解读TPH-YOLOv5 | 让目标检测任务中的小目标无处遁形
MySQL数据库设计概念(多表查询&事务操作)
Apicloud visual development novice graphic tutorial
Basic improvement - tree DP supplement
Office technical lecture: punctuation - Chinese - Daquan
一文带你了解J.U.C的FutureTask、Fork/Join框架和BlockingQueue
改变世界的开发者丨玩转“俄罗斯方块”的瑶光少年
如何在VR全景作品中添加独立热点?
2022.05.29 (lc_6079_price reduction)
[C language] accidentally write a bug? Mortals teach you how to write good code [explain debugging skills in vs]
Musk says he doesn't like being a CEO, but rather wants to do technology and design; Wu Enda's "machine learning" course is about to close registration | geek headlines
Source code analysis of Tencent libco collaboration open source library (III) -- Exploring collaboration switching process assembly register saving and efficient collaboration environment
TiDB - 快速入门,集群搭建
掌握高性能计算前,我们先了解一下它的历史
[advanced C language] data storage [part I] [ten thousand words summary]
DataScience&ML:金融科技领域之风控之风控指标/字段相关概念、口径逻辑之详细攻略
VR全景作品中各式各样的嵌入功能是如何做到的?
Monotonic stack structure