所謂每個事物都是矛盾統一的結合體,都具有兩面性。分布式系統再帶來了前面提到的好處的同時,也帶來了業界普遍認為最大的問題 —— 資料一致性問題。
系統是給人用的,構成使用場景的概念叫業務。業務是核心,對乙個系統來說,業務的發展歸根到底是建立在資料之上的。我可以慢、可以宕機、可以搞得很複雜,這些都能忍,但唯獨不能忍的就是資料問題,資料錯誤、資料不一致等等。
分布式就意味著分治與協作,一件事乙個人只負責一部分。生活中這樣的例子也無處不在,就拿舉辦乙個party來說:一部分人去準備吃的,一部分人去準備喝的,一部分人去準備場地布置。這些事情大家都可以同時進行,但是任一環節掉鍊子了,或者說不符合party主題的話,都是失敗的。
這裡的4個操作以目標來看,其實先後順序並不重要,重要的是要麼都成功,要麼都失敗,其中任意乙個程式不一致那麼就會出問題。
那麼是什麼原因導致了資料不一致的產生呢?一是程式設計問題,或者說**寫錯了。這點很好理解,也很容易想到解決方案,多做測試,驗證是否符合預期咯。常見的單元測試、介面測試、自動化測試、整合測試等等都是為了更具價效比的將bug降低到無限接近於0,也造就了「測試工程師」這個崗位更大的作用。
但是,假設真的沒有bug,但還是會產生資料不一致,因為軟體是執行在硬體之上的,所以還有硬體的因素存在。並且對我們這裡的大部分人來說,硬體相比軟體,我們的掌控力更弱。這其中,最為嚴重的屬網路問題,網路相比其它的來說是乙個更大、更複雜的組織,未知性會隨著區域網、廣域網這樣範圍越大越嚴重。想象一下,每一台主機僅僅是一張大網中的乙個渺小的連線點,它所承載的鏈結越多越容易出現問題。
資料一致性,分布式系統
最近寫了乙個關於 鐵道部購票系統的若干文章 鐵道部新客票系統的設計 一 鐵道部新客票系統的設計 二 鐵道部新客票系統的設計 三 正好遇到乙個博友,諮詢了乙個問題,這個問題正好可以作為分布式系統的資料一致性的簡單例子,當然,這個只是比較簡單的情況 現在先丟擲問題,假設有乙個主資料中心在北京m,然後有成...
分布式系統關注點 通過「共識」達成資料一致性
這次準備開啟乙個新的系列來寫了,聊聊分布式系統中的關注點。節奏不會排的太緊湊,計畫兩周一更吧。本文是本系列的第二篇。是前一篇 不知道是不是最通俗易懂的 資料一致性 剖析了 的後續內容。已經對資料一致性問題做了一次剖析,那麼怎麼解決由於故障導致的不一致問題呢?本文會圍繞 共識 這個點展開。一致性問題其...
分布式系統資料一致性級別
在分布式系統中乙個需要解決的重要問題就是資料的複製。分布式系統對於資料的複製需求一般都來自於以下兩個原因 所謂的分布式一致性問題,是指在分布式環境中引入資料複製機制後,不同資料節點間可能出現的,並無法依靠計算機應用程式自身解決的資料不一致情況。簡單地講,資料一致性就是指在對乙個副本資料進行更新的同時...