mongodb读写分离的一些选项的理解
默认情况下 驱动程序会将所有的请求路由到主节点 这通常也是你需要的 但是也可以通过设置驱动程序的读取首选项(read preferences)配置其他选项 可以在读选项中设置需要将查询路由到的服务器的类型
- 考虑一致性 对于一致性要求非常高的应用程序 不应该从备份节点读取数据 通常来说 备份节点的数据只会比主节点 落后几号秒 ,但是由于加载问题 配置错误 网络故障等原因 落后几分钟几个小时 几天也是有可能 但是客户端并不知道备份节点的数据有多新鲜 读取一个远远落后于主节点的数据 客户端不会觉得有任务问题 至于这些数据 是不是有问题这就需要你自己根据业务来判断了 如果应用程序需要读取他自己的写操作 那么就不要把读请求发给备份节点 后果自己想.因为客户端发送请求的速度可能会不备份节点复制操作要快 为了能够始终将写请求和读请求发给主节点 许多将读选项设置为Primary 默认就是这个选项 如果没有主节点 查询会出错误
- 考虑负载均衡 许多用户将请求发给备份节点 以便实现分布式的负载均衡 例如如果你的服务器每秒只能处理1000次查询 而你需要每秒3000次的查询 那么就需要设置几个备份节点 来分担一些数据加载的工作 这种做法很危险 容易系统意外过载 一旦出现这种情况 很难恢复 假如你遇到了上述情况 你决定创建拥有4个成员的副本集 每个备份节点的压力都在可承受范围内 整个系统也在正常运转 后来其中一个备份节点崩溃了.那么剩余的每个成员的负载都是100 如果需要恢复刚刚崩溃的成员 那么就需要从其他成员处复制数据 这个崩溃的成员换选择一个同步源 这样 这个作为同步源的成员的要过载 服务器过载晋朝导致新能变慢,副本集性能进一步降底 然后强制其他成员承担过多的负载 导致这些成员变得更慢 这是一个恶心循环, 如果能明确知道每台服务器能够承受的负载,你可能会觉得自己能够更好地因对这种情况 使用五台 而不是4台 这样即使1台崩溃 也不会过载 即使这样你也要处理其他服务器负载过大的情况 一个更好地选择就是用分片做分布式负载
mongodb读写分离的一些选项的理解的更多相关文章
- 012.MongoDB读写分离
一 读写分离概述 1.1 读写分离描述 从应用程序角度来看,使用Replica Set 和使用单台mongo很像.默认的驱动程序会连接primary节点,并且将所有读写请求都路由到主节点.但也可以通过 ...
- 实现MongoDB读写分离的“读偏好”介绍
在某些情况下,将读请求发送给副本集的备份节点是合理的,例如,单个服务器无法处理应用的读压力,就可以把查询请求路由到可复制集中的多台服务器上.现在绝大部分MongoDB驱动支持读偏好设置(read pr ...
- MongoDB副本集(一主两从)读写分离、故障转移功能环境部署记录
Mongodb是一种非关系数据库(NoSQL),非关系型数据库的产生就是为了解决大数据量.高扩展性.高性能.灵活数据模型.高可用性.MongoDB官方已经不建议使用主从模式了,替代方案是采用副本集的模 ...
- spring mongodb 复制集配置(实现读写分离)
注:mongodb当前版本是3.4.3 spring连接mongodb复制集的字符串格式: mongodb://[username:password@]host1[:port1][,host2[: ...
- MongoDB如何实现读写分离
MongoDB如何实现读写分离 MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对 ...
- mongodb的读写分离
转自:http://blog.csdn.net/sd0902/article/details/21538621 mongodb的读写分离使用Replica Sets来实现 对于replica set ...
- Redis+MongoDB 最佳实践 做到读写分离 -摘自网络
方案1. (被否定) 加上Redis,做到MongoDB的读写分离,单一进程从MongoDB及时把任务同步到Redis中. 看起来很完美,但是上线后出现了各种各样的问题,列举一下: 1.Redis队列 ...
- MongoDb的“not master and slaveok=false”错误及解决方法,读写分离
首先这是正常的,因为SECONDARY是不允许读写的, 在写多读少的应用中,使用Replica Sets来实现读写分离.通过在连接时指定或者在主库指定slaveOk,由Secondary来分担读的压力 ...
- MongoDB的搭建并配置主从以及读写分离
1.环境准备 1.Centos7 2.mongodb3.4.93.三台机器IP分别是:10.170.1.16.10.170.1.18.10.170.1.33 2.mongdb数据库的安装 如下操作是 ...
随机推荐
- box-sizing重置
html { /*-webkit-box-sizing: border-box; -moz-box-sizing: border-box;*/ box-sizing: border-box; } *, ...
- jQuery初级
一.简介 定义 jQuery创始人是美国John Resig,是优秀的Javascript框架: jQuery是一个轻量级.快速简洁的javaScript库.源码戳这 jQuery对象 jQuery产 ...
- nodejs安装教程
http://www.runoob.com/nodejs/nodejs-install-setup.html nodejs官方下载,之后配置环境path,npm随着nodejs安装,自动安装 查看no ...
- 【BZOJ4300】绝世好题(二进制,DP)
题意: n<=100000,ai<=2*10^9 思路:按二进制逐位考虑,只要有至少1位取and后为1就可以接下去 设dp[i]为第i位取and之后为1的最长的序列长度,意会一下 #inc ...
- [CODEVS2035]机票打折问题
题目描述 Description .输入机票原价(3到4位的正整数,单位:元),再输入机票打折率(小数点后最多一位数字).编程计算打折后机票的实际价格(单位:元.计算结果要将个位数四舍五入到十位数“元 ...
- input file 修改按钮名称
解决方法: 1)页面上放个隐藏的<input type=“file” /> 2)然后加上一个文本input(type="text")和一个按钮input(type=&q ...
- Union和Concat的区别,以及它们的速度 (C# Linq)
原文发布时间为:2011-06-29 -- 来源于本人的百度文章 [由搬家工具导入] Union 会去重复后合并。而Contact不去重直接合并。 所以Contact当然比较快了。所以如果你不用去重的 ...
- Eclipse配置关联Tomcat并运行项目
打开Eclipse,单击“Window”菜单,选择最下方的“Preferences”. 单击“Server”选项,选择下方的“Runtime Environments”. 点击“Add”添加Tomca ...
- win10下怎么配置以KDiff3作为merge tool和diff tool
系统环境: OS: Windows 10 Git 2.6.1.windows.1 KDiff3 0.9.98 (64 bit) 具体代码如下: git config --global --add me ...
- android 的渐变背景设置文件
main.xml:<button android:layout_width="wrap_content" android:layout_height="wrap_c ...