带着问题学习分布式系统之数据分片
MongoDB中,元数据处事器被称为config server。在MongoDB3.2中,已经不再提议行使三个镜像(Mirrored)MongoDB实例作为config server,而是保举行使复制集(replica set)作为config server,此举的目标是加强config server的同等性,并且config sever中mongod的数量也能从3个到达replica set的上线(50个节点),从而进步了靠得住性。 在MongoDB3.0及之前的版本中,元数据的读写凭证下面的方法举办:
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论文的问题中,提到了“Fault-Tolerant”,那么lease是怎么做到容错的呢。要害在于,只要处事器一旦发出数据和lease,不体谅客户端是否收到数据,只要守候lease逾期,就可以修改元数据;其它,lease的有用期通过逾期时刻(一个时刻戳)来标识,因此纵然从处事器到客户端的动静延时达到、可能一再发送都是没有相关的。 不难发明,容错的条件是处事器与客户端的时刻要同等。假如处事器的时刻比客户端的时刻慢,那么客户端收到lease之后很快就逾期了,lease机制就施展不了浸染;假如处事器的时刻比客户端的时刻快,那么就较量伤害,由于客户端会在处事器已经开始更新元数据的时辰继承行使缓存,工程中,凡是将处事器的逾期时刻配置得比客户端的略大,来办理这个题目。为了保持时刻的同等,最好的步伐是行使NTP(Network Time Protocol)来担保时钟同步。 Lease机制的本质是揭晓者授予的在某一有用期内的理睬,理睬的范畴长短常普及的:好比上面提到的cache;好比做权限节制,譬喻当必要做并发节制时,统一时候只给某一个节点揭晓lease,只有持有lease的节点才可以修改数据;好比身份验证,譬喻在primary-secondary架构中,给节点揭晓lease,只有持有lease的节点才具有primary身份;好比节点的状态监测,譬喻在primary-secondary架构中监测primary是否正常,这个后文再具体先容。 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |