网易学习计划啊,都不带添加文字的么!限制我字数,还不告诉我是哪段超过了!!
进入正题...
每个流行的云存储系统都有自己的侧重点
可选的架构很多,关键是要针对特定的应用场景
- 系统规模大小
- 业务类型与压力
- 实时 / 非实时
- 大文件 / 中等文件 / 小文件
- 连续读写 / 随机读写
- 吞吐率 / 低延迟
- 强一致性 / 弱一致性
- 性能 & 可靠性
- 扩展性 & 单节点问题
- 是否要求目录结构
- 可配置 & 快速部署
- 大数据离线/在线分析
- 电子商务
- 社交网络
- 网络硬盘
- 邮件服务
- 图片服务
- 语音视频服务
- 虚拟机调度与镜像存储
- 开放云存储平台
离线型数据分析系统
- 数据总量大,单个文件大,更注重系统吞吐率,而非低延迟。
- 为适应流行的MapReduce模型,需要文件分块,并配合上层逻辑,采用大块顺序读写的方式提升性能。
线上服务系统
- 根据服务类型而采用差异化的存储方式。
- 针对语音视频等大文件,可能会采用与离线系统相同的方式,文件分块顺序读写,从而达到更高的传输速度。由于文件数量相对较少,有可能完全实现传统文件系统的目录结构与权限等功能。
- 电子商务、社交网络等应用场景,多为小文件(小图片与小视频、记录与评价信息等),文件数量庞大,增长快速,用户基数大,实时性要求高,读写随机性强,对性能与扩展性的要求很高。
应用场景 | 可行系统 |
大数据离线/在线分析 | HDFS、Swift、GlusterFS |
电子商务 | TFS、FastDFS、Dynamo、Swift、Tair |
社交网络 | TFS、FastDFS、Dynamo、Swift、Tair |
网络硬盘 | HDFS、FastDFS、Swift、GlusterFS |
邮件服务 | TFS、FastDFS、Dynamo、Swift、Tair |
图片服务 | TFS、FastDFS、Dynamo、Swift、Tair |
语音视频服务 | HDFS、FastDFS、Swift、GlusterFS |
虚拟机调度和镜像存储 | HDFS、Swift、GlusterFS |
不同的应用场景,不同的性能考量,不同的存储架构,似乎没有一种通用的方法解决所有问题,一切都应取决于支撑的业务需求是怎么样的。相对于专用系统,通用系统难以达到预期的效果,同时增加了开发和调优方面的复杂性。
中心化架构与对称架构并不是完全对立的,两者都可能存储大文件和小文件,区别只是相对而言的。在大数据存储、分析领域,中心化架构较多,HDFS仍然被广泛使用或模仿。而在互联网应用中(电子商务、社交网络、APP),以中小文件的存储为主,对称架构较多,Dynamo和BigTable的设计理念被广泛地参考。
大多数系统都抛弃了目录结构。因为目录树的开销非常大,去掉之后,集群的性能和扩展性被极大地提高。
云存储系统的架构大同小异,成功的关键在于细节:操作系统级优化、文件系统级优化、优秀的代码实现、稳定性……
关注个性化:
- 策略、代码和性能的优化。
- 数据分布方案 & 副本分布方案,文件去重。
- 模块化 & 插件化,可热拔插 & 动态替换。
- 抽象的存储引擎层,灵活地切换持久化存储或缓存。
- 融合SSD与机械硬盘,权衡性能与成本。
- 底层文件系统的选择与优化。
- 文件分块/聚合,增量同步,标准化接口(RESTfull、POSIX)。
- 系统部署与扩展的便捷性,自动化程度。
分布式环境下特别需要关注一致性问题,权衡性能与一致性等级。并发操作、各种版本冲突、机器故障、机器恢复、数据迁移与用户访问并存……集群状态不断变化,如何确保一致性约束。
PS:以上内容为师兄宅神所写,我就是个POSTER