分布式存储系统学习笔记(一)—什么是分布式系统(5)—可扩展性

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kevin_zhao_zl/article/details/79198081

系统实现可扩展性的方法有很多,可以通过增加副本个数或者缓存提高读取能力,将数据分片使得每个分片可以被分配到不同的工作节点以实现分布式处理,把数据复制到多个数据中心等等方式。可扩展性的衡量不能简单地通过系统是否是P2P架构或者能否将数据分布多个存储节点来衡量,而应该综合考虑节点故障后的恢复时间,扩容的自动化程度和灵活性等等

a)   总控节点

分布式存储系统多有总控节点,那么总控节点为什么不会成为系统的瓶颈?

分为两种情况,分布式文件系统的总控节点除了执行全局调度外还需要维护文件系统目录树,内存容量可能率先会成为性能瓶颈;另外一些系统的总控节点只需要维护数据分片的位置信息,一般不会成为瓶颈。

即使总控节点成为瓶颈,我们可以在总控节点与工作节点之间设置元数据节点,建立多层索引。看起来这增加了一次网络请求,实际上客户端总是能够缓存DFS总控机上的数据,因此不会带来额外的开销。

b)  数据库扩容

数据库可扩展性的手段包括:通过主从复制提高系统的读取能力,通过垂直拆分和水平拆分将数据分布多个存储节点,通过主从复制将系统扩展到多个数据中心。另外当数据库整体服务能力不足时,可以根据业务的特点重新拆分数据进行扩容。

假设数据有三张表格table1,table2,table3,先按照业务将三张表垂直拆分到不同的DB,再将三张表通过哈希的方式水平拆分到不同的存储节点,每个拆分后的DB通过主从复制维护多个副本,且允许分布到多个数据中心。

如果读取能力不足,可以通过增加副本的方式解决,如果写入能力不足,可以根据业务特点重新拆分数据,常见的做法是双倍扩容,即将每个分片的数据拆分成两个分片,扩容的过程中需要迁移一半的数据到新加入的存储节点。

但是扩容不够灵活,不够自动化,增加副本的时间长等因素制约了传统数据库的可扩展性

c)   异构系统

首先定义同构系统,每一个存储节点组中的每个节点上的数据是相同的,在增加副本的时候需要迁移的数据量太大。为了保证大规模分布式存储系统的线性可扩展性,存储系统的存储节点之间应该是异构的。异构系统将数据划分为很多大小接近的分片,每个分片的多个副本可以分布到集群中的任何一个存储节点。

猜你喜欢

转载自blog.csdn.net/kevin_zhao_zl/article/details/79198081