MongoDB writeConcern原理解析

2021-09-23 19:37:58 字數 884 閱讀 6871

mongodb支援客戶端靈活配置寫入策略(writeconcern),以滿足不同場景的需求。

db.collection.insert(, })
mongodb支援的writeconncern選項如下

w: ,資料寫入到number個節點才向用客戶端確認

j: ,寫入操作的journal持久化後才向客戶端確認

wtimeout: ,寫入超時時間,僅w的值大於1時有效。

、等writeconcern選項很好理解,primary等待條件滿足傳送確認;但則相對複雜些,需要確認資料成功寫入到大多數節點才算成功,而mongodb的複製是通過secondary不斷拉取oplog並重放來實現的,並不是primary主動將寫入同步給secondary,那麼primary是如何確認資料已成功寫入到大多數節點的?

client向primary發起請求,指定writeconcern為,primary收到請求,本地寫入並記錄寫請求到oplog,然後等待大多數節點都同步了這條/批oplog(secondary應用完oplog會向主報告最新進度)。

secondary拉取到primary上新寫入的oplog,本地重放並記錄oplog。為了讓secondary能在第一時間內拉取到主上的oplog,find命令支援乙個awaitdata的選項,當find沒有任何符合條件的文件時,並不立即返回,而是等待最多maxtimems(預設為2s)時間看是否有新的符合條件的資料,如果有就返回;所以當新寫入oplog時,備立馬能獲取到新的oplog。

secondary上有單獨的執行緒,當oplog的最新時間戳發生更新時,就會向primary傳送replsetupdateposition命令更新自己的oplog時間戳。

當primary發現有足夠多的節點oplog時間戳已經滿足條件了,向客戶端傳送確認。

ConcurrentHashMap原理解析

什麼是concurrenthashmap?眾所周知,hashmap是一種非常高效的資料結構,但是依舊有它的缺陷。那就是在併發插入資料時,有可能會出現帶環鍊錶,讓下一次的讀操作出現死迴圈。於是為了避免hashmap的執行緒安全問題,concurrenthashmap應運而生。concurrenthas...

ConcurrentHashMap原理解析

concurrenthashmap是jdk提供的乙個執行緒安全的集合類,它內部的結構原理和我們常用的hashmap基本是一致,那我們可以先來認識一下hashmap,這樣基本上也能大致明白concurrenthashmap了。hashmap與concurrenthashmap都是用來存放一種鍵值對形式...

理解爬蟲原理

本次作業 於 1.簡單說明爬蟲原理 請求 並提取資料的自動化流程 2.理解爬蟲開發過程 1 簡要說明瀏覽器工作原理 web瀏覽器提交請求後,通過http協議傳送給web伺服器。web伺服器接到後,進行事務處理,處理結果又通過http傳回給web瀏覽器,從而在web瀏覽器上顯示出所請求 的頁面。2 使...