jinfeng_wang

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

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

          一、前言

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

          二、集中式系統(tǒng)

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

          三、分布式系統(tǒng)

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

            3.1 分布性

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

            3.2 對等性

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

            3.3 并發(fā)性

            同一分布式系統(tǒng)中的多個節(jié)點,可能會并發(fā)地操作一些共享資源,諸如數(shù)據(jù)庫或分布式存儲等,如何高效地協(xié)調分布式并發(fā)操作也成為了分布式系統(tǒng)架構與設計中最大的挑戰(zhàn)之一。

            3.4 缺乏全局時鐘

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

            3.5 故障總是會發(fā)生

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

          四、分布式環(huán)境的問題

            4.1 通信異常

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

            4.2 網(wǎng)絡分區(qū)

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

            4.3 三態(tài)

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

            4.4 節(jié)點故障

            節(jié)點故障是指組成分布式系統(tǒng)的服務器節(jié)點出現(xiàn)宕機或僵死現(xiàn)象,每個節(jié)點都有可能出現(xiàn)故障,并且煤炭都在發(fā)生。

          五、從ACID到CAP/BASE

            5.1 ACID

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

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

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

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

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

            5.2 分布式事務

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

            5.3 CAP

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

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

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

            ③ 分區(qū)容錯性,分布式系統(tǒng)在遇到任何網(wǎng)絡分區(qū)故障時,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網(wǎng)絡環(huán)境都發(fā)生了故障。

            5.4 BASE

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

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

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

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

          六、總結

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

          posted on 2016-12-23 22:47 jinfeng_wang 閱讀(178) 評論(0)  編輯  收藏 所屬分類: 2016-zookeeper
          主站蜘蛛池模板: 宜春市| 长兴县| 晋城| 洪洞县| 阜宁县| 枞阳县| 论坛| 龙山县| 碌曲县| 怀仁县| 山西省| 株洲市| 新邵县| 长葛市| 黄山市| 祁东县| 蒙阴县| 金山区| 凉山| 邯郸市| 苍溪县| 砚山县| 金溪县| 东城区| 台山市| 新巴尔虎右旗| 东丽区| 双柏县| 杭州市| 漾濞| 诸城市| 东乡| 麻城市| 自贡市| 且末县| 临邑县| 衡阳县| 全州县| 佛山市| 沈丘县| 荣昌县|