散布式存储

2022-10-27 12:15| 发布者: 挖安琥| 查看: 256| 评论: 0

放大 缩小
简介:互联网的展开催生了云计算和大数据的展开, 云计算和大数据的实质都是构建低成本,高性能高可用的散布式存储系统,本文简单引见散布式存储的一些基础学问。 散布式存储经过网络衔接的大量的普通效劳器, 将数据分片 ...

互联网的展开催生了云计算和大数据的展开, 云计算和大数据的实质都是构建低成本,高性能高可用的散布式存储系统,本文简单引见散布式存储的一些基础学问。


散布式存储经过网络衔接的大量的普通效劳器, 将数据分片分散在集群中的不同节点(效劳器或进程)中,对外提供统一的效劳。散布式存储普通需求具有几个特性:
  • 可扩展:散布式存储普通可扩展几百以至几千台效劳器,并可容易的增加或减少节点, 在节点调整过程中, 散布式存储效劳可自动完成数据的迁移及负载均衡等操作。
  • 低成本:组成散布式存储效劳的效劳器可为普通效劳器, 由于普通效劳器毛病率通常较高,因而请求存储效劳具有较好的容错性。
  • 高性能:散布式存储理论上随着节点数量的增加,对外提供的效劳的性能应该成线性增长的趋向。这是散布式存储同非散布式存储的一大区别之一, 普通非散布式存储在数据量抵达一定范围之后, 都会存在单点的读写问题,散布式存储普通经过数据分片处置单点问题。
  • 易用:散布式是存储对外提供统一的接口, 用户不需求关怀数据的分片查找,副本维护等工作。


散布式存储依据存储类型可分为:
  • 散布式文件系统:普通存储非结构的blob对象(文件,图像等),好比淘宝的TFS, AWS的EBS, google的GFS等
  • 散布式键值系统:存储关系简单的半结构数据, 只提供基于键值的CRUD操作, 不能做关联查询, 好比Redis, Tair, MongoDB等
  • 散布式表格系统:用于存储半结构化数据, 与键值系统相比, 除了提供CRUD操作外, 还支持基于某个主键的范围扫描, 好比Google 的Big Table, AWS的Dynamo DB等
  • 散布式关系数据库:存储关系数据, 好比Taobao的Ocean DB。


存储系统的性能瓶颈在于随机的读写操作。下表列出了各种硬件的存储性能比:

类别耗费时间访问L1 Cache0.5 ns访问L2 Cache7 nsMutex加锁/解锁100 ns内存访问100 ns千兆网络发送1MB数据10 ms内存次第读取1MB数据0.25 ms机房内网络来回0.5 ms异地机房间网络来回30~100 ms
SATA磁盘寻道10 ms
从SATA磁盘次第读取1MB数据20 ms
固态SSD盘访问延迟0.1~0.2 ms

SATA的次第读取带宽能够抵达100MB以上, 由于磁盘的寻道时间大约为10ms, 次第读取1MB数据的时间为:磁盘寻道时间 + 数据读取时间, 即10ms + 1MB/100MB/s*1000=20ms。

散布式存储系统普通需求处置几个问题:
  • 数据散布

在散布式存储系统中,如何将数据分片到不同的节点是首先要思索的问题,普通散布式系统常运用的措施是Hash散布。
  • hash散布

哈希散布就是依据数据的某一个特征计算hash值, 并将hash值和集群中的节点做映射。从而将不同hash值的数据散布到不同的节点上。

hash散布的一个问题是一旦数据曾经散布到不同的节点中, 做扩容比较艰难, 好比往常数据经过hash值散布到三台机器上, 假如要将机器扩展到五台, 需求重新将一切的数据重新算一下hash值, 然后重新散布。因而普通扩展节点的数量是原数量的一倍,这样只需求移动一半数据。

  • 分歧性hash

分歧性hash算法从某种水平上处置了扩展过程中移动数据太多的问题, 分歧行hash算法给每个节点赋予一个hash值, 这些节点按次第构成一个环,数据依据hash值落在环中的某个节点上。当需求扩容时,将新参与节点放入环中,数据迁移只需求迁移新节点相邻的节点上的数据即可。分歧性hash容易构成数据偏斜, 而且在数据复制过程中, 对相邻节点的压力比较大。

普通系统会引入虚拟节点或虚拟槽的处置方式:即解耦数据与节点间的关系,引入虚拟节点, 将数据映射到大量的虚拟节点上, 然后虚拟节点在在映射到实体节点上,这样在扩容过程中,能够以虚拟节点为单位移动数据, 可从不同的实体节点上移动虚拟节点到新节点。很多存系统都采用了这种计划,如redis, Cassandra。
  • 异常

散布式系统中,一台效劳器或者一个效劳器上的不同进程被成为一个节点, 节点间经过网络互联, 不论是节点还是网络都是不牢靠的。散布式系统需求处置由于节点或网络惹起的各种异常。
  • 节点异常包含节点宕机或磁盘不可用(可恢复和不可恢复),散布式系统需求能够自动监控的节点的异常, 并做相应处置:对不可恢复异常, 假如该节点值主副本节点, 则需求重新中止选主, 假如该节点是从副本节点, 则需求其他节点从主副本(或其他从副本)复制一份分片数据, 保障副本数量不变。对可恢复异常, 需求恢复节点并重构内存。
  • 网络异常:经过网络中止交互, 结果可分为胜利, 失败,和未知。未知的状况可能有胜利也可能是失败, 因而需求有重试机制, 而且多次调用的结果应该幂等。


  • 复制

由于异常的存在,为了抵达高可用的目的, 普通数据会有多个副本, 多个副本键间的关系有:
  • 主从副本:主从副本只需主提供写, 从能够提供读效劳(或仅是备份的作用),主从的缺陷主的单点写瓶颈, 但是由于数据被分片了, 假如数据的摸一个分片遇到写瓶颈, 能够经过增加集群节点的方式处置,这请求散布式存储的扩容比较容易,普通像redis, mongodb这种系统扩容都不会成为问题, 但是像ES, 分片数量不能修正, 扩容就需求重新倒入数据。
  • 主主副本:同一个副本的不同节点都能够是中止写操作, Cassandara即是用这种方式完成


  • 分歧性

由于同一份数据包含多个副本,副本间的分歧性是散布性存储系统需求思索的问题。

分歧性分为强分歧性,弱分歧性和最终分歧性。最终分歧又可分为:

读写分歧性:A写后, A后的读都可取得最新结果。

会话分歧性:同一个会话内写后读都可取得最新结果。

单调读:A读取一次结果后, 后续读取不会取得之前版本的值。

单调写:A的多次写在多个副本间依照次第执行。

普通散布式存储系统都既能够支持强分歧性又可支持最总分歧性。

散布式存储系统大致遵照相同的功用方式, 但细致完成又依据自身特性各有不同。在日常系统维护过程中,了解相应的散布式系统存储的完成机制能够快速辅佐定位问题并找到正确的处置计划。

路过

雷人

握手

鲜花

鸡蛋
百达翡丽超级复杂功能时计系列6104G-001腕表星空最近回收销售行情怎么样

二手表·回收·购买·评估·鉴定

点击二维码可快速添加客服微信

客服微信:15679987654(长按复制)

版权声明:免责声明:文章信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递 更多信息之目的, 并不意味着赞同其观点或证实其内容的真实性,如本站文章和转稿涉及版权等问题,请作者在及时联系本站,我们会尽快处理。
已有 0 人参与

会员评论

 万奢网手机版

官网微博:万奢网服务平台

今日头条二维码 1 微信公众号二维码 1 抖音小程序二维码 1
上海万湖珠宝贸易有限公司 地址:上海市宝山区共和新路4727号新陆国际大厦1003-1007室 网站经营许可证 备案号:沪ICP备11005343号-12012-2019
万奢网主要专注于手表回收,二手名表回收/销售业务,可免费鉴定(手表真假),评估手表回收价格,正规手表回收公司,宝山实体店,支持全国范围上门回收手表
返回顶部