存储系统 | 青训营笔记

84 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的第5篇笔记

RAID技术

单机系统如何做到高性能/高性价比/高可靠性?-> RAID技术

RAID包含3中形式,性能最好的RAID 0+1,其结合了RAID 0和RAID 1的技术,容错力强,写入带宽好。

非关系型数据库

Elasticsearch,MongoDB,Redis三足鼎立

Elasticsearch面向文档存储,可序列化成json形式,支持嵌套。

MongoDB:面向文档存储,文档可形式化json/bson,4.0后开始支持事务。

redis:最广发最普及,使用c语言实现,单线程+I/O复用,性能很好,数据结构丰富。

分布式数据库

单机数据库向分布式数据库发展的原因:

容量:单机容量有限,受硬件限制->节点存储池,动态扩缩容。

弹性:实现cpu和内存根据需要进行弹性的扩大和缩小。

性价比:相对单机系统更高,可以有效地组织廉价的服务器。

小结

存储系统,包括:块存储、文件存储、对象存储和k/V存储。 其中k/v存储形式最为灵活,存在大量的开源/黑盒产品。

数据库系统,包括关系型数据库(比如MySQL)、非关系型数据库(比如Redis)。

分布式架构,主要的组成部分,包括:数据分布策略、数据复制协议、分布式事务算法。

对象存储TSS

  • 抖音短视频的图片存储服务:把短视频生产/消费的链路做得更加细粒度化,不需要存储在本地服务器中。

  • 分布式存储 vs 对象存储:均具备海量、易用和便宜的特征,但是对象存储更加海量,对象数量无限制,支持>EB的海量存储。

  • 对象存储的适用性与不适用性:对象存储适用于视频、文本、图像、安装包等静态存储的对象,而不适用于关系型数据等结构化、频繁更改的数据。

  • 使用:云厂商会提供对象存储,申请bucket,使用restful的api接口。拿视频存储举例,先申请对象存储资源,然后后端掉用指定的API实现CURD操作。 最终的抖音项目中也用了这个方法,还是很方便的,比存储在本地服务器管理起来要更加方便。但是隐私性、数据的安全性也是需要考虑的。