在对mongoDB的操作有了一定基础后,终于可以扯扯HA和架构这两个高大上的概念了。在这之前当然还得弄清楚mongoDB的Key feature:Sharding。

1. Sharding

  Shard从逻辑上来说就是整个数据的一个子集,从物理来说就是管理这一子集的服务器。一个分片可以包含多台服务器。若一个分片包含多台服务器则每台服务器都有一份完全相同的数据子集副本(Replica set)。

  分片是MongoDB强调的一个Feature。分片的目的就在于完成自动化集群运维。mongoDB cluster需要三种角色,Sharding server /Config Server /Route。

2. HA

  HA是个大话题,从一个简单系统的部署为点开始谈谈吧。

  如图所示,架构上一个mongoDB集群需要上述三种角色,这三种角色分别对应三个进程:mongos,shardsvr mongod和config mongod。

figure1

Step1:启动shard server实例1与实例2

>mongod   --shardsvr  --port  20000  --dbpath=/data/shared/s0   --fork   --logpath=/data/shard/log/s0.log   --directoryperdb

>mongod   --shardsvr  --port  20001  --dbpath=/data/shared/s1   --fork   --logpath=/data/shard/log/s1.log   --directoryperdb

Step2:启动Config Server实例

>mongod   --configsvr  --port  30000  --dbpath=/data/shared/config   --fork   --logpath=/data/shard/log/config.log   --directoryperdb

Step3:启动Route Server实例

>mongos --port 40000 --configdb  localhost:30000  --fork  --logpath=/data/shared/log/route.log  --chunkSize 64

  

  其中chunkSize指定chunk大小,单位为MB,默认大小为200MB。

  MongoDB auto-sharding解决了海量存储和动态扩容问题,然而以上离真正的生产环境HA方案还差的远。下面更进一步,搭建Replica Sets + Sharding解决方案,设计案例。

Case1:

  • Shard:使用Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。
  • Config Server:使用3个配置服务器,确保元数据完整性,存放key的对应关系。
  • Route Server:使用方法3个路由进程,实现负载均衡,提高客户端的接入性能及并发度。
  • 搭建上述集群完毕后,可以加入memcached服务器,将高访问量的数据缓存在内存中,避免高频度的磁盘I/O,从而进一步提升性能。

                                                                          表1 小型使用案例举例

Host

IP

服务及端口分配

Server A

192.168.3.231

Mongod shard1_1: 27017

Mongod shard2_1: 27018

Mongod config1: 20000

Mongos1: 30000

Server B

192.168.3.232

Mongod shard1_2: 27017

Mongod shard2_2: 27018

Mongod config2: 20000

Mongos2: 30000

Server C

192.168.3.233

Mongod shard1_3: 27017

Mongod shard2_3: 27018

Mongod config3: 20000

Mongos3: 30000

  当然实际使用环境中的集群系统肯定更复杂,HA不是一个简单的话题,更包括容灾备份等问题,本人也没有什么实践经验,因此也只能说说一些理论的东西,希望与大家共同交流学习。

  按照惯例,要图文并茂,今天画的是坂田银时,相信园子里喜欢银魂的人不在少数,之前看到许多朋友都是银魂的头像。在孤独地编程、写作时,《银魂》似乎支撑了很多人,毒舌吐槽的背后是一个个简单而又平凡的人生真谛,温暖人心。有兴趣的可以看看新世相的这篇文章《阁下想要保护的东西已经是一片虚无》。

  

  全栈路上,没有归途。

MongoDB自学日记3——架构及HA的更多相关文章

  1. MongoDB自学日记2——权限

    首先应该明确的是为什么要学MongoDB.OK,如果是仅仅出于对于流行技术的原始兴趣,可能并不能深入学习,还必须有应用需求.刚开始学习MongoDB,因为以前对其它数据库的了解也不是特别深入,所以许多 ...

  2. MongoDB自学日记1——基本操作

    作为一个做底层及后台研发的,最近对NoSQL却产生了浓厚的兴趣,加入了一个DBA群,据说北京排的上号的DBA都在里面,然而里面基本都是Oracle系的,MySQL和MongoDB系的少之又少.学习靠不 ...

  3. TiDB和MongoDB分片集群架构比较

    此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 最近阅读了TiDB源码的说明文档,跟MongoDB的分片集群做了下简单对比. 首先展示TiDB的整体架构 M ...

  4. 2020重新出发,NOSQL,MongoDB分布式集群架构

    MongoDB分布式集群架构 看到这里相信你已经掌握了 MongoDB 的大部分基本知识,现在在单机环境下操作 MongoDB 已经不存在问题,但是单机环境只适合学习和开发测试,在实际的生产环境中,M ...

  5. Hadoop_HDFS架构和HA机制

    Hadoop学习笔记总结 01.HDFS架构 1. NameNode和ResourceManager NameNode负责HDFS,从节点是DataNode:ResourceManager负责MapR ...

  6. MongoDB自学笔记1----1.1 NoSQL是什么?

    第一章 走进MongoDB 1.1NoSQL是什么?       1.1.1NoSQL简介        对于不了解NoSQL的人都会认为NoSQL为No SQL,即不是SQL.但是这种理解是错误的, ...

  7. HDFS2.0架构以及HA详解

    HDFS2.0概述 一背景,Hadoop1.0中HDFS和MapReduce在高可用,扩展性等方面存在问题    HDFS存在问题,1,NameNode单点故障,难以应用于在线场景.2,NameNod ...

  8. MongoDB复制集概念架构浅析

    一.复制集的作用 (1) 高可用 防止设备(服务器.网络)故障. 提供自动failover 功能. 技术来保证数 (2) 灾难恢复 当发生故障时,可以从其他节点恢复. (3) 功能隔离 用于分析.报表 ...

  9. 【转】 XenServer架构之HA概述

    一.XenServer HA概述 XenServer HA是一套全自动功能设计,规划,安全地恢复出现问题的XenServe 主机上的虚拟机的功能组件. 启用 HA 后,XenServer 将持续监视池 ...

随机推荐

  1. Springmvc案例1----基于spring2.5的採用xml配置

    首先是项目和所须要的包截图: 改动xml文件: <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  2. 数据结构:点之间的最短距离--Floyd算法

    Floyd算法 Floyd算法 Dijkstra算法是用于解决单源最短路径问题的,Floyd算法则是解决点对之间最短路径问题的.Floyd算法的设计策略是动态规划,而Dijkstra採取的是贪心策略. ...

  3. windows 10 常用快捷键

    alt + space:最大.最小.关闭: 多屏互动:win+p 仅此电脑屏幕:复制:拓展:仅第二屏幕: 0. 不同于之前版本的变化 切换输入法:shift + alt: win + space: w ...

  4. Android中SQLite数据库操作(2)——SQLiteOpenHelper类

    如果开发者对SQL语法不熟悉,我要告诉你一个好消息,Android提供了一个SQLiteOpenHelper类. 在实际项目中很少使用SQLiteDatabase的方法(请看:http://blog. ...

  5. WPF制作的党旗

    原文:WPF制作的党旗 --------------------------------------------------------------------------------引用或转载时请保 ...

  6. 努比亚Z7 mini刷机教程_recovery卡刷机教程

    之前小编分享努比亚Z7 mini电话访问Root权限.recovery刷机教程. 所以对于朋友谁搞机整机的爱,左边是写第三方手机刷包.那么下面刷的家小编与您分享努比亚Z7 mini刷机教程手机. 一. ...

  7. Fiddler教程(Web调试工具)

    转载地址:写得很不错的fildder教程   http://kb.cnblogs.com/page/130367/ Fiddler的基本介绍 Fiddler的官方网站:  www.fiddler2.c ...

  8. python 教程 第二章、 类型

    第二章. 类型 常量 5,1.23,9.25e-3,’This is a string’,”It’s a string!” 1) 数 整数:2 长整数: 浮点数:3.23,52.3E-4 复数:-5+ ...

  9. Linux栈搜索算法优化随想

    Linux网络协议栈可以准确但仍进行说明,不用说,Netfilter.简单地说,TC够了,但有几个硬伤,本文不构成一个完整的记录,如果是随笔,不可当真. 0.发现物种 Linux堆栈作为一个纯软件实现 ...

  10. Node.js 中开源库探秘 object-assign | 全栈之路

    这篇内容呢,讲的是另一个技术栈 Node.js 系列,虽然和咱们这里的主题不是特别吻合,不过嘛,汲取多样性的养分是快速成长的好方法,也是现在流行的全栈工程师的必经之路. 由于这篇内容涉及的是 Node ...