国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > MongoDB > mongodb副本集如何读写分离?

mongodb副本集如何读写分离?

头像

yang

2020-05-23 13:35:514271浏览 · 0收藏 · 0评论

首先我们先来搭建一个副本集(因为没有那么多服务器机器,这里采用在一台机器上,使用不同的端口号模拟不同的机器上的Mongodb实例)。

第一步:我们在本机的1111、2222和3333三个端口上启动三个不同的Mongodb实例;

mongod --port 1111 --dbpath F:/mongodb1/data/db --logpath F:/mongodb1/data/log/mongodb.log --replSet test --logappend
mongod --port 2222 --dbpath F:/mongodb2/data/db --logpath F:/mongodb2/data/log/mongodb.log --replSet test --logappend
mongod --port 3333 --dbpath F:/mongodb3/data/db --logpath F:/mongodb3/data/log/mongodb.log --replSet test --logappend

在这里我们启动了三个Mongodb实例,并指定了相应的数据目录和日志目录,需要说明的是,这里需要使用--replSet说明该Mongodb实例是副本集中的节点,而该副本集的名称是test。

第二步:登录到一个实例上,编写指令,将三个不同的Mongodb实例结合在一起形成一个完整的副本集;

config_test={"_id":"test",members:[
    {_id:0,host:"127.0.0.1:1111"},
    {_id:1,host:"127.0.0.1:2222"},
    {_id:2,host:"127.0.0.1:3333"},
]};

第三步:通过执行下面的命令初始化副本集。

rs.initiate(config_test);

这里使用上面的配置初始化Mongodb副本集。

通过上面的三步,便可以简单的搭建起一个由三个Mongodb实例构成的名称为test的副本集了。如果想查看副本集的状态,可以使用rs.status()命令来进行查看。

副本集读写分离结构如下图所示:

为了在副本集上实现读写分离,我们需要实现以下两步:

(1)在副本节点上设置setSlaveOk;

(2)代码层面,在读操作过程中设置从副本节点读取数据,如下所示:

<span style="font-family:KaiTi_GB2312;font-size:18px;">public class TestMongoDBReplSet { 
	public static void main(String[] args)  {
		try { 
			List<ServerAddress> addresses = new ArrayList<ServerAddress>();  
            ServerAddress address1 = new ServerAddress("127.0.0.1" , 1111); 
			ServerAddress address2 = new ServerAddress("127.0.0.1" , 2222); 
			ServerAddress address3 = new ServerAddress("127.0.0.1" , 3333); 
			addresses.add(address1);  
            addresses.add(address2); 
			addresses.add(address3); 
			MongoClient client = new MongoClient(addresses); 
			DB db = client.getDB( "test"); 
			DBCollection coll = db.getCollection( "test"); 
			
			BasicDBObject object = new BasicDBObject();  
            object.append( "key1", "value1" ); 
			ReadPreference preference = ReadPreference.secondary();  
			DBObject dbObject = coll.findOne(object, null , preference);  
			System. out .println(dbObject);  
		} catch (Exception e) { 
			e.printStackTrace();  
        } 
	} 
} </span>

读参数除了secondary以外,还有其他几个参数可以使用,他们的含义分别如下所示:

primary:默认参数,只从主节点上进行读取操作;

primaryPreferred:大部分从主节点上读取数据,只有主节点不可用时从secondary节点读取数据。

secondary:只从secondary节点上进行读取操作,存在的问题是secondary节点的数据会比primary节点数据“旧”。

secondaryPreferred:优先从secondary节点进行读取操作,secondary节点不可用时从主节点读取数据;

nearest:不管是主节点、secondary节点,从网络延迟最低的节点上读取数据。

更多mongodb相关文章请关注python自学网

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

暗黑吃瓜网官网CGW.73| 11人裸体航班女服务员是谁| 男同桌硬了把我内裤也脱了 | 《老板娘2》完整版| 《医务室的小秘密》第一季免费观.| 《帐篷里的秘密》动漫| 亚洲第一大综合区的就业前景| 做一次爱下面多久才能恢复| 姑妄言| 精品一区二区三区| 活着 韩国| 妖精视频| 四虎网站| 麻豆蜜桃69无码专区在线| 玉蒲团2之艳乳欲仙欲》| 哈尼克孜| 1-46集电视剧免费观看| 征服双收岳女两2| 吴彦祖| 动漫《纯洁的修女》在线看| 《炸裂吧!巨棒》免费阅读漫画| 偏偏宠爰| 儿媳妇免费播放全部电视剧| 妈妈的绣感| 机械师曙光| 一家乱战60集全播放免费观看| 第一次挺进苏雨瑶的身体电影| 美女和帅哥一起努力生产豆浆的视.. | 国产偷窥熟妇高潮呻吟视频AV| 针锋对决小说未删减全文阅读| 我和小姨子做爱HD完整版| 理伦片丰满妓女院| 坤坤寒进桃子里在线看歌词| 天美麻花星空影视免费观看电视剧| 公共场合高潮(H)公交车| 比白洁还牛的四大书| 双人床上剧烈运动会越睡越累吗| 蜜桃成熟了免费观看完整版电视剧| 少女与狗2在线观看免费版高清| 《我们不是亲兄妹》动浸播放| 里动漫