MongoDB部署模式

news2025/1/26 12:31:18

目录

单节点模式(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成为潜在的性能瓶颈。
  • 适用场景
    • 大型分布式系统。
    • 数据量超出单节点存储能力的场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2283447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国自然重点项目|代谢影像组学只能预测肺癌靶向耐药的关键技术与应用|基金申请·25-01-25

小罗碎碎念 今天和大家分享一个国自然重点项目,项目执行年限为2019.01 - 2023.12,直接费用为294万。 项目聚焦肺癌靶向治疗中药物疗效预测难题,整合多组学与代谢影像数据展开研究。 在研究过程中,团队建立动物模型获取多维数据&am…

NFT Insider #166:Nifty Island 推出 AI Agent Playground;Ronin 推出1000万美元资助计划

引言:NFT Insider 由 NFT 收藏组织 WHALE Members、BeepCrypto 联合出品, 浓缩每周 NFT 新闻,为大家带来关于 NFT 最全面、最新鲜、最有价值的讯息。每期周报将从 NFT 市场数据,艺术新闻类,游戏新闻类,虚拟…

Word 中实现方框内点击自动打 √ ☑

注: 本文为 “Word 中方框内点击打 √ ☑ / 打 ☒” 相关文章合辑。 对第一篇增加了打叉部分,第二篇为第一篇中方法 5 “控件” 实现的详解。 在 Word 方框内打 √ 的 6 种技巧 2020-03-09 12:38 使用 Word 制作一些调查表、检查表等,通常…

Cpp::静态 动态的类型转换全解析(36)

文章目录 前言一、C语言中的类型转换二、为什么C会有四种类型转换?内置类型 -> 自定义类型自定义类型 -> 内置类型自定义类型 -> 自定义类型隐式类型转换的坑 三、C强制类型转换static_castreinterpret_castconst_castdynamic_cast 四、RTTI总结 前言 Hell…

4.flask-SQLAlchemy,表Model定义、增删查改操作

介绍 SQLAlchemy是对数据库的一个抽象 开发者不用直接与SQL语句打交道 Python对象来操作数据库 SQLAlchemy是一个关系型数据库 安装 flask中SQLAlchemy的配置 from flask import Flask from demo.user_oper import userdef create_app():app Flask(__name__)# 使用sessi…

20250122-正则表达式

1. 正则标记 表示一位字符:\\ 表示指定的一位字符:x 表示任意的一位字符:. 表示任意一位数字:\d 表示任意一位非数字:\D 表示任意一个字母:[a-zA-Z](大写或小写) 表示任意一个…

SpringBoot3+Vue3开发学生选课管理系统

功能介绍 分三个角色登录:学生登录,老师登录,教务管理员登录,不同用户功能不同! 1.学生用户功能 选课记录,查看选课记录,退选。选课管理,进行选课。通知管理,查看通知消…

媒体新闻发稿要求有哪些?什么类型的稿件更好通过?

为了保证推送信息的内容质量,大型新闻媒体的审稿要求一向较为严格。尤其在商业推广的过程中,不少企业的宣传稿很难发布在这些大型新闻媒体平台上。 媒体新闻发稿要求有哪些?就让我们来了解下哪几类稿件更容易过审。 一、媒体新闻发稿要求有哪…

“AI教学实训系统:打造未来教育的超级引擎

嘿,各位教育界的伙伴们,今天我要跟你们聊聊一个绝对能让你们眼前一亮的教学神器——AI教学实训系统。作为资深产品经理,我可是亲眼见证了这款系统如何颠覆传统教学,成为未来教育的超级引擎。 一、什么是AI教学实训系统&#xff1f…

基于JAVA的微信点餐小程序设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…

【2024年华为OD机试】(A卷,200分)- 查找树中元素 (JavaScriptJava PythonC/C++)

一、问题描述 题目解析 题目描述 题目要求根据输入的坐标 (x, y) 在树形结构中找到对应节点的内容值。其中: x 表示节点所在的层数,根节点位于第0层,根节点的子节点位于第1层,依此类推。y 表示节点在该层内的相对偏移,从左至右,第一个节点偏移为0,第二个节点偏移为1,…

Pyecharts图表交互功能提升

在数据可视化中,交互功能可以极大地提升用户体验,让用户能够更加深入地探索数据。Pyecharts 提供了多种强大的交互功能,本篇将重点介绍如何使用缩略轴组件、配置图例交互,让我们的数据可视化作品更加生动有趣。 一、缩略轴组件使…

用layui表单,前端页面的样式正常显示,但是表格内无数据显示(数据库连接和获取数据无问题)——已经解决

这是我遇到的错误 原因:后端控制台的数据格式没有设置清楚 解决:1、加注释 ResponseBody ,确保返回的是json数据。 2、要传三个参数到前端,如下图第二个红色框框所示。因为layui框架代码如果未修改,默认要传入这三个…

单片机基础模块学习——按键

一、按键原理图 当把跳线帽J5放在右侧,属于独立按键模式(BTN模式),放在左侧为矩阵键盘模式(KBD模式) 整体结构是一端接地,一端接控制引脚 之前提到的都是使用了GPIO-准双向口的输出功能&#x…

mybatis是什么?有什么作用?mybatis的简单使用

mybatis是什么? MyBatis 是一个持久层框架。 有什么作用? 简化了对数据库数据的操作。 如何简化数据操作的? MyBatis 通过提供 SQL 映射、动态 SQL、结果映射、事务管理等功能,我们直接去用就可以了。 怎么使用?&…

webpack 打包自己的--windows

第一步安装node 1、安装nodejs:https://nodejs.org/zh-cn/download/releases/ 一、Window系统配置: 打开命令窗口,进入当前工程目录 npm配置淘宝镜像:npm config set registry http://registry.npm.taobao.org/ npm安装parcel-bundler:npm install -g parcel-bund…

微服务学习-Nacos 注册中心实战

1. 注册中心的设计思路 1.1. 微服务为什么会用到注册中心? 服务与服务之间调用需要有服务发现功能;例如订单服务调用库存服务,库存服务如果有多个,订单服务到底调用那个库存服务呢(负载均衡器)&#xff0…

MySQL数据库 - 语法知识

一 数据模型 1 关系型数据库管理系统(RDBMS) 概念:建立在关系模型基础上,有多张相互连接的二维表组成的数据库。 特点: 使用表存储数据,格式统一,便于维护。使用SQL语言操作,标准…

有限元分析学习——Anasys Workbanch第一阶段笔记(15)接触间隙处理与赫兹接触

目录 0 序言 1 接触的间隙处理 1.1 结果对比 1.2 处理方法 2 赫兹接触 0 序言 本章主要介绍间隙出现时的三种解决方法,齿轮点蚀/表面剥落涉及的赫兹接触的一些理论知识。 1 接触的间隙处理 在实际产品过程中,很多时候由于设计问题,原本…

查询本周一到周五的数据

查询sql SELECT CASEWHEN TO_CHAR(T.BEGINDATE, D) 2 THEN 周一WHEN TO_CHAR(T.BEGINDATE, D) 3 THEN 周二WHEN TO_CHAR(T.BEGINDATE, D) 4 THEN 周三WHEN TO_CHAR(T.BEGINDATE, D) 5 THEN 周四WHEN TO_CHAR(T.BEGINDATE, D) 6 THEN 周五END AS DAY_NAME,T.COLUMN1,T.COL…