免费wap自助建站火星建站,卖农产品最好的平台,青岛物流网站建设,亚马逊跨境电商怎么开店前文我们搭建MongoDB三成员副本集#xff0c;了解集群基本特性#xff0c;今天我们围绕下图聊一聊背后的细节。默认搭建的副本集均在主节点读写#xff0c;辅助节点冗余部署#xff0c;形成高可用和备份#xff0c;具备自动故障转移能力。集群心跳保活集群每个节点以周期性… 前文我们搭建MongoDB三成员副本集了解集群基本特性今天我们围绕下图聊一聊背后的细节。默认搭建的副本集均在主节点读写辅助节点冗余部署形成高可用和备份具备自动故障转移能力。集群心跳保活集群每个节点以周期性向其他成员发出心跳命令 replSetHeartbeat 来获取状态根据应答消息来更新节点的状态根据最终状态确定是否重选主节点。默认心跳周期 heartbeatIntervalMillis 2000ms认定Primary节点失联的阈值 electionTimeoutMillis10s异步复制辅助节点复制主节点的oplog并将改变应用到数据集从而保持与主节点数据同步。这里有三个知识点oplog是一个特殊的封顶集合capped collection 主节点上的operation log会记录在主节点的oplog中辅助节点异步拷贝这些操作这样所有的节点的都包含operatin log的一个副本local.oplog.rs集合每次异步复制触发的时机是在心跳保活阶段所有的辅助节点都会在ping阶段从其他成员插入oplog文档。oplog中的每个操作都是冥等的无论是一次还是多次应用到目标数据集oplog操作会产生相同的结果删除和插入操作若多次应用删除操作后续删除操作无效果若多次应用插入操作因为每次操作均包含包含_id值因此它也不会插入文档的第二个副本因为_id必须是唯一的。当有新节点加入集群该节点会启动另一种同步复制initial sync, 将所有数据从某副本集成员完全拷贝 复制完成会过渡为辅助节点。选举主节点集群会因为各种事件触发选举主节点在集群中添加新节点初始化replica set集群执行人工运维命令rs.stepDown() rs.reconfig()维护集群辅助节点与主节点失联时间超过默认10s自动故障转移说的是最后一种情况默认情况下辅助节点A与主节点心跳失联超过10sA节点标记主节点不可用之后与其他辅助节点心跳保活沟通各自信息节点的票数、节点优先级、PingMs等因素确立出新主节点。在发生故障转移时集群不能再执行写入操作若客户端配置在辅助节点读取read preference则集群可继续提供读取能力。你的应用程序可用重试逻辑应对自动故障转移和后续的重选。从MongoDB3.6版本开始MongoDB Driver可侦测主节点的失联并执行一次重试操作。tip适配MongoDB4.2的Driver默认会重试写入操作适配Mongodb4.0-3.6的Driver需显式在连接字符串包含retryWrites true以确保主节点失联时能重试写入操作。连接副本集的配置字符串其中rs0是集群配置文件中 replSetName。mongodb://account:passwardmongodb0.example.com:27017,mongodb1.example.com:27017,mongodb2.example.com:27017?replicaSetrs0OK 以上便是MongoDB副本集心跳保活、异步复制、自动故障转移的背景知识。留一个作业客户端连接MongoDB副本集的连接字符串是一个很普通的IP数组并未体现主副节点客户端是怎么区分主副节点并向主节点发出写入指令更何况副本集主副节点会变化客户端如何感知点击下方空白区域查看答案▼「Client Monitoring」 所有符合MongoDB官方规范的Driver都会实现Service Discovery和Monitoring连接副本集的字符串IP实际是种子成员Driver会准实时发起指令检测集群状态heartbeatFrequencyMS约定了Driver的检查间隔这与我们在辅助节点观察到的日志是相呼应的 https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#heartbeatfrequencyms https://docs.mongodb.com/manual/reference/connection-string/#urioption.heartbeatFrequencyMS▼往期精彩回顾▼1解锁MongoDB replica set核心姿势ASP.NET Core跨平台技术内幕实例解读Docker Swarm快到碗里来!你点的每个赞我都认真当成了喜欢