jinfeng_wang

          G-G-S,D-D-U!

          BlogJava 首頁 新隨筆 聯系 聚合 管理
            400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
          http://www.cnblogs.com/leesf456/p/5992377.html

          一、前言

            在大數據系統中,分布式系統已經成為一個無法避免的組件,如zookeeper已經成為了工業屆的標準。所以對于大數據的研究,也必須要研究分布式系統的特點。

          二、集中式系統

            由一臺或多臺計算機組成的中心節點,數據集中存儲在這個中心節點中,并且整個系統的所有業務單元都集中部署在這個中心節點上,系統的所有功能均由其集中處理。其部署簡單,不用考慮多個節點間的分布式協作問題。

          三、分布式系統

            分布式系統是一個由硬件或軟件組件分布在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。其擁有如下特點

            3.1 分布性

            分布式系統中的多臺計算機都會在空間中隨意分布,同時,機器的分布情況也會隨時變動。

            3.2 對等性

            分布式系統中的計算機沒有主/從之分,既沒有控制整個系統的主機,也沒有被控制的從機,組成分布式系統的所有計算機節點都是對等的,副本指的是分布式系統對數據和服務提供的一種冗余方式,為了對外提供高可用的服務,我們往往會對數據和服務進行副本處理。數據副本是指在不同的節點上持久化同一份數據,當某一個節點上存儲的數據丟失時,可以從副本上讀取到該數據,這是解決分布式系統數據丟失問題最為有效的手段。服務副本是只多個節點提供同樣的服務,每個節點都有能力接受來自外部的請求并進行相應的處理。

            3.3 并發性

            同一分布式系統中的多個節點,可能會并發地操作一些共享資源,諸如數據庫或分布式存儲等,如何高效地協調分布式并發操作也成為了分布式系統架構與設計中最大的挑戰之一。

            3.4 缺乏全局時鐘

            典型的分布式系統由一系列在空間上隨意分布的多個進程組成,具有明顯的分布性,這些進程之間通過交換消息來進行互相通信,因此,在分布式系統中,很難定義兩個時間究竟誰先誰后,原因就是因為分布式系統缺乏一個全局的時鐘序列控制。

            3.5 故障總是會發生

            組成分布式系統的所有計算機,都有可能發生任何形式的故障,任何在設計階段考慮到的異常情況,一定會在系統實際運行中發生。

          四、分布式環境的問題

            4.1 通信異常

            從集中式到分布式,必然引入了網絡因素,而由于網絡本身的不可靠性,因此就引入了額外的問題。分布式系統各節點之間的網絡通信能夠正常進行,其延時也會遠大于單機操作,在消息的收發過程中,消息丟失和消息延遲變得十分普遍。

            4.2 網絡分區

            當網絡發生異常情況時,導致分布式系統中部分節點之間的網絡延時不斷增大,最終導致組成分布式胸的所有節點中,只有部分節點之間能夠正常通信,而另一些節點則不能,這種現象稱之為網絡分區,當網絡分區出現時,分布式系統會出現局部小集群,在極端情況下,這些局部小集群會獨立完成原本需要整個分布式系統才能完成的功能,包括對數據的事務處理,這就對分布式一致性提出了非常大的挑戰。

            4.3 三態

            由于網絡可能會出現各種各樣的問題,因此分布式系統的每一次請求與響應,存在特有的三態概念:成功、失敗、超時。當網絡在異常情況下,可能會出現超時現象,通常由以下兩種情況:1. 由于網絡原因,該請求并沒有被成功地發送到接收方,而是在發送過程就發生了消息丟失現象。2. 該請求成功的被接收方接受后,并進行了處理,但是在將響應反饋給發送方時,發生了消息丟失現象。

            4.4 節點故障

            節點故障是指組成分布式系統的服務器節點出現宕機或僵死現象,每個節點都有可能出現故障,并且煤炭都在發生。

          五、從ACID到CAP/BASE

            5.1 ACID

            事務是由一系列對系統中數據進行訪問與更新的操作所組成的一個程序執行單元,狹義上的食物特指數據庫事務。一方面,當多個應用程序并發訪問數據庫時,食物可以在這些應用程序之間提供一個隔離方法,以防止彼此的操作相互干擾,另一方面,食物為數據庫操作序列提供了一個從失敗中恢復到正常狀態的方法,同時提供了數據庫即使在宜昌狀態下仍能保持數據一致性的方法。事務具有原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability),簡稱ACID。

            ① 原子性,指事務必須是一個原子的操作序列單元,事務中包含的各項操作在一次執行過程中,只允許出現以下兩種狀態之一,全部成功執行,全部不執行。任何一項操作失敗都將導致整個事務失敗,同時其他已經被執行的操作都將被撤銷并回滾,只有所有操作全部成功,整個事務才算是成功完成。

            ② 一致性,指事務的執行不能破壞數據庫數據的完整性和一致性,一個事務在執行之前和執行之后,數據庫都必須處于一致性狀態,即事務執行的結果必須是使數據庫從一個一致性狀態轉變到另一個一致性狀態,因此當數據庫只包含成功事務提交的結果時,就能說數據庫處于一致性狀態,而如果數據庫系統在運行過程中發生故障,有些事務尚未完成就被迫中斷,這些未完成的事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正確的狀態,或者說是不一致的狀態。

            ③ 隔離性,指在并發環境中,并發的事務是相互隔離的,一個事務的執行不能被其他事務干擾,即不同的事務并發操作相同的數據時,每個事務都有各自完整的數據空間,即一個事務內部的操作及使用的數據對其他并發事務是隔離的,并發執行的各個事務之間不能相互干擾。

            ④ 持久性,指一個事務一旦提交,他對數據庫中對應數據的狀態變更就應該是永久的,即一旦某個事務成功結束,那么它對數據庫所做的更新就必須被永久的保存下來,即使發生系統崩潰或者宕機故障,只要數據庫能夠重新啟動,那么一定能夠將其恢復到事務成功結束時的狀態。

            5.2 分布式事務

            分布式事務是指事務的參與者、支持事務的服務器、資源服務器以及事務管理器分別位于分布式系統的不同節點上,通常一個分布式事務中會涉及對多個數據源或業務系統的操作。一個分布式事務可以看做是由多個分布式的操作序列組成,通常可以把這一系列分布式的操作序列稱為子事務。由于在分布式事務中,各個子事務的執行是分布式的,因此要實現一種能夠保證ACID特性的分布式事務處理系統就顯得格外復雜。

            5.3 CAP

            CAP理論告訴我們,一個分布式系統不可能同時滿足一致性、可用性、分區容錯性這三個基本需求,最多只能同時滿足其中的兩個。

            ① 一致性,指數據在多個副本之間是否能夠保持一致的特性,在一致性的需求下,當一個系統在數據一致的狀態下執行更新操作后,應該保證系統的數據仍然處于一致狀態。對于一個將數據副本分布在不同分布式節點上的系統來來說,如果對第一個結點的數據進行了更新操作并且成功后,卻沒有使得第二個節點上的數據得到相應的更新,于是在對第二個結點的數據進行讀取操作時,獲取的仍然是老數據(臟數據),這就是典型的分布式數據不一致的情況,在分布式系統中,如果能夠做到針對一個數據項的更新操作執行成功后,所有的用戶都可以讀取到期最新的值,那么這樣的系統就被認為具有強一致性。

            ② 可用性,指系統提供的服務必須一直處于可用的狀態,對于用戶的每一操作請求總是能夠在有限的時間內返回結果。

            ③ 分區容錯性,分布式系統在遇到任何網絡分區故障時,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網絡環境都發生了故障。

            5.4 BASE

            BASE是基本可用(Basically Available)、Soft state(弱狀態)、Eventually consistent(最終一致性)三個短語的簡寫。

            ① 基本可用,指分布式系統在出現不可預知故障時,允許損失部分可用性,如響應時間上的損失或功能上的損失。

            ② 弱狀態,也稱為軟狀態,指允許系統中的二數據存在中間狀態,并認為該中間狀態的存在不會影響系統的整體可用性,即允許系統在不同節點的數據副本之間進行數據同步的過程存在延時。

            ③ 最終一致性,指系統中所有的數據副本,在經過一段時回見的同步后,最終能夠達到一個一致的狀態,因此最終一致性的本質是需要系統保證數據能夠達到一致,而不需要實時保證系統數據的強一致性。

          六、總結

            這篇博文主要介紹了分布式的一些相關知識,更詳細的知識之后會給出。謝謝各位園友的觀看~

          posted on 2016-12-23 22:47 jinfeng_wang 閱讀(176) 評論(0)  編輯  收藏 所屬分類: 2016-zookeeper
          主站蜘蛛池模板: 武宣县| 长治市| 金秀| 巴林左旗| 溆浦县| 米泉市| 兴化市| 鸡泽县| 新郑市| 建瓯市| 长子县| 达日县| 集安市| 金秀| 平谷区| 南皮县| 北票市| 宁夏| 错那县| 体育| 阳高县| 曲水县| 奉新县| 海盐县| 秦安县| 衡山县| 乌拉特前旗| 溧阳市| 炉霍县| 尼勒克县| 岢岚县| 景德镇市| 祁阳县| 太白县| 古浪县| 治县。| 文山县| 石阡县| 津南区| 阿拉尔市| 开化县|