北京快三开奖

  • <tr id="U9YkSO"><strong id="U9YkSO"></strong><small id="U9YkSO"></small><button id="U9YkSO"></button><li id="U9YkSO"><noscript id="U9YkSO"><big id="U9YkSO"></big><dt id="U9YkSO"></dt></noscript></li></tr><ol id="U9YkSO"><option id="U9YkSO"><table id="U9YkSO"><blockquote id="U9YkSO"><tbody id="U9YkSO"></tbody></blockquote></table></option></ol><u id="U9YkSO"></u><kbd id="U9YkSO"><kbd id="U9YkSO"></kbd></kbd>

    <code id="U9YkSO"><strong id="U9YkSO"></strong></code>

    <fieldset id="U9YkSO"></fieldset>
          <span id="U9YkSO"></span>

              <ins id="U9YkSO"></ins>
              <acronym id="U9YkSO"><em id="U9YkSO"></em><td id="U9YkSO"><div id="U9YkSO"></div></td></acronym><address id="U9YkSO"><big id="U9YkSO"><big id="U9YkSO"></big><legend id="U9YkSO"></legend></big></address>

              <i id="U9YkSO"><div id="U9YkSO"><ins id="U9YkSO"></ins></div></i>
              <i id="U9YkSO"></i>
            1. <dl id="U9YkSO"></dl>
              1. <blockquote id="U9YkSO"><q id="U9YkSO"><noscript id="U9YkSO"></noscript><dt id="U9YkSO"></dt></q></blockquote><noframes id="U9YkSO"><i id="U9YkSO"></i>
                企业空间 推销商城 存储论坛
                北京快三开奖全闪存阵列 IBM云盘算 Acronis 安克诺斯 安腾普 腾保数据
                首页 > 数据库 > MongoDB教程 > 注释

                严澜:搭建高可用的MongoDB集群(二)

                2014-04-25 00:00泉源:中国存储网
                导读:MongoDB公司原名10gen,创建于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评价已增至10亿美元级别,这个高度是着名开源公司Red Hat(创立于1993年)20年的斗争效果。高功能、易扩展不断是MongoDB的驻足之本,同时规

                MongoDB公司原名10gen,创建于2007年,在2013年收到一笔2.31亿美元的融资后,公司市值评价已增至10亿美元级别,这个高度是着名开源公司Red Hat(创立于1993年)20年的斗争效果。

                高功能、易扩展不断是MongoDB的驻足之本,同时标准的文档和接口更让其深受用户喜欢,这一点从剖析DB-Engines的得分后果不好看出——仅仅1年工夫,MongoDB就完成了第7名到第五名的提拔,得分就从124分上升至214分,上贬值是第四名PotgreSQL的两倍,同时当下与PostgreSQL的得分也只相差16分不到。

                严澜:搭建高可用的MongoDB集群(二)

                MongoDB能以云云速率开展,很大水平上归结于很多传统干系数据库已无法应对当下数据处置的扩展性需求,固然它们久经磨练,并具有不错的功能及波动性。但是区别于以往的运用办法,很多NoSQL都有着本人的限定,从而也招致了入门难的题目。这里我们为各人分享 严澜的博文——怎样搭建高效的MongoDB集群。

                此前,我们有分享过该系列博文的第一局部,这里我们将为各人分享第二个局部——深化正本集外部机制及分片。

                  以下为博文:

                深化正本集外部机制

                该系列文章的第一局部引见了正本集的设置装备摆设,这个局部将深化研讨一下正本集的外部机制。照旧带着正本集的题目来看吧!

                正本集毛病转移,主节点是怎样推举的?可否手动干预下架某一台主节点。

                官方说正本集数目最好是奇数,为什么?

                MongDB正本集是怎样同步的?假如同步不实时会呈现什么状况?会不会呈现纷歧致性?

                MongDB的毛病转移会不会无端主动发作?什么条件会触发?频仍触发能够会带来零碎负载减轻?

                  Bully算法

                MongDB正本集毛病转移功用得益于它的推举机制。推举机制接纳了Bully算法,可以很方便从散布式节点中选出主节点。一个散布式集群架构中普通都有一个所谓的主节点,可以有许多用处,比方缓存呆板节点元数据,作为集群的拜访入口等等。主节点有就有吧,我们干嘛要什么Bully算法?要明确这个我们先看看这两种架构:

                指定主节点的架构,这种架构普通都市声明一个节点为主节点,其他节点都是从节点,如我们常用的MySQL便是如许。但是如许架构我们在第一节说了整个集群假如主节点挂失了就得手工操纵,上架一个新的主节点或许从从节点规复数据,不太灵敏。

                严澜:搭建高可用的MongoDB集群(二)

                不指定主节点,集群中的恣意节点都可以成为主节点。MongoDB也便是接纳这种架构,一但主节点挂了其他从节点主动接替酿成主节点。如下图:

                严澜:搭建高可用的MongoDB集群(二)

                好了,题目就在这个中央,既然一切节点都是一样,一但主节点挂了,怎样确定下一个主节点?这便是Bully算法处理的题目。

                那什么是Bully算法,Bully算法是一种和谐者(主节点)竞选算法,次要头脑是集群的每个成员都可以声明它是主节点并告诉其他节点。另外节点可以选择承受这个宣称或是回绝并进入主节点竞争。被其他一切节点承受的节点才干成为主节点。节点依照一些属性来判别谁应该胜出。这个属性可以是一个静态ID,也可以是更新的器量像近来一次事件ID(最新的节点会胜出)。

                  推举

                那么,MongDB是怎停止推举的呢?官方这么描绘:

                We use a consensus protocol to pick a primary. Exact details will be spared here but that basic process is:

                get maxLocalOpOrdinal from each server.

                if a majority of servers are not up (from this server’s POV), remain in Secondary mode and stop.

                if the last op time seems very old, stop and await human intervention.

                else, using a consensus protocol, pick the server with the highest maxLocalOpOrdinal as the Primary.

                大抵翻译过去为运用分歧协议选择主节点。根本步调为:

                失掉每个效劳器节点的最初操纵工夫戳。每个MongDB都有oplog机制记载本机操纵,方便和主效劳器停止比照数据能否同步还可以用于错误规复。

                假如集群中大局部效劳器down机了,保存在世的节点都为secondary形态并中止,不推举了。

                假如集群中推举出来的主节点或许一切从节点最初一次同步工夫看起来很旧,中止推举等候人来操纵。

                假如下面都没有题目就选择最初操纵工夫戳最新(包管数据是最新的)的效劳器节点作为主节点。

                这里提到了一个分歧协议(实在便是bully算法),这个和数据库的分歧性协议照旧有些区别,分歧协议次要夸大的是经过一些机制包管各人告竣共鸣;而分歧性协议夸大的是操纵的次序分歧性,比方同时读写一个数据会不会呈现脏数据。分歧协议在散布式里有一个经典的算法叫“Paxos算法”,后续再引见。

                下面有个题目,便是一切从节点的最初操纵工夫都是一样怎样办?便是谁先成为主节点的工夫最快就选谁。

                推举触发条件

                推举不是什么时辰都市被触发的,有以下状况可以触发。

                初始化一个正本集时。

                正本集和主节点断开衔接,能够是网络题目。

                主节点挂失。

                推举另有个条件条件,到场推举的节点数目必需大于正本集总节点数目的一半,假如曾经小于一半了一切节点坚持只读形态。日记将会呈现:

                can't see a majority of the set, relinquishing primary

                1. 主节点挂失可否人为干涉?答案是一定的。

                可以经过replSetStepDown下令下架主节点。这个下令可以登录主节点运用

                db.adminCommand({replSetStepDown : 1})

                假如杀不失可以运用强迫开关

                db.adminCommand({replSetStepDown : 1, force : true})

                或许运用 rs.stepDown(120)也可以到达异样的结果,两头的数字指不克不及在中止效劳这段工夫成为主节点,单元为秒。

                2. 设置一个从节点有比主节点有更高的优先级。

                先检查以后集群中优先级,经过rs.conf()下令,默许优先级为1是不表现的,这里标示出来

                严澜:搭建高可用的MongoDB集群(二)

                假如不想让一个从节点成为主节点可以怎样操纵?

                运用rs.freeze(120)解冻指定的秒数不克不及推举成为主节点。

                依照上一篇设置节点为Non-Voting范例。

                当主节点不克不及和大局部从节点通讯。把主机节点网线拔失,嘿嘿:)

                优先级还可以这么用,假如我们不想设置什么hidden节点,就用secondary范例作为备份节点也不想让他成为主节点怎样办?看下图,共三个节点散布在两个数据中央,数据中央2的节点设置优先级为0不克不及成为主节点,但是可以到场推举、数据复制。架构照旧很灵敏吧!

                严澜:搭建高可用的MongoDB集群(二)

                奇数

                官方引荐正本集的成员数目为奇数,最多12个正本集节点,最多7个节点到场推举。最多12个正本集节点是由于没须要一份数据复制那么多份,备份太多反而添加了网络负载和拖慢了集群功能;而最多7个节点到场推举是由于外部推举机制节点数目太多就会招致1分钟内还选不出主节点,凡事只需得当就好。这个“12”、“7”数字还好,经过他们官方颠末功能测试界说出来可以了解。详细另有哪些限定参考官方文档 《 MongoDB Limits and Thresholds 》。 但是这里不断没搞懂整个集群为什么要奇数,经过测试集群的数目为偶数也是可以运转的,参考这个文章http://www.itpub.net/thread-1740982-1-1.html。厥后忽然看了一篇 stackoverflow的文章终于顿悟了,mongodb自身设计的便是一个可以跨IDC的散布式数据库,以是我们应该把它放到大的情况来看。

                假定四个节点被分红两个IDC,每个IDC各两台呆板,如下图。但如许就呈现了个题目,假如两个IDC网络断失,这在广域网上很容易呈现的题目,在下面推举中提到只需主节点和集群中大局部节点断开链接就会开端一轮新的推举操纵,不外MongoDB正本集双方都只要两个节点,但是推举要求到场的节点数目必需大于一半,如许一切集群节点都没方法到场推举,只会处于只读形态。但是假如是奇数节点就不会呈现这个题目,假定3个节点,只需有2个节点在世就可以推举,5其中的3个,7其中的4个……

                严澜:搭建高可用的MongoDB集群(二)

                心跳

                综上所述,整个集群需求坚持肯定的通讯才干晓得哪些节点在世哪些节点挂失。MongoDB节点会向正本会合的其他节点每两秒就会发送一次pings包,假如其他节点在10秒钟之内没有前往就标示为不克不及拜访。每个节点外部都市维护一个形态映射表,标明以后每个节点是什么脚色、日记工夫戳等要害信息。假如是主节点,除了维护映射表外还需求反省本人可否和集群中内大局部节点通讯,假如不克不及则把本人升级为secondary只读节点。

                同步

                正本集同步分为初始化同步和keep复制。初始化同步指全量从主节点同步数据,假如主节点数据量比拟大同步工夫会比拟长。而keep复制指初始化同步当时,节点之间的及时同步普通是增量同步。初始化同步不但是在第一次才会被处分,有以下两种状况会触发:

                secondary第一次参加,这个是一定的。

                secondary落伍的数据量超越了oplog的巨细,如许也会被全量复制。

                那什么是oplog的巨细?后面说过oplog保管了数据的操纵记载,secondary复制oplog并把外面的操纵在secondary实行一遍。但是oplog也是mongodb的一个聚集,保管在local.oplog.rs里;但是这个oplog是一个capped collection,也便是牢固巨细的聚集,新数据参加超越聚集的巨细会掩盖,以是这里需求留意,跨IDC的复制要设置适宜的oplogSize,防止在消费情况常常发生全量复制。oplogSize 可以经过–oplogSize设置巨细,关于Linux 和Windows 64位,oplog size默许为剩余磁盘空间的5%。

                同步也并非只能从主节点同步,假定集群中3个节点,节点1是主节点在IDC1,节点2、节点3在IDC2,初始化节点2、节点3会从节点1同步数据。前面节点2、节点3会运用就近准绳从以后IDC的正本会合停止复制,只需有一个节点从IDC1的节点1复制数据。

                设置同步还要留意以下几点:

                secondary不会从delayed和hidden成员上复制数据。

                只需是需求同步,两个成员的buildindexes必需要相反无论能否是true和false。buildindexes次要用来设置能否这个节点的数据用于盘问,默许为true。

                假如同步操纵30秒都没有反响,则会重新选择一个节点停止同步。

                到此,本章后面提到的题目全部处理了,不得不说MongoDB的设计还真是弱小!

                后续持续处理上一节这几个题目:

                主节点挂了可否主动切换衔接?现在需求手工切换。

                主节点的读写压力过大怎样处理?

                另有这两个题目后续处理(请见下一页):

                从节点每个下面的数据都是对数据库全量拷贝,从节点压力会不会过大?

                数据压力大到呆板支持不了的时分可否做到主动扩展?

                持续阅读
                要害词 :
                MongoDB引见
                中国存储网声明:此文观念不代表本站态度,若有版权疑问请联络我们。
                相干阅读
                • 比照MySQL,你终究在什么时分更需求MongoDB

                  NoSQL曾经盛行了很长一段工夫,那么终究是什么场景下你才更需求用到这些“新兴事物”,就比方MongoDB?上面是一些总结:你希冀一个更高的写负载默许状况下,比照事件平安,MongoDB更存眷高的拔出速率。假如你需求加载少量低价

                • MongoDB 办理东西 Robomongo

                  [荐]开源ETL东西 KettleKettle是一款外洋开源的etl东西,纯java编写,绿色无需装置,数据抽取高效波动(数据…[荐]MySQL WorkbenchMySQL Workbench是一款专为MySQL设计的ER/数据库建

                • 关于MongoDB你需求晓得的几件事

                  Henrique Lobo Weissmann是一位来自于巴西的软件开辟者,他是itexto公司的结合开创人,这是一家征询公司。克日,Henrique在博客上撰文谈到了关于MongoDB的一些内容,此中有些观念值得我们,特殊是正在和计划运用MongoDB的开辟

                • MongoDB 2.2版本公布 并发功能加强

                  我们可以看到,广受诟病的全局锁曾经在这一版中被拿失,取而代之的是DB级另外锁,并且collection 级另外锁也不远了。上面就看看2.2 版本的几个新功用吧:1.并发功能加强如下面所说,MongoDB 2.2版本中不再有高出于整个daemon上的全局锁,而是

                • 浅谈MongoDB中几种差别盘问办法

                  1.findMongoDB运用find来停止盘问.盘问便是前往一个聚集中文档的子集,子聚集的范畴从0个文档到整个聚集.find的第一个参数决议了要前往哪些文档.其方式也是一个文档,阐明要盘问的细节.空的盘问文档{}会婚配聚集的全部内容.要是不指定盘问文档,默许

                • 烽烟通讯精美表态数据中央规范峰会

                  烽烟通讯携“FitDC数据中央处理方案及网络动力根底设备”精美表态。

                • 2020国际数据中央及云盘算财产展

                  2020.12.03-05〡上海.上海新国际博览中央 CDCE2020展前剧透 构建5G期间新基建 12月3-5日上海数据中央行业全财产展现 12月3日-5日,由数据中央节能技能委员会及雅式展览效劳

                • 天下最小存储设置装备摆设降生,单元面积容量超闪存100倍!

                  工程师们发明了有史以来最小的影象存储设置装备摆设之一,由一种二维资料制成,横截面面积只要一平方纳米。

                • 天下互联网大会召开,CDS首云多款产物公布赋能数字将来

                  现在云效劳器中主频最高型号,不只高于友商同类产物,且在中心功用上可以完满无缝兼容首云实例的一切功用。

                • 打造数据存储的千里长堤,西部数据力推创新存储架构

                  数据存储的使用场景正在阅历从终端、边沿到云数据中央中心的疾速演进,数据的特点是大数据、快数据的使用需求并存。

                产物引荐
                头条阅读
                栏目热门

                Copyright @ 2006-2019 ChinaStor.COM 版权一切 京ICP备14047533号

                中国存储网

                存储第一站,存储流派,存储在线交换平台