分布式存储系统(一) - 概念

分布式存储系统是大量普通PC服务器通过Internet互联,对外作为一个整体提供存储服务。

最近在研读《大规模分布式存储系统》一书,顺便摘录整理,深入了解原理和架构,方便学习,欢迎交流。

一、概念

分布式存储系统具备如下几个特性:

1、可扩展

分布式系统可以扩展到几百台到几千台的集群规模,而且,随着集群规模的增长,系统整体性能表现为线性增长。

2、低成本

分布式存储系统的自动容错、自动负载均衡机制使其可以构建在普通PC机之上。另外,线性扩展能力也使得增加、减少机器非常方便,可以使用较低的成本实现自动运维。

3、高性能

无论是整个集群还是单机服务,都要求分布式系统具备高性能。

4、易用

分布式存储系统需要提供医用的对外接口,另外也要求具备完善的监控、运维工具,并能够方便地与其它系统集成。如 Hadoop云计算系统导入数据。

分布式存储系统的挑战主要在于数据、状态信息的持久化,要求在自动迁移、自动容错、并发读写的过程中保证数据的一致性。

所涉及的技术主要为:1、分布式系统;2、数据库;

二、分类

由于分布式存储系统所面临的数据需求相对复杂,大致可以将其分为三类:

1、非结构化数据。如办公文档、图片、音视频等;

2、结构化数据。一般存储在关系型数据库中,可以用二维关系表结构表示;

3、半结构化数据。介于非结构化和结构化数据之间,如HTML,一般是自描述的;

按照处理不同类型的数据,可分为:

1、分布式文件系统

在互联网应用当中需要存储大量的图片、照片、视频等非结构化数据对象,这类数据以对象的形式组织,对象之间没有关联,通常称之为Blob(Binary Large Object)数据。典型的系统有Facebook Haystack、TFS等。在分布式文件系统内部按照数据块(chunk)来组织数据,每个数据块的大小大致相同,每个数据块可以包含多个Blob对象或者定长块,一个大文件也可以拆分为多个数据块,这是其底层的实现原理。

2、分布式键值系统

分布式键值系统用于存储关系简单的半结构化数据。只提供主键的CRUD功能,典型的系统有Amazon Dynarno。从数据结构的角度看,分布式键值系统和传统的Hash表类似,不同的是,分布式键值系统支持将数据分布到集群中的多个存储节点。一般用作缓存,如大家熟知的Memcache。

3、分布式表格系统

分布式表格系统用于存储关系较为复杂的半结构化数据,除了具有CRUD的功能外,还支持扫描某个主键范围。并且借鉴了很多关系数据库的技术,例如支持某种程度上的事务。典型的系统包括Google Bigtable、Mega store等。但不支持较为复杂的操作,如多表关联、多表联接、嵌套子查询等。

4、分布式数据库

分布式数据库一般由单机关系数据库扩展而来,用于存储结构化数据,提供SQL关系查询语言,支持多表关联,嵌套查询,并发控制和数据库事务等复杂操作。典型的系统包含Mysql Sharding 、Amazon RDS、OceanBase。 

-------------------------------------------

有任何建议或问题,欢迎加微信一起学习交流,欢迎从事IT,热爱IT,喜欢深挖源代码的行业大牛加入,一起探讨。

个人微信号:bboyHan

热衷:Golang、Java、Python、区块链、架构设计、数据分析等。

发布了77 篇原创文章 · 获赞 123 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/han0373/article/details/83243159