微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 分布式存储系统技术解读

分布式存储系统技术解读

时间:09-17 来源: 点击:

  我们知道的HDFS、Gluster、Ceph、Swift等互联网常用的大规模集群文件系统无一例外都属于分布式集群文件系统。分布式集群文件系统可扩展性更强,目前已知最大可扩展至10K节点。对于分布式集群,其对文件元数据的管理方式又可以分为single path image和single filesystem image两种方式。

  异常分类

  分布式存储系统所关注的异常类型和单体系统不一样,有如下几种:

  服务器宕机:设计存储系统时需要考虑如何通过读取持久化介质(如机械硬盘,固态硬盘)中的数据来恢复内存信息。

  网络异常:设计容错系统的一个基本原则是:网络永远是不可靠的,任何一个消息只有收到对方的回复后才可以认为发送成功,系统设计时总是假设网络将会出现异常并采取相应的处理措施。

  磁盘故障:对于磁盘数据错误,往往可以采用校验和( checksum)机制来解决。

  除了异常之外,还存在"超时"状态,RPC执行的结果有三种状态:"成功"、"失败"、"超时"(未知状态),也称为分布式存储系统的三态。

  

  一致性保证

  副本是分布式存储系统容错技术的唯一手段。由于多个副本的存在,如何保证副本之间的一致性是整个分布式系统的理论核心。从客户端的角度来看,一致性包含如下三种情况:

  1、强一致性:

  2、弱一致性:

  3、最终一致性:最终一致性是弱一致性的一种特例。"最终"一致性有一个"不一致窗口"(时间延迟),最终一致性描述比较粗略,其常见的变体如下:

  读写( Read-your-writes)-致性

  会话( Session)-致性

  单调读( Monotonic read)-致性

  单调写( Monotonic write)-致性

  从存储系统的角度看,一致性主要包含如下几个方面:

  1) 副本一致性:存储系统的多个副本之间的数据是否一致,不一致的时间窗口等;

  2) 更新顺序一致性:存储系统的多个副本之间是否按照相同的顺序执行更新操作。

  衡量指标

  评价分布式存储系统有一些常用的指标:

  性能:吞吐能力(QPS、TPS)、响应延迟。

  可用性:系统的可用性可以用系统停服务的时间与正常服务的时间的比例来衡量。

  一致性:越是强的一致性模型,用户使用起来越简单。如果系统部署在同一个数据中心,只要系统设计合理,在保证强一致性的前提下,不会对性能和可用性造成太大的影响。

  可扩展性:系统的可扩展性( scalability)指分布式存储系统通过扩展集群服务器规模来提高系统存储容量、计算量和性能的能力。

  性能分析

  一般来说,对分布式系统的性能分析的结果是不精确的,然而,至少可以保证,估算的结果与实际值不会相差一个数量级。举个例子,Google的BigTable中随机写和顺序写的性能是差不多的,写入操作需要首先将操作日志写入到GFS,接着修改本地内存。为了提高性能,BigTable实现了成组提示技术。

  只有理解存储系统的底层设计和实现,并在实践中不断地练习,性能估算才会越来越准。

  数据分布

  1、哈希分布(代表:Dynomo):如果哈希函数的散列特性很好,哈希方式可以将数据比较均匀地分布到集群中去。然而,找出一个散列特性很好的哈希函数是很难的。这是因为,如果按照主键散列,那么同一个用户id下的数据可能被分散到多台服务器,这会使得一次操作同一个用户id下的多条记录变得困难;如果按照用户id散列,容易出现"数据倾斜"(data skew)问题,即某些大用户的数据量很大,无论集群的规模有多大,这些用户始终由一台服务器处理。另一种思路就是采用一致性哈希( Distributed Hash Table,DHT)算法(顺时针查找)。一致性哈希的优点在于节点加入/删除时只会影响到在哈希环中相邻的节点,而对其他节点没影响。一致性哈希算法在很大程度上避免了数据迁移。Dynamo系统通过牺牲空间换时间,在每台服务器维护整个集群中所有服务器的位置信息,将查找服务器的时间复杂度降为O(l)。一致性哈希还需要考虑负载均衡,比较好的做法是引入"虚拟节点"的概念。

2、顺序分布(代表:BigTable):哈希散列破坏了数据的有序性,只支持随机读取操作,不能够支持顺序扫描。顺序分布在分布式表格系统中比较常见,一般的做法是将大表顺序划分为连续的范围,每个范围称为一个子表。Bigtable将一张大表根据主键切分为有序的范围,每个有序范围是一个子表。为了支持更大的集群规模,Bigtable这样的系统将索引分为两级:根表以及元数据表(Meta表),由Meta表维护User表的位置信息。顺序分布与B+树数据结构比较类似,每个子表相当于叶子节点,随着数据的插入和删除,某些子表可能变得很大,某

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top