mongoDB读写分离

7.MongoDB之读策略readPreference 参考官网这里:https://docs.mongodb.com/manual/reference/connection-string/#connections-read-preference 对于分布式数据库(多节点),更好的实现数据隔离、以及数据读策略的多样化。 1、readPreference readPreference 主要控制客户端driver从副本集(Replica Set)的那个节点读取数据,这个特性可以方便的配置读写分离、就近去读等策略。各个配置的含义如下: (1)primary:只 阅读详情
背景

最近项目数据量越来越大,导致mongo的数据库压力也越来越大。在结构优化、索引优化之后,为了进一步优化系统,想到读写分离。

java端配置读写分离

这里,mongo采用的是副本集(Replica Set)的部署方式
这里采用的事xml配置文件形式:
read-preference=“SECONDARY_PREFERRED”,这个配置

<!--读写分离详细说明:
		mongodb复制集对读写分离的支持是通过Read Preferences特性进行支持的,这个特性非常复杂和灵活。
		应用程序驱动通过read reference来设定如何对复制集进行读写操作,默认客户端驱动所有的读操作都是直接访问primary节点的,从而保证了数据的严格一致性。
		支持五种 read preference模式:
		1.primary:主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
		2.primaryPreferred:首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
		3.secondary:从节点,读操作只在从节点,如果从节点不可用,报错或者抛出异常。
		4.secondaryPreferred:首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
		5.nearest:最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点,关于最邻近的成员请参考。-->
<mongo:mongo-client id="mongo" replica-set="${mongo.replicationSet}">
		<mongo:client-options
				write-concern="NORMAL"
				connections-per-host="${mongo.connectionsPerHost}"
				threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
				connect-timeout="${mongo.connectTimeout}"
				read-preference="SECONDARY_PREFERRED"
				max-wait-time="${mongo.maxWaitTime}"
				socket-keep-alive="${mongo.socketKeepAlive}"
				socket-timeout="${mongo.socketTimeout}"
		/>
	</mongo:mongo-client>

支持五种 read preference模式:
1.primary:主节点,默认模式,读操作只在主节点,如果主节点不可用,报错或者抛出异常。
2.primaryPreferred:首选主节点,大多情况下读操作在主节点,如果主节点不可用,如故障转移,读操作在从节点。
3.secondary:从节点,读操作只在从节点,如果从节点不可用,报错或者抛出异常。
4.secondaryPreferred:首选从节点,大多情况下读操作在从节点,特殊情况(如单主节点架构)读操作在主节点。
5.nearest:最邻近节点,读操作在最邻近的成员,可能是主节点或者从节点,关于最邻近的成员请参考。

mongo的集群方式有三种:
  • 1、副本集(Replica Set)
    其实简单来说就是集群当中包含了多份数据,保证主节点挂掉了,备节点能继续提供数据服务,提供的前提就是数据需要和主节点一致
    如图
  • 2、Master-Slaver(主从)
    也就是主备,官方已经不推荐使用。
  • 3、Sharding(分片集群)
  • 如图
MongoDB集群读优先策略 目前我们项目中使用的MongoDB Java客户端版本为2.9.1,这次的读写分离改造是基于2.9.1的。目前MongoDB 已经发布了最新的3.0版本,对应的Java客户端是3.0.1,3.0版本在以前MongoDB .8版本上进行了重大的改造,进行了许多的优化和升级,包含插件式的存储引擎(类似于MySQL的架构),硬盘数据压缩,MVCC的支持,复制集升级等等,数据的读写性能都有很大的提升 阅读详情

相关推荐

阿里云MongoDB避坑指南:readPreference设置不当引发的数据延迟问题排查

本文深入剖析了在阿里云MongoDB环境中,因readPreference(读取偏好)设置不当,特别是secondaryPreferred模式未合理配置maxStalenessSeconds参数,导致从节点数据延迟问题的排查与解决方案。文章提供了从问题诊断、参数优化到监控告警的完整实践指南,帮助开发与运维人员规避此类数据一致性问题。

solidity8miner的博客 215

记一次MongoDB读写策略问题排查

记一次MongoDB读写策略问题

gbfeng123的博客 696

mongodb读写分离 MongoDatabase

package com.ucia.demo; import org.bson.Document; import com.mongodb.BasicDBObject; import com.mongodb.MongoClient; import com.mongodb.MongoClientURI; import com.mongodb.client.FindIterable; import com.mongodb.client.MongoCollection; import com.mongodb.cl

GengJL 5657

MongoDB读数据策略

MongoDB是开源文档型NoSQL数据库,它的数据模型灵活,具有高扩展性、高可用性、易用性等特点,能够存储半结构化的数据,并且有丰富的查询语言和索引类型,当前MongoDB已广泛的用在各企业的核心业务系统中。MongoDB也是db-engines排名最高的非关系型数据库。司马辽太杰是 NineData 工程师。NineData 向企业和个人提供高效、安全的数据库SQL开发、数据库备份、数据复制/迁移/集成、数据对比等能力的产品,它是开箱即用的SaaS服务,可以快速提升企业SQL开发效率,保障企业数据安全。

云原生智能数据管理平台 1596

anaconda安装-超详细版

文章目录一、anaconda安装1.1 anaconda安装地址1.2 安装详细步骤检验安装是否成功更改conda源(后续安装第三方库可以加快速度) 一、anaconda安装 Anaconda 是一个用于科学计算的 Python 发行版,支持 Linux, Mac, Windows, 包含了众多流行的科学计算、数据分析的 Python 包。装anaconda,就不需要单独装python了。 anaconda优点: 1、anaconda里面集成了很多关于python科学计算的第三方库,主要是安装方便,而p

in546的博客 25万+

Dify 从入门到熟悉100 天的学习大纲

理解 Dify 的核心概念,熟悉操作界面,并能创建简单的 AI 应用。祝你在这 100 天的旅程中学有所成,成为一名优秀的 AI 应用开发者!掌握生产环境部署、监控、调优,并关注 Dify 生态和前沿动态。探索多模态、Agent、API 集成、性能优化等高级主题。掌握工作流编排、高级提示词技巧、知识库优化等核心功能。

IT深耕十余载,大道之简 1733

MongoDB读写分离

背景 最近项目数据量越来越大,导致mongo的数据库压力也越来越大。在结构优化、索引优化之后,为了进一步优化系统,想到读写分离。 java端配置读写分离 这里,mongo采用的是副本集(Replica Set)的部署方式 这里采用的事xml配置文件形式: read-preference=“SECONDARY_PREFERRED”,这个配置。 <!--读写分离详细说明: mongodb复制集对读写分离的支持是通过Read Preferences特性进行支持的,这个特性非常复杂和灵活。 应用程序驱

站在墙头上的博客 3451

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1588

mongoDB 读写分离

mongoDB 读写分离 ******************************************** 使用示例 *********************************** application.yml spring: data: mongodb: uri: mongodb://192.168.57.120:2711...

weixin_43931625的博客 317

【顾邦小讲堂】第十九期 RC Snubber吸收电路详解:抑制MOSFET振铃现象与过冲的设计技巧!

通过RC Snubber电路有效抑制MOSFET DS端的过冲及振铃现象,帮助工程师们在设计中提升电路的稳定性和可靠性

GBupupup的博客 3784

ComfyUI-controlnet控制出图

提供加载预处理器节点。

Bu2n的博客 5494

MongoDB的读写分离技术方案

MongoDB 的读写分离是一种优化性能和可扩展性的方法,通常通过主从复制(Replica Set)实现。

yuanpan的专栏 1751

深入解析雪球网股票行情数据爬取:基于WebSocket与API的实时数据获取技术实践

本文详细介绍了如何使用Python爬虫技术获取雪球网的股票行情数据,涵盖了WebSocket实时数据连接和RESTful API接口调用两种主要技术方案。完整的WebSocket客户端,支持实时行情订阅和数据处理功能丰富的API客户端,支持多种数据类型的获取数据存储和管理系统,使用SQLite进行数据持久化实时监控和预警系统,支持自定义预警规则技术指标计算,提供基本的数据分析功能。

2201_76125261的博客 1252

mongodb的读写分离

mongodb的读写分离使用Replica Sets来实现 对于replica set 中的secondary 节点默认是不可读的。在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。 如果通过shell访问mongo,要在secondary进行查询。会出现如下

过天的专栏 2万+

执行HDevelop项目

这一节,我们讲述的是如何用HDevEngine加载和执行一个HDevelop项目。代码部分来源于示例程序exec_program(源文件exec_program.cpp),检测塑料零件边界上的毛刺。1.Step 1:初始化首先,我们包含HALCON/C++和HDevEngine头文件以及命名空间。注意到在这个示例程序中,HDevEngine头文件已经包含在my_hdevoperatorimpl中,所

Z's Palace 2994

YOLOv11改进策略【Neck】| 适用关键点检测:PSFM,深层语义融合模块 引入深层与浅层交叉注意力机制,动态建模不同层级的全局语义依赖关系

本文记录的是利用PSFM 模块改进 YOLOv11 的颈部融合部分,专门用于关键点检测。PSFM模块(Profound Semantic Fusion Module,深层语义融合模块) 通过在特征提取网络的深层引入跨模态交叉注意力机制,动态建模红外与可见光特征的全局语义依赖关系。本文将其应用到的颈部部分,融合深层与浅层特征,捕捉长距离语义关联,增强融合特征的判别性与场景理解能力,为检测头提供包含全局上下文的高层语义表示,从而提升模型在复杂场景下的目标检测准确率与语义推理鲁棒性。Rethinking the

Limiiiing的博客 649

MongoDB - MongoDB读写分离:如何通过副本集实现

MongoDB 读写分离实现指南 摘要:本文深入讲解如何通过MongoDB副本集实现读写分离,解决高并发场景下的数据库性能瓶颈问题。文章首先分析了主从节点的不同角色,解释了oplog数据同步机制,并详细介绍五种读偏好模式(primary、primaryPreferred、secondary、secondaryPreferred、nearest)的特点和适用场景。随后通过Java代码示例,展示了连接配置、查询操作和事务处理的具体实现方法。文中还讨论了读写分离带来的性能提升(实测QPS可达3万)、数据一致性挑战

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

mongodb java读写分离_mongodb的读写分离

mongodb的读写分离使用Replica Sets来实现对于replica set 中的secondary 节点默认是不可读的。在写多读少的应用中,使用Replica Sets来实现读写分离。通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作。如果通过shell访问mongo,要在secondary进行查询。会出现如下错误:imageSe...

weixin_31856057的博客 375

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【Mongodb】 Replica set 的读写分离

在写多读少的应用中,使用Replica Sets来实现读写分离。 通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力,Primary只承担写操作 对于replica set 中的secondary 节点默认是不可读的 [mongodb@rac4 bin]$ mongo 127.0.0.1:28019 MongoDB shell version: 2

livefun的专栏 2236

012.MongoDB读写分离

一 读写分离概述 1.1 读写分离描述 从应用程序角度来看,使用Replica Set 和使用单台mongo很像。默认的驱动程序会连接primary节点,并且将所有读写请求都路由到主节点。但也可以通过设置驱动程序的Read Preferences 配置其他选项,将读请求路由到其他节点。 通常官网中建议不使用向从节点取数据。原因如下: 所有的从节点拥有与主节点一样的写入负载,读的加入会增...

weixin_30367873的博客 435

MongoDB副本集搭建和读写分离配置

MongoDB副本集(Replication Set)由一组mongod实例(进程)组成,包含一个Primary节点和多个Secondary节点.客户端数据写入Primary节点。Secondary节点从Primary节点同步数据。以保持副本集内所有成员存储相同的数据集。Primary节点故障时会自动选举出一个新的Primary节点。:将数据从一个区域复制到另一个区域,减少另一个区域的读延迟。:不同类型的压力分别在不同节点上执行。:在数据中心故障时快速切换到异地。

千月落 2576

MongoDB同步复制,读写分离。

MongoDB复制原理 mongodb各个节点常见的搭配方式为:一主一从、一主多从。 mongodb的复制至少需要两个节点。其中一个是主节点,负责处理客户端请求,其余的都是从节点,负责复制主节点上的数据。 1:我们把mongodb文件夹放在D盘,同时在其他的服务器也安装mongoDB。 2:启动D盘上的mongodb,到对应的bin目录,输入命令:>mo

terry_zeng的专栏 4127
上一篇: mongoDB的写入安全机制
下一篇: springBoot启动时的初始化
冰_先森
博客等级 码龄10年 0粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值