MongoDB部署模式
目录
单节点模式(Standalone)
副本集模式(Replica Set)
分片集群模式(Sharded Cluster)
MongoDB有多种部署模式,可以根据业务需求选择适合的架构和部署方式。
单节点模式(Standalone)
单节点部署是单个MongoDB示例,也是最简单的部署方式,数据都存储在一个节点上,这种方式现在很少使用。
- 特点:
- 适用于开发、测试或小型应用场景。
- 无数据冗余,不具备高可用性。
- 单节点故障会导致服务中断。
- 优点:
- 易于设置和维护,资源消耗低。
- 适用场景:
- 开发测试环境。
- 对高可用性要求不高的应用。
副本集模式(Replica Set)
MongoDB 中的副本集是一组维护相同数据集的 mongod 进程。副本集提供冗余和高可用性,是所有生产部署的基础,副本集包含多个数据承载节点和一个可选的仲裁节点。在数据承载节点中,只有一个主节点,其他被为从节点。

主节点:主节点会接受所有的写入操作,副本集中只会有一个主节点
从节点:从节点存储也是一个完整的数据集,会复制主节点的oplog(oplog是主节点上的操作日志),并将这些操作应用于其数据集,以便从节点的数据集反映主节点的数据集状态。如果主节点不可用,则某个符合条件的从节点将进行选举,以将自己选举为新的主节点。
- 特点:
- 一组MongoDB实例组成,提供数据冗余和高可用性。
- 自动故障切换:主节点宕机后,剩余节点选举出新的主节点。
- 数据一致性高(强一致性)。
- 优点:
- 提供高可用性,保障数据安全。
- 适用于生产环境。
- 缺点:
- 需要额外的硬件资源。
- 配置和维护比单节点稍复杂。
- 适用场景:
- 需要高可用性和自动故障恢复的生产环境。
分片集群模式(Sharded Cluster)
副本集模式就是一个主从架构,虽然可以提升了高可用性,但是每个节点都需要存储全部数据,这种冗余的方式增加了资源的消耗。而分片集群可以提供更好的可用性。
分片:分片是一种跨多台机器分布数据的方法,mongo将数据分化为多个分片,每个分片保存的是数据的一部分,所有分片的数据叠加起来就是完整的数据。
分片集群:数据虽然被分配到多个分片节点上,但是每个分片也需要做冗余这样才能提高可用性,所有每个分片也会有多个副本集,就是一个副本集模式,有主分片和从分片数据。

MongoDB的分片集群由一下几个组件构成:
分片(shard):分片是存储数据的位置,每个分片都包含分片数据的一个子集,每个分片都必须作为一个副本集进行部署。
路由服务器(mongos):mongos 充当查询路由器,在客户端应用程序和分片集群之间提供接口,客户端访问分片集群是直接和mongos服务器连接而不会直接和具体的分片连接,mongos会将请求分配到具体的分片上进行操作,同时多个分片的结果也会聚合到mongos上进行处理。
配置服务器(config sderver):配置服务器会存储集群的元数据和配置设置,配置服务器最主要的作用就是记录集群分片的情况,mongos进行路由的时候需要知道路由到哪个分片,而这就要依据config server的分片配置数据,配置服务器也是副本集模式部署。

- 特点:
- 提供水平扩展能力,适合大规模数据和高并发应用。
- 数据根据分片键分布在不同的分片中。
- MongoDB 在分片集群中的分片之间分配读写工作负载,支持每个分片处理集群操作的子集。通过添加更多的分片,读写工作负载都可以在集群中横向扩展。
- 优点:
- 支持大数据集和高吞吐量。
- 可按需扩展存储和计算能力。
- 缺点:
- 部署和维护复杂,要求分片键设计合理。
- Config Server成为潜在的性能瓶颈。
- 适用场景:
- 大型分布式系统。
- 数据量超出单节点存储能力的场景。
相关文章:
MongoDB部署模式
目录 单节点模式(Standalone) 副本集模式(Replica Set) 分片集群模式(Sharded Cluster) MongoDB有多种部署模式,可以根据业务需求选择适合的架构和部署方式。 单节点模式(Standa…...
opencv笔记2
图像灰度 彩色图像转化为灰度图像的过程是图像的灰度化处理。彩色图像中的每个像素的颜色由R,G,B三个分量决定,而每个分量中可取值0-255,这样一个像素点可以有256*256*256变化。而灰度图像是R,G,B三个分量…...
springboot使用ssl连接elasticsearch
使用es时ssl证书报错 unable to find valid certification path to requested target 1.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId></dependency>2…...
Linux内核中的InfiniBand核心驱动:verbs.c分析
InfiniBand(IB)是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux内核中的InfiniBand子系统通过提供一组核心API(称为Verbs API)来支持InfiniBand设备的操作。drivers/infiniband/core/verbs.c是InfiniBand核心驱动的重要组…...
把网站程序数据上传到服务器的方法和注意事项
将网站程序数据上传到服务器是一个常见的网站开发和部署流程。主要涉及到FTP上传、FileZilla、rsync(在Linux下)、或其他相关的文件同步工具。以下是一般步骤和方法: 使用FTP: 1. 选择FTP客户端软件: - 常见的FTP客户端包括FileZilla(开源)、…...
完全平方数——唯一分解定理
文章目录 一、唯一分解定理是什么?1.定义2.示例3.代码模板 二、例题1>问题描述(2021蓝桥杯省赛)输入格式输出格式样例输入 1样例输出 1样例输入 2样例输出 2评测用例规模与约定 2>解题思路3>假娃3>C嘎嘎 一、唯一分解定理是什么&…...
(详细)Springboot 整合动态多数据源 这里有mysql(分为master 和 slave) 和oracle,根据不同路径适配不同数据源
文章目录 Springboot 整合多动态数据源 这里有mysql(分为master 和 slave) 和oracle1. 引入相关的依赖2. 创建相关配置文件3. 在相关目录下进行编码,不同路径会使用不同数据源 Springboot 整合多动态数据源 这里有mysql(分为maste…...
mock可视化生成前端代码
介绍:mock是我们前后端分离的必要一环、ts、axios编写起来也很麻烦。我们就可以使用以下插件,来解决我们的问题。目前支持vite和webpack。(配置超级简单!) 欢迎小伙伴们提issues、我们共建。提升我们的开发体验。 vi…...
Spring Boot(6)解决ruoyi框架连续快速发送post请求时,弹出“数据正在处理,请勿重复提交”提醒的问题
一、整个前言 在基于 Ruoyi 框架进行系统开发的过程中,我们常常会遇到各种有趣且具有挑战性的问题。今天,我们就来深入探讨一个在实际开发中较为常见的问题:当连续快速发送 Post 请求时,前端会弹出 “数据正在处理,请…...
鸿蒙Harmony json转对象(1)
案例1 运行代码如下 上图的运行结果如下: 附加1 Json_msg interface 案例2 import {JSON } from kit.ArkTS; export interface commonRes {status: numberreturnJSON: ESObject;time: string } export interface returnRes {uid: stringuserType: number; }Entry Component …...
常见的RocketMQ面试题及其简要答案
以下是一些常见的RocketMQ面试题及其简要答案: 一、基础概念与架构 简述RocketMQ是什么,并说明其主要作用。 答案: RocketMQ:是阿里巴巴在2012年开源的一款分布式消息中间件,目前已经捐赠给Apache软件基金会ÿ…...
C#Object类型的索引,序列化和反序列化
前言 最近在编写一篇关于标准Mes接口框架的文章。其中有一个非常需要考究的内容时如果实现数据灵活和可使用性强。因为考虑数据灵活性,所以我一开始选取了Object类型作为数据类型,Object作为数据Value字段,String作为数据Key字段,…...
Unity3D项目开发中的资源加密详解
前言 在Unity3D游戏开发中,保护游戏资源不被非法获取和篡改是至关重要的一环。资源加密作为一种有效的技术手段,可以帮助开发者维护游戏的知识产权和安全性。本文将详细介绍Unity3D项目中如何进行资源加密,并提供相应的技术详解和代码实现。…...
微调Qwen2:7B模型,加入未知信息语料
对于QWen2这样的模型,在微调的时候,语料的投喂格式满足ChatML这样的格式!!! OpenAI - ChatML: 下面是ChatML格式的介绍: https://github.com/openai/openai-python/blob/release-v0.28.0/chatml.mdhttps://github.com/openai/openai-python/blob/release-v0.28.0/chat…...
【Ubuntu】安装SSH启用远程连接
【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 …...
【理论】测试开发工程师进阶路线
一、腾讯与阿里的质量保证服务参考 阿里云效测试能力与架构 腾讯 WeTest 测试能力全景图 二、测试开发技术体系 1.用户端测试: Web/App 测试 Web/App 自动化测试 用户端专项测试 用户端安全测试 2.服务端测试: 接口协议与 Mock 接口自动化测试 服务端…...
【BQ3568HM开发板】如何在OpenHarmony上通过校园网的上网认证
引言 前面已经对BQ3568HM开发板进行了初步测试,后面我要实现MQTT的工作,但是遇到一个问题,就是开发板无法通过校园网的认证操作。未认证的话会,学校使用的深澜软件系统会屏蔽所有除了认证用的流量。好在我们学校使用的认证系统和…...
動態住宅IP提升網站訪問成功率
動態住宅IP通常與普通家庭用戶的網路連接相關聯。這種IP地址的特點在於,它是動態變化的,用戶在每次連接時可能會獲得不同的IP地址。這與靜態IP形成了鮮明對比,後者在連接期間保持不變。傳統上,IP地址分為住宅IP和數據中心IP兩類。…...
2024年博客之星主题创作|2024年蓝桥杯与数学建模年度总结与心得
引言 2024年,我在蓝桥杯编程竞赛和数学建模竞赛中投入了大量时间和精力,这两项活动不仅加深了我对算法、数据结构、数学建模方法的理解,还提升了我的解决实际问题的能力。从蓝桥杯的算法挑战到数学建模的复杂应用,我在这些竞赛中…...
Spring Boot/MVC
一、Spring Boot的创建 1.Spring Boot简化Spring程序的开发,使用注解和配置的方式开发 springboot内置了tomact服务器 tomact:web服务器,默认端口号8080,所以访问程序使用8080 src/main/java:Java源代码 src/main/resource:静态资源或配置文件,存放前端代码(js,css,html) s…...
QGIS里怎么加载NASA的SRTM高程数据?从下载到3D可视化的保姆级教程
QGIS实战:从NASA SRTM高程数据下载到3D地形可视化全流程指南 当你第一次在QGIS中看到那些起伏的山脉、蜿蜒的河谷以三维形式呈现时,那种将地理数据转化为视觉故事的成就感是无与伦比的。NASA的SRTM(航天飞机雷达地形测绘任务)高程…...
CameraLink三种模式(Base/Medium/Full)信号传输差异对比与选型建议
CameraLink三种工作模式深度解析与工业选型实战指南 在工业视觉检测线上,一台高速运行的贴片机正以每分钟800次的速度捕捉元件位置。当工程师将相机从200万像素升级到800万像素时,原本稳定的图像突然出现随机噪点——这往往是CameraLink模式选择不当导致…...
深度解析DeepMIMO:毫米波大规模MIMO信道建模的5个架构设计决策
深度解析DeepMIMO:毫米波大规模MIMO信道建模的5个架构设计决策 【免费下载链接】DeepMIMO-matlab DeepMIMO dataset and codes for mmWave and massive MIMO applications 项目地址: https://gitcode.com/gh_mirrors/de/DeepMIMO-matlab 在5G/6G通信系统演进…...
【Mojo+Python企业级混合编程实战指南】:20年架构师亲授3大高频场景落地方法论
第一章:Mojo与Python混合编程的企业级价值全景图Mojo 是一种专为 AI 原生系统设计的现代系统编程语言,兼具 Python 的表达力与 C/Rust 级别的性能。在企业级 AI 工程实践中,Mojo 并非旨在替代 Python,而是以“无缝互操作”为核心理…...
Python到Android的终极桥梁:如何用python-for-android将Python应用无缝转换为原生APK
Python到Android的终极桥梁:如何用python-for-android将Python应用无缝转换为原生APK 【免费下载链接】python-for-android Turn your Python application into an Android APK 项目地址: https://gitcode.com/gh_mirrors/py/python-for-android 在移动应用开…...
用鲸鱼优化算法(WOA)整定PID参数:Matlab与Simulink实战
鲸鱼优化算法(WOA)整定 PID 参数,m 文件加 simulink仿真,仿真程序给出适应度优化曲线,参数优化曲线以及优化对比波形,适用 matlab 2021b 及以上版本在自动控制领域,PID控制器因其结构简单、稳定…...
Docker测试学习思路
Docker 核心概念学习与实战指南本文系统梳理 Docker 学习的核心思路与方法,用通俗类比帮助理解 Docker 的本质,涵盖镜像构建、容器运行、网络通信、数据持久化、资源限制五大核心能力,适合初学者建立清晰的 Docker 知识框架。一、Docker 到底…...
快速上手ms-swift:图形界面操作大模型全流程,保姆级指导
快速上手ms-swift:图形界面操作大模型全流程,保姆级指导 1. 为什么选择ms-swift? 在人工智能领域,大模型的训练和部署一直是个技术门槛较高的工作。传统方式需要处理复杂的命令行参数、环境配置和代码调试,这让很多非…...
【架构心法】撕碎“实验室完美”的傲慢!直视滚刀与高压现场的物理混沌,论工业级控制系统的“防御性悲观主义”
摘要:在纯净的实验室里,“1”永远是“1”,“0”永远是“0”。但在重型机械的施工现场,物理法则充满了不可预测的恶意。无数工程师带着“代码没 Bug 就不会死机”的天真走向现场,最终却在震动、高温与电磁噪声的围剿下全…...
从MATLAB到C++:手把手教你将鱼眼相机标定结果(Scaramuzza模型)部署到OpenCV项目
从MATLAB到C:手把手教你将鱼眼相机标定结果(Scaramuzza模型)部署到OpenCV项目 鱼眼相机因其超广视角在机器人导航、虚拟现实等领域应用广泛。但MATLAB标定结果如何无缝迁移到C工程环境?本文将彻底解决这个痛点,带您完成…...
