mongodb衍伸的互联网思考

引子:如何使用三台服务器搭建高可用mongodb集群。

从技术角度出发,基本上聊完这个话题就可以清晰地知道对mongodb的掌握程度。

mongodb副本集故障转移功能得益于它的选举机制,采用了bully算法。一般分布式集群都会有一个所谓的主节点。比如常用的mysql经常会申明一个主节点,其他的都为从节点。这样一个问题就是当主节点挂掉,我们就需要手工操作,上架一个新的主节点或者从从节点恢复数据等手段,并不太灵活。

而mongodb采用的架构模式为不指定主节点,一旦主节点挂掉了,其他从节点自动接替变为主节点。一个副本集包含三个节点,主节点、从节点、仲裁节点。之间会有心跳检测(可以理解为不断地ping—-ping),当主节点down掉,会提升secondary为新的primary,仲裁节点升为新的副节点。oplogSize和更换服务器时间为容灾关键点。

一个简单充分实现的集群方式为下图所示。主写副读仲裁心跳。根据各负责的相关工作内容分担压力可最优放置在不同服务器(请根据实际业务场景进行调整)

但是此引题优解方式:因为当三台服务器撑不住,主节点挂掉,从节点一旦升为主节点,同时接受读写的压力和同步数据到新从节点,那么肯定也是支撑不住服务的,所以分析最终结果要最少四台服务器参与到集群中容灾。O(∩_∩)O。

数据库的发展经历了人工管理阶段,文件系统阶段,数据库系统阶段。从第三范式到反第三范式。无不体现了互联的一种发展趋势。而当关系数据库越来越庞大的时候,又出现了各种nosql数据库,比如基于内存的memcache,redis。内存缓存模式。

其实仍然是‘分而治之’的思想(map reduce)。

根据业界的理论来讲,写代码重要的是理解思想,深入底层原理和设计模式以及算法,酱紫更有利于写出优质别人能看懂的代码。

HTTPROOT | 自学PHP | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 石头哥 |微信小程序 |木讯 |备案
Copyright © 1998 - 2016 HTTPROOT.COM. All Rights Reserved httproot.com 版权所有