- 分布式數(shù)據(jù)庫原理、架構(gòu)與實(shí)踐
- 李海翔
- 556字
- 2021-10-20 15:26:08
第3章
一致性問題的解法
本章將對各種一致性的解決方式進(jìn)行討論。其中,涉及次序一致性的問題,主要依靠排序解決。排序則依賴具備“單調(diào)性”的事務(wù)實(shí)現(xiàn),如時(shí)間等。通常我們認(rèn)為時(shí)間是一種單向流逝的序列,即時(shí)間可用于表達(dá)順序關(guān)系。人類以時(shí)間為參考坐標(biāo),來刻畫世界中發(fā)生的事件,而本書提及的時(shí)間,是一個(gè)邏輯概念,表達(dá)的是“順序”之意。3.2~3.4節(jié)討論了多種時(shí)間相關(guān)算法(這些算法中涉及的時(shí)間不是物理流逝的時(shí)間,而是邏輯時(shí)間)。
而涉及結(jié)果一致性的問題,主要依賴注入Paxos、Raft等一致性算法解決,這些算法將在3.5節(jié)和3.6節(jié)討論。
事務(wù)處理技術(shù)中的可串行化,本質(zhì)上是指并發(fā)事務(wù)之間的偏序關(guān)系(非并發(fā)的事務(wù)不相關(guān))對數(shù)據(jù)狀態(tài)的影響(對可串行化隔離級別沒有任何影響,這使得數(shù)據(jù)始終處于合法狀態(tài);而弱于可串行化隔離級別的其他隔離級別則允許存在數(shù)據(jù)狀態(tài)不合法的情況,但不同隔離級別對不合法程度的容忍度不同);分布式一致性中的線性一致性則要求分布式系統(tǒng)內(nèi)的事件/操作間要建立全序關(guān)系(并發(fā)的事件/操作在邏輯語義上可能相關(guān)),其他的分布式一致性,要求建立的是事件/操作間的偏序關(guān)系(據(jù)此確定結(jié)果被讀取時(shí)符合偏序關(guān)系)。
下面,我們從物理世界中存在的因節(jié)點(diǎn)分布帶來的問題開始,來理解分布式一致性需要解決的問題,然后再從現(xiàn)有的解決問題的理論和技術(shù)的角度展開各節(jié)的內(nèi)容。
- Kubernetes實(shí)戰(zhàn)
- Java從入門到精通(第4版)
- 算法大爆炸:面試通關(guān)步步為營
- Koa開發(fā):入門、進(jìn)階與實(shí)戰(zhàn)
- PHP+MySQL+Dreamweaver動(dòng)態(tài)網(wǎng)站開發(fā)實(shí)例教程
- 人人都懂設(shè)計(jì)模式:從生活中領(lǐng)悟設(shè)計(jì)模式(Python實(shí)現(xiàn))
- JAVA程序設(shè)計(jì)實(shí)驗(yàn)教程
- 小學(xué)生C++創(chuàng)意編程(視頻教學(xué)版)
- Mastering openFrameworks:Creative Coding Demystified
- C語言程序設(shè)計(jì)簡明教程:Qt實(shí)戰(zhàn)
- OpenCV with Python By Example
- Android傳感器開發(fā)與智能設(shè)備案例實(shí)戰(zhàn)
- Node.js 12實(shí)戰(zhàn)
- Orleans:構(gòu)建高性能分布式Actor服務(wù)
- 零基礎(chǔ)學(xué)Python編程(少兒趣味版)