與鎖的比較 相同點 如果用鎖保護臨界區(qū),那么同一時刻只會有一個線程在臨界區(qū)內,其他線程都在臨界區(qū)外面。lock-free 是所有線程都可以進臨界區(qū),但是最后只有一個線程可以繼...
層級壓縮 為什么需要壓縮 因為 sstable 文件越來越多,會耗盡磁盤空間,并且也會影響查找效率,所以需要壓縮和合并 sstable。我們把修改、刪除都當作添加操作導致了 ...
leveldb 的基本原理 背景 leveldb 是一個持久化的鍵值存儲數據庫引擎。google 將 leveldb 和 paxos 結合,搞出了一個分布式存儲系統(tǒng) bigT...
安全性 安全性是指Raft需要保證每個狀態(tài)機需要以相同的順序執(zhí)行相同的命令。我們前面所說的領導者選舉和日志復制的機制并不足以保證這個要求。 選舉約束 前面所講的選舉機制,還存...
領導者選舉 什么是領導者 Raft 首先選舉一個服務器作為領導者,然后讓這個領導者全面負責可復制日志的管理。領導者需要從客戶端接受日志條目,將這些日志條目復制到別的服務器,告...
Quorum NWR 自定義一致性 Quorum NWR 自定義一致性問題原理實現應用 問題 我們已經有一個 AP 型的 KV 系統(tǒng)了,現在要求數據具有強一致性,怎么辦?重新...
Gossip 協議實現最終一致性 背景 有些系統(tǒng)對可用性比較敏感,例如監(jiān)控主機和業(yè)務運行的告警系統(tǒng),我們希望系統(tǒng)在極端條件(例如集群中只有一個節(jié)點可用)下也能正常運行。根據 ...
Basic Paxos [TOC] 什么是Basic Paxos 確定一個值 Basic Paxos描述的是多個節(jié)點如何就某個值達成共識。 三種角色 在Basic Paxos...
bthread_start_background 函數在后端創(chuàng)建一個bthread,但是該bthread沒有立刻運行,而是等待空閑的worker pthread將其偷過來運行...
bthread概述 [TOC] TaskControl TaskControl用于管理brpc創(chuàng)建的worker pthread。 初始化 創(chuàng)建一個 TaskControl ...
butex butex是一種類似于futex的同步原語,由brpc實現 。但futex只能夠用于同步pthread,而butex除了pthread,還可以同步bthread。...