《分布式存储系统》--总结①

        第一次书写这本书籍的读后感,我在这里将我对每一章节的大致概念与提及的方法做一个简单梳理总结,方便日后回顾。希望在未来的研究僧岁月能够对这个方向做更多的研究。


一、分布式中的一些常用的基本概念

1 异常

        在分布式中(其实不只是分布式中,在所有的网络层中都是如此)我们常常将服务器节点看做是不可靠的,同样,网络也是不可靠的。在不可靠中,我们常常会提到一些异常的概念例如服务器宕机、网络异常与磁盘故障。

        (1)服务器异常:服务器异常其实挺好理解的,简单来说就是服务器宕机。而服务器宕机确实很麻烦的一件事情。当服务器重启后你的节点就会失去所有的内存信息。因此我们在设计服务器的时候要考虑如何将数据恢复到宕机前的某个一致状态。

        (2)网络异常:说道网络问题那就与“计算机网络”这一门学科息息相关。引发网络异常的原因有许多,比如消息丢失、消息乱序或者网络数据包错误。而设计相应的容错系统就要要求我们记住“网络永远不可靠”。

        (3)磁盘故障此故障分为“磁盘损坏”与“磁盘数据错误”。对于损坏问题,我们要就要将数据存储到多台服务器。对于出现错误问题,我们要求蚕蛹“校验和机制”来处理问题。

        在这里,我们也需要提及一个概念——“超时”,即在分布式系统中有可能当一个节点向另一个节点发送请求会出现请求超时的情况,所以当出现超时的情况时,我们就可以通过不断读取之前操作。简单来说就是不断重试知道成功

2 一致性

        由于各种异常,所以几乎所有的分布式集群在设计的时候都会讲数据冗余存储多份,每一份称为一个“副本”。所以副本也就成为分布式存储系统容错技术的唯一手段。而对于我们设计者来说,如何保证副本之间的一致性是整个分布式系统的理论核心。

        在一致性这个概念中,我抽象出来了几个比较重要的部分。①强一致性:就是说我在A机器中写入了一个值,那么我B、C机器中后续读取出的值均为更新过的。②最终一致性:即我在A中写入数据后,不能立刻在BC中读到,而是在经过部分时间后可以读到。保证最终的效果。

3 衡量指标

        评价分布式的优良也有其一套指标,不过这个不是特别重要的重点,所以就简单的写一写。

        (1)性能:性能分为“系统吞吐能力”——在某一段时间可以处理的请求总数,用每秒处理的读操作或写操作来评价。“系统响应延迟”——某个请求发出到接收到返回结果所耗费的时间。

        (2)可用性:值系统在面对各种异常时可以提供正常的服务的能力。

        (3)一致性:同上述一致性。

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

二、分布式系统中的数据分布问题

        分布式存储数据这个问题其实是比较复杂的,首先重要的一点就是他要能保证多台机器的负载时均衡的。并且其要求能够自动识别负载高的节点并将部分数据进行迁移。而在迁移的过程中有会面临许多问题,我们要针对每个点提出不同的解决方案。

1 哈希分布

        大致来说,哈希分布简单可以分为两种:①不区分用户,将所有的数据按照其对应的主建进行散列分布。但是这样却带了了一些问题,例如:一次操作中同一个用户id下的多条记录要去不同的服务器中寻找,这个复杂度可想而知。②将服务器按照0~N-1进行编号,此时就可以按照用户id进行  Hash(id)%N进行排列。但是这样又带了了一些问题,比如:倘若部分id下的用户数量比较庞大,而部分id下的数据量很小,那么我们的机器中就会出现负载不均衡的问题。

        所以这些问题的解决是没有最优解的,只有最适合的没有最好的。除了上述方法之外,我们这里还会介绍一种思路——“一致性哈希算法”。

        这里放上一些专门介绍此算法的博客:一致性哈希算法 - HappyCoder - 博客园

        简单来说就是除了给数据一个哈希值,我们也会给各个节点(机器)一个token值,而这些token形成一个环。然后我们将哈希数据在环上进行排列,然后顺时针找对应数据最近的节点(token),这个节点就需要存储这些数据了。

一致性哈希算法示意图

        这有什么好处呢??用之前普通的哈希方案的话会面临着,倘若我在集群中增加了部分节点,那么我之前存储的数据就要整体迁移了。。是不是就很麻烦。。。。

        所以这里我们就知道使用这个方法就算增加了部分节点,那我们就只需要修改部分数据的存储地点就好,避免了大规模的数据迁移。


一致性哈希算法面对增加节点的示意图

2 顺序分布

        哈希分布破坏了数据的有序性,只支持随机读取操作,不能支持顺序扫描。所以我们可以用顺序分布的方式解决。例如我们可以将用户表中7000个数据划分为1~1000、1001~2000、.....6001~7000。而这些索引信息由meta节点来维护。相当于出来了一个树的结构。

3 负载均衡

        负载均衡是集群中比较重要的部分之一,一般来说集群中需要一个总控节点来负责整体调度,并将数据迁移到工作节点中来。对于工作节点,他们需要使用“心跳包”将节点的负载信息(CPU内存、磁盘、网络资源、读写次数等信息)定期发送给主控节点,由主控节点计算出工作节点的负载以及需要迁移的数据并生产迁移任务放入迁移队列中等待执行。

        在这个过程中存在许多我们要考虑的问题。倘若有一台全新的机器上线,由于新的机器负载最低,所以主控节点就会将大量的信息同事迁移到这台新的机器中去,那么整个系统在新增机器的过程中的服务质量就会大幅下降。所以一般我们会将其调整为30~60分钟。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容

  • 分布式系统面临的第一个问题就是数据分布,即将数据均匀地分布到多个存储节点。另外,为了保证可靠性和可用性,需要将数据...
    olostin阅读 4,565评论 2 26
  • 转自http://witchiman.github.io/2017/05/05/distributed-syste...
    witchiman阅读 4,631评论 0 12
  • 本文转载自http://geek.csdn.net/news/detail/112672 WeTest导读 我们常...
    shineegirl阅读 1,543评论 0 26
  • 承载量是分布式系统存在的原因 当一个互联网业务获得大众欢迎的时候,最显著碰到的技术问题,就是服务器非常繁忙。当每天...
    XYLY阅读 1,459评论 1 48
  • 导入Picasso和Glide都在jcenter上。在项目中添加依赖非常简单:Picassodependencie...
    瀚海江天阅读 4,461评论 0 2