CAP原理和BASE思想(轉)
分散式領域CAP理論,
Consistency(一致性), 資料一致更新,所有資料變動都是同步的
Availability(可用性), 好的響應效能
Partition tolerance(分割槽容錯性) 可靠性
[@more@]定理:任何分散式系統只可同時滿足二點,沒法三者兼顧。
忠告:架構師不要將精力浪費在如何設計能滿足三者的完美分散式系統,而是應該進行取捨。
關聯式資料庫的ACID模型擁有 高一致性 + 可用性 很難進行分割槽:
Atomicity原子性:一箇中所有操作都必須全部完成,要麼全部不完成。
Consistency一致性. 在開始或結束時,資料庫應該在一致狀態。
Isolation隔離層. 將假定只有它自己在運算元據庫,彼此不知曉。
Durability. 一旦完成,就不能返回。
跨資料庫:2PC (two-phase commit), 2PC is the anti-scalability pattern (Pat Helland) 是反可伸縮模式的,JavaEE中的JTA事務可以支援2PC。因為2PC是反模式,儘量不要使用2PC,使用BASE來回避。
BASE模型反ACID模型,完全不同ACID模型,犧牲高一致性,獲得可用性或可靠性:
Basically Available基本可用。支援分割槽失敗(e.g. sharding碎片劃分資料庫)
Soft state軟狀態 狀態可以有一段時間不同步,非同步。
Eventually consistent最終一致,最終資料是一致的就可以了,而不是時時高一致。
BASE思想的主要實現有
1.按功能劃分資料庫
2.sharding碎片
BASE思想主要強調基本的可用性,如果你需要High 可用性,也就是純粹的高效能,那麼就要以一致性或容錯性為犧牲,BASE思想的方案在效能上還是有潛力可挖的。
現在運動豐富了擴充了BASE思想,可按照具體情況定製特別方案,比如忽視一致性,獲得高可用性等等,NOSQL應該有下面兩個流派:
1. Key-Value儲存,如Amaze Dynamo等,可根據CAP三原則靈活選擇不同傾向的資料庫產品。
2. 領域模型 + 分散式 + 儲存 (運動),可根據CAP三原則結合自己專案定製靈活的分散式方案,難度高。
這兩者共同點:都是關聯式資料庫SQL以外的可選方案,邏輯隨著資料分佈,任何模型都可以自己持久化,將資料處理和資料儲存分離,將讀和寫分離,儲存可以是非同步或同步,取決於對一致性的要求程度。
不同點:NOSQL之類的Key-Value儲存產品是和關聯式資料庫頭碰頭的產品BOX,可以適合非Java如PHP RUBY等領域,是一種可以拿來就用的產品,而領域模型 + 分散式 + 儲存是一種複雜的架構解決方案,不是產品,但這種方式更靈活,更應該是架構師必須掌握的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22661144/viewspace-1060558/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- CAP原理和BASE思想
- 架構思想之CAP原理架構
- 4 在分散式資料庫中CAP原理CAP+BASE分散式資料庫
- 分散式事務及其CAP和base理論分散式
- 分散式必備理論基礎:CAP和BASE分散式
- Base64原理和實現
- 10分鐘瞭解分散式CAP、BASE理論分散式
- 分散式系統中的CAP、ACID、BASE概念分散式
- 看《大明王朝1566》聊分散式中的CAP和BASE理論分散式
- 分散式從 ACID、CAP、BASE 的理論推進分散式
- base64編碼原理和函式函式
- Base64 原理
- Base64原理
- Java分散式系統設計:CAP定理與BASE理論Java分散式
- Terrastore和CAP定律AST
- PDF 和 base64 的轉換
- 分散式系統CAP的原理介紹分散式
- base64 編碼原理
- 從分散式一致性談到CAP理論、BASE理論分散式
- Mobx 思想的實現原理
- MapReduce原理與設計思想
- base64的實現原理
- XML 程式設計思想:XML和語義(轉)XML程式設計
- 【轉】oracle_base 和 oracle_home 的區別Oracle
- 差點跪了!阿里3面真題:CAP和BASE理論瞭解麼?可以結合實際案例說下不?阿里
- Base64 編碼解碼原理
- 圖片和base64字串的互轉字串
- 向上無縫滾動--原理及思想
- java字串轉Base64Java字串
- 金字塔原理(7)- 概括分組思想
- base64編碼的原理及實現
- Base64 的原理、實現及應用
- IPD的核心思想(轉)
- Java-InputStream轉Base64Java
- ARKit 和 ARCore原理介紹(轉)
- 淺談 CAP 和 Paxos 共識演算法演算法
- Base64加密解密原理以及程式碼實現加密解密
- 從原理上搞定編碼-- Base64編碼