Skip to content

大规模高性能分布式存储系统(2月24日)

lirui edited this page Feb 25, 2021 · 2 revisions

第一课 大规模高性能分布式存储系统概述

分布式存储系统的发展:

80年代:AFS、NFS、Coda...

AFS:1983年Carnegine Mellon大学和IBM共同合作开发Andrew文件系统(Andrew File System,AFS),AFS设计目标是将至少7000个工作站连接起来,为每个用户提供一个共享的文件系统;高扩展性、网络安全性放在首位;客户端高速缓存,即使网络断开,可以对部分数据缓存

NFS:1985年Sun公司基于UDP开发了网络共享文件系统(Network File System,NFS),由一系列NFS命令和进程组成的客户机/服务器(C/S)模式;NFS第三版,加入了基于TCP传输;第三版发布六年后,NFS成为Linux中的稳定版本

Coda:1987年Carnegine Mellon大学在基于AFS的基础上开发了Coda文件系统,它为Linux工作站组成的大规模分布式计算环境设计的文件系统;通过两种互补机制为服务器和网络故障提供了容错机制;服务器复制机制,一个文件拷贝到多个服务器上;无连接操作机制,将缓存端暂时作为服务端的执行模式;Coda注重可靠性和性能优化;它提供了高度的一致性

90年代:xFS、Tiger Shark、SFS...

进入九十年代,随着Windows的问世,极大促进了微处理器的发展和PC的广泛普及,互联网和多媒体技术也犹如雨后春笋般发展起来,一方面:对多媒体数据的实时传输和应用越来越流行;另一方面,大规模并行计算技术的发展和数据挖掘技术应用,迫切需要能支持大容量和高速的分布式存储系统

xFS:UC Berkeley参照当时高性能多处理器领域的设计思想开发了xFS文件系统;xFS克服了以往分布式文件系统只适用局域网,而不适用于广域网和大数据存储的问题;提出广域网进行缓存较少网络流量设计思想;采用层次命名结构,减少Cache一致性状态和无效写回Cache一致性协议,从而减少了网络负载。

二十世纪末:GFS、GPFS、DiFFS...

到了二十世纪末,计算机技术和网络技术得到了飞速发展,磁盘存储成本不断降低;磁盘容量和数据总线带宽的增长速度无法满足应用需求,海量数据的存储逐渐成为互联网技术发展急需解决的问题;对于分布式存储系统技术的研究越来越成熟;基于光纤通道的存储区域网络(storage Area Network)技术和网络附连存储(Network Attached Storage)技术得到了广泛应用

SAN:设计目标是通过将磁盘存储系统或者磁带机和服务器直接相连的方式提供一个易扩展、高可靠的存储环境;高可靠的光纤通道交换机和光纤通道网络协议保证各个设备间链接的可靠性和高效性;设备间的连接接口主要是采用FC或者SCSI;光纤通道交换机主要是为服务器和存储设备的链接提供一个称为“SAN fabric”的网络拓扑结构

NAS:通过基于TCP/IP协议的各种上层应用(NFS等)在各工作站和服务器之间进行文件访问,直接在工作站客户端和NAS文件共享设备之间建立连接;NAS隐藏了文件系统的底层实现,注重上层文件服务实现,具有良好扩展性;网络阻塞,NAS性能受影响

GFS:Google为大规模分布式数据密集型应用设计的可扩展的分布式文件系统;Google将一万多台廉价PC机连接成一个大规模Linux集群;它具有高性能、高可靠性、易扩展性,超大存储容量等优点;Google文件系统采用单Master多Chunk Server来实现系统间交互;Master中主要保存命名空间到文件映射、文件到文件块的映射、文件块到chunk server的映射;每个文件块对应到3个Chunk Server

现在:Storage Tank、蓝鲸、HBase、MongoDB、DynamoDB...

HBase:列存储数据库;擅长以列为单位读取数据;面向列存储的数据库具有高可扩展性,即使数据大量增加也不会降低相应的处理速度,特别是写入数据

MongoDB:文档型数据库,它同键值(key-value)型的数据库类似,键值型数据库的升级版,允许嵌套键值,Value值是结构化数据,数据库可以理解Value的内容,提供复杂的查询,类似于RDBMS的查询条件

DynamoDB:Amazon公司的一个存储引擎,是一个经典的分布式key-value存储系统,具备去中心化,高可用性、高扩展性的特点;达到这个目标在很多场景中牺牲了一致性;Dynamo在Amazon中得到了成功的应用,能够跨数据中心部署于上万个结点上提供服务,它的设计思想也被后续的许多分布式系统借鉴。

分布式存储的概念:大量普通的服务器,通过网络互联,对外作为一个整体提供存储服务

特点:可扩展、可用、可靠、高性能、易维护、低成本

数据类型三大类:非结构化数据:指其字段长度不等,且每个字段的记录又可以由可重复或不可重复的子字段构成,没有规律,文本、图像、声音、影视等等

半结构化数据:介于完全结构化数据(如关系型数据库、面向对象数据库中的数据)和完全无结构的数据(如声音、图像文件等)之间的数据,HTML文档就属于半结构化数据,它一般是自描述的,数据的结构和内容混在一起,没有明显的区分

结构化数据:结构化数据即行数据,存储在数据库里,可以用二维表结构来逻辑表达实现的数据;数据模式和内容是分开的,数据的模式需要预先定义

分布式存储类型:分布式文件系统:存储大量的文件、图片、音频、视频等非结构化数据;这些数据以对象的形式组织,对象之间没有关系,这些数据都是二进制数据;GFS、HDFS等

分布式key-value系统:用于存储关系简单的半结构化数据;提供基于Key的增删改查操作;缓存、固化存储;Memached、Redis、DynamoDB等

分布式数据系统:存储结构化数据,提供SQL关系查询语言,支持多表关联,嵌套子查询等;MySQL Sharding集群、MongoDB等

分布式存储知识原理:

高可用性:分布式存储系统在面对各种异常时可以提供正常服务的能力;系统可用性可以用系统停服时间和正常服务时间的比例来衡量;4个99的可用性(99.99%):一年停机的时间不能超过53分钟;3652460/10000=53分钟

高可靠性:重点指分布式系统数据安全方面的指标,数据可靠不丢失,多机冗余、单机磁盘RAID等

Clone this wiki locally