mongoDB——router server

本文介绍了MongoDB集群中RouterServer的作用及其内部工作机制。包括如何通过metadata缓存提高查询效率,以及RouterServer作为复制集成员时的工作模式差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

router server

   英文的好处就是见名知意,router即路由的意思,很明显。用户的请求拿到后,与config server通信,发送请求,在config server上存储了整个系统的metadata,根据metadata,系统就知道了shard与chunk的对应关系,查找的key-values的地址就寻址结束了,接下来的就是直奔shard上对数据进行read/write了。

个人的理解

       根据一般的认识,router server中一定会有buffer,来存储metadata的信息。这样在metadata未发生变化的情况下,下次用户的请求拿到后,就直接就可以寻址定位操作数据的位置了,而不用花费额外的时间去config server中根据metadata,进行寻址操作了。

       根据最新mongoDB集群的部署来看,为了降低单点故障带来的损失,router server也是可以做成replica-set的,但这个replica-set与shard中的不同。
       1.   shard中的replica-set,每个instance都具有相应能力,即primary具有read&write,secondary只具有read。
       2.   config server构造成replica-set的话,只是一种风险意识而已,active状态下,只有一台,其他的是不具有任何响应权限的,只有响应的那一台宕机后,要么手动切换到
              其余“备份”的config server上,或者自己定制程序来实现。
       

### 如何在特定环境下搭建MongoDB分片集群 #### 准备工作 为了成功部署MongoDB分片集群,在各个节点上需先完成MongoDB软件包的下载与环境变量设置。具体操作如下: 通过wget命令获取官方发布的二进制文件并解压至指定目录,随后建立软链接以便于管理版本更新,并修改系统的`PATH`路径使得可以在任意位置调用mongodb的相关工具[^3]。 ```bash wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.6.tgz tar xzvf mongodb-linux-x86_64-rhel70-4.4.6.tgz -C /usr/local/ cd /usr/local/ ln -s /usr/local/mongodb-linux-x86_64-rhel70-4.4.6 /usr/local/mongodb vim /etc/profile export PATH=/usr/local/mongodb/bin/:$PATH source /etc/profile ``` #### 架构设计 构建一个典型的MongoDB分片架构通常包含三个核心组件:配置服务器(Config Server),用于保存有关整个集群状态的重要信息;路由服务器(Mongos),作为客户端应用访问数据层之间的中介者;以及分片(Shards),它们承载着实际存储的数据片段。每一片都可以是由多台机器构成的复制集来提高可用性和冗余度[^2]。 对于具体的网络拓扑结构而言,假设存在四台物理机分别承担不同的角色——两个分片节点(`shard1`, `shard2`)、一个配置服务端(`config-server`)和一台充当路由器的角色(`router`)。这些设备之间应该能够互相通信并且拥有固定的内部IP地址分配方案。 | 角色 | 主机名 | IP 地址 | | -------------- | ----------- | ------------- | | 分片节点1 | shard1 | 192.168.112.10| | 分片节点2 | shard2 | 192.168.112.20| | 配置节点 | config-server | 192.168.112.30| | 路由节点 | router | 192.168.112.40| #### 创建副本集 针对每一个分片实例来说,建议将其组织成至少含有三成员的副本集合形式以增强容错能力。这里仅展示第一个分片(shard1)初始化过程中的关键步骤,其他类似处理即可。 启动mongod进程时要指明其所属的身份标签(即_shardsvr参数),同时指向正确的配置文档位置。当所有预期参与该组群的mongod都已上线之后,则可以通过mongo shell执行rs.initiate()方法正式成立新的RS(replica set)[^3]。 #### 启动Mongos网关 最后一步就是激活mongos实例,这相当于开启了通往分布式数据库世界的门户。此时应当依据预先准备好的配置文件来进行启动,确保其中包含了必要的连接选项和其他自定义设定项[^4]。 ```bash /usr/local/mongodb/bin/mongos \ -f /usr/local/mongodb/sharded_cluster/mymongos_27017/mongos.conf ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值