加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

带着问题学习分布式系统之数据分片

发布时间:2018-09-04 05:52:16 所属栏目:教程 来源:xybaby
导读:正文 在前文中,提出了漫衍式体系(尤其是漫衍式存储体系)必要办理的两个最首要的题目,即数据分片和数据冗余,下面这个图片(来历)形象活跃的表明白其观念和区别: 个中数据即A、B属于数据分片,原始数据被拆分成两个正交子集漫衍在两个节点上。而数据集C属

MongoDB中,元数据处事器被称为config server。在MongoDB3.2中,已经不再提议行使三个镜像(Mirrored)MongoDB实例作为config server,而是保举行使复制集(replica set)作为config server,此举的目标是加强config server的同等性,并且config sever中mongod的数量也能从3个到达replica set的上线(50个节点),从而进步了靠得住性。

在MongoDB3.0及之前的版本中,元数据的读写凭证下面的方法举办:

  • When writing to the three config servers, a coordinator dispatches the same write commands to the three config servers and collects the results. Differing results indicate an inconsistent writes to the config servers and may require manual intervention.

MongoDB的官方文档并没有具体表明这一进程,不外在stackexchange上,有人指出这个进程是两阶段提交。

MongoDB3.2及之后的版本,行使了replica set config server,在《CAP理论与MongoDB同等性、可用性的一些思索》文章中,具体先容了replica set的write concern、read concern和read references,这三个选项会影响到复制集的同等性、靠得住性与读取机能。在config server中,行使了WriteConcern:Majority;ReadConcern:Majority;ReadReferences:nearest。

元数据的缓存:

纵然元数据处事器可以由一组物理呆板构成,也担保了副本集之间的同等性题目。可是假如每次对数据的哀求都颠末元数据处事器的话,元数据处事器的压力也长短常大的。许多应用场景,元数据的变革并不是很频仍,因此可以在会见节点上做缓存,这样应用可以直接操作缓存数据举办数据读写,减轻元数据处事器压力。

在这个情形下,缓存的元数据必需与元数据处事器上的元数据同等,缓存的元数据必需是精确的,未过期的。相反的例子是DNS之类的缓存,纵然行使了逾期的DNS缓存也不会有太大的题目。

怎么到达缓存的强同等性呢?较量轻易想到的步伐是当metadata变革的时辰当即关照全部的缓存处事器(mongos),但题目是通讯有延时,不行靠。

办理纷歧致的题目,一个较量常见的思绪是版本号,好比收集通讯,通讯协议也许会产生变革,通讯两边为了告竣同等,那么可以行使版本号。在缓存同等性的题目上,也可以行使版本号,根基思绪是哀求的时辰带上缓存的版本号,路由到详细节点之后较量现实数据的版本号,假如版本号纷歧致,那么暗示缓存信息过旧,此时必要从元数据处事器从头拉取元数据并缓存。在MongoDB中,mongos缓存上就是行使的这种步伐。

其它一种办理步伐,就是台甫鼎鼎的lease机制 -- “An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency”,lease机制在漫衍式体系中行使很是普及,不只仅用于漫衍式缓存,在许多必要告竣某种约定的处所都大显技艺,在《漫衍式体系道理先容》中,对lease机制有较为具体的描写,下面临lease机制举办简朴先容。

Lease机制:

既然,Lease机制提出的时辰是为了办理漫衍式存储体系中缓存同等性的题目,那么起首来看看Lease机制是怎么担保缓存的强同等性的。留意,为了利便后文描写,在本末节中,我们称元数据处事器为处事器,缓存处事器为客户端。

要点:

  • 处事器向全部客户端发送缓存数据的同时,揭晓一个lease,lease包括一个有期限(即逾期时刻)
  • lease的寄义是:在这个有用期内,处事器担保元数据不会产生变革
  • 因此客户端在这个有用期内可以安心斗胆的行使缓存的元数据,假如高出了有用期,就不能行使数据了,就得行止事器哀求。
  • 假如外部哀求修改处事器上的元数据(元数据的修改必然在处事器长举办),那么处事器会阻塞修改哀求,直到全部已揭晓的lease逾期,然后修改元数据,并将新的元数据和新的lease发送到客户端
  • 假如元数据没有产生变革,那么处事器也必要在之前已揭晓的lease到期之间,从头给客户端揭晓新的lease(只有lease,没稀有据)

在Lease论文的问题中,提到了“Fault-Tolerant”,那么lease是怎么做到容错的呢。要害在于,只要处事器一旦发出数据和lease,不体谅客户端是否收到数据,只要守候lease逾期,就可以修改元数据;其它,lease的有用期通过逾期时刻(一个时刻戳)来标识,因此纵然从处事器到客户端的动静延时达到、可能一再发送都是没有相关的。

不难发明,容错的条件是处事器与客户端的时刻要同等。假如处事器的时刻比客户端的时刻慢,那么客户端收到lease之后很快就逾期了,lease机制就施展不了浸染;假如处事器的时刻比客户端的时刻快,那么就较量伤害,由于客户端会在处事器已经开始更新元数据的时辰继承行使缓存,工程中,凡是将处事器的逾期时刻配置得比客户端的略大,来办理这个题目。为了保持时刻的同等,最好的步伐是行使NTP(Network Time Protocol)来担保时钟同步。

Lease机制的本质是揭晓者授予的在某一有用期内的理睬,理睬的范畴长短常普及的:好比上面提到的cache;好比做权限节制,譬喻当必要做并发节制时,统一时候只给某一个节点揭晓lease,只有持有lease的节点才可以修改数据;好比身份验证,譬喻在primary-secondary架构中,给节点揭晓lease,只有持有lease的节点才具有primary身份;好比节点的状态监测,譬喻在primary-secondary架构中监测primary是否正常,这个后文再具体先容。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读