少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          分布式領域CAP理論,
          Consistency(一致性), 數據一致更新,所有數據變動都是同步的
          Availability(可用性), 好的響應性能
          Partition tolerance(分區容錯性) 可靠性
          定理:任何分布式系統只可同時滿足二點,沒法三者兼顧。
          忠告:架構師不要將精力浪費在如何設計能滿足三者的完美分布式系統,而是應該進行取舍。
          關系數據庫的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思想的方案在性能上還是有潛力可挖的。
          現在NoSQL運動豐富了拓展了BASE思想,可按照具體情況定制特別方案,比如忽視一致性,獲得高可用性等等,NOSQL應該有下面兩個流派:
          1. Key-Value存儲,如Amaze Dynamo等,可根據CAP三原則靈活選擇不同傾向的數據庫產品。
          2. 領域模型 + 分布式緩存 + 存儲 (Qi4j和NoSQL運動),可根據CAP三原則結合自己項目定制靈活的分布式方案,難度高。
          這兩者共同點:都是關系數據庫SQL以外的可選方案,邏輯隨著數據分布,任何模型都可以自己持久化,將數據處理和數據存儲分離,將讀和寫分離,存儲可以是異步或同步,取決于對一致性的要求程度。
          不同點:NOSQL之類的Key-Value存儲產品是和關系數據庫頭碰頭的產品BOX,可以適合非Java如PHP RUBY等領域,是一種可以拿來就用的產品,而領域模型 + 分布式緩存 + 存儲是一種復雜的架構解決方案,不是產品,但這種方式更靈活,更應該是架構師必須掌握的。 



          http://www.jdon.com/37625
          posted on 2014-12-28 22:51 abin 閱讀(359) 評論(0)  編輯  收藏 所屬分類: Distribute

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 会昌县| 唐山市| 苍溪县| 门源| 景宁| 扶风县| 信丰县| 正宁县| 辽宁省| 资源县| 平凉市| 连南| 安溪县| 石屏县| 石嘴山市| 岫岩| 交城县| 蕲春县| 沙洋县| 秭归县| 内黄县| 饶河县| 北宁市| 宝坻区| 噶尔县| 玉林市| 土默特左旗| 菏泽市| 永宁县| 濮阳市| 阿克陶县| 盈江县| 新民市| 安阳县| 巴青县| 容城县| 湖北省| 大理市| 康乐县| 密山市| 汤原县|