精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當前位置:大數據采集存儲 → 正文

大數據存儲:分布式系統的事務處理

責任編輯:editor005 |來源:企業網D1Net  2015-03-18 15:17:05 本文摘自:51CTO

當我們在生產線上用一臺服務器來提供數據服務的時候,我會遇到如下的兩個問題:

大數據存儲:分布式系統的事務處理

  (1)一臺服務器的性能不足以提供足夠的能力服務于所有的網絡請求。

(2)我們總是害怕我們的這臺服務器停機,造成服務不可用或是數據丟失。

于是我們不得不對我們的服務器進行擴展,加入更多的機器來分擔性能上的問題,以及來解決單點故障問題。 通常,我們會通過兩種手段來擴展我們的數據服務:

(1)數據分區:就是把數據分塊放在不同的服務器上(如:uid % 16,一致性哈希等)。

(2)數據鏡像:讓所有的服務器都有相同的數據,提供相當的服務。

對于第一種情況,我們無法解決數據丟失的問題,單臺服務器出問題時,會有部分數據丟失。所以,數據服務的高可用性只能通過第二種方法來完成——數據的冗余存儲(一般工業界認為比較安全的備份數應該是3份,如:Hadoop和Dynamo)。

但是,加入更多的機器,會讓我們的數據服務變得很復雜,尤其是跨服務器的事務處理,也就是跨服務器的數據一致性。這個是一個很難的問題。 讓我們用最經典的Use Case:“A帳號向B帳號匯錢”來說明一下,熟悉RDBMS事務的都知道從帳號A到帳號B需要6個操作:

1)從A帳號中把余額讀出來。

2)對A帳號做減法操作。

3)把結果寫回A帳號中。

4)從B帳號中把余額讀出來。

5)對B帳號做加法操作。

6)把結果寫回B帳號中。

為了數據的一致性,這6件事,要么都成功做完,要么都不成功,而且這個操作的過程中,對A、B帳號的其它訪問必需鎖死,所謂鎖死就是要排除其它的讀寫操作,不然會有臟數據的問題,這就是事務。那么,我們在加入了更多的機器后,這個事情會變得復雜起來:

1)在數據分區的方案中:如果A帳號和B帳號的數據不在同一臺服務器上怎么辦?我們需要一個跨機器的事務處理。也就是說,如果A的扣錢成功了,但B的加錢不成功,我們還要把A的操作給回滾回去。這在跨機器的情況下,就變得比較復雜了。

2)在數據鏡像的方案中:A帳號和B帳號間的匯款是可以在一臺機器上完成的,但是別忘了我們有多臺機器存在A帳號和B帳號的副本。如果對A帳號的匯錢有兩個并發操作(要匯給B和C),這兩個操作發生在不同的兩臺服務器上怎么辦?也就是說,在數據鏡像中,在不同的服務器上對同一個數據的寫操作怎么保證其一致性,保證數據不沖突?

同時,我們還要考慮性能的因素,如果不考慮性能的話,事務得到保證并不困難,系統慢一點就行了。除了考慮性能外,我們還要考慮可用性,也就是說,一臺機器沒了,數據不丟失,服務可由別的機器繼續提供。 于是,我們需要重點考慮下面的這么幾個情況:

1)容災:數據不丟、結點的Failover

2)數據的一致性:事務處理

3)性能:吞吐量 、 響應時間

前面說過,要解決數據不丟,只能通過數據冗余的方法,就算是數據分區,每個區也需要進行數據冗余處理。這就是數據副本:當出現某個節點的數據丟失時可以從副本讀到,數據副本是分布式系統解決數據丟失異常的唯一手段。所以,在這篇文章中,簡單起見,我們只討論在數據冗余情況下考慮數據的一致性和性能的問題。簡單說來:

1)要想讓數據有高可用性,就得寫多份數據。

2)寫多份的問題會導致數據一致性的問題。

3)數據一致性的問題又會引發性能問題。

這就是軟件開發,按下了葫蘆起了瓢。

關鍵字:分布式系統數據存儲

本文摘自:51CTO

x 大數據存儲:分布式系統的事務處理 掃一掃
分享本文到朋友圈
當前位置:大數據采集存儲 → 正文

大數據存儲:分布式系統的事務處理

責任編輯:editor005 |來源:企業網D1Net  2015-03-18 15:17:05 本文摘自:51CTO

當我們在生產線上用一臺服務器來提供數據服務的時候,我會遇到如下的兩個問題:

大數據存儲:分布式系統的事務處理

  (1)一臺服務器的性能不足以提供足夠的能力服務于所有的網絡請求。

(2)我們總是害怕我們的這臺服務器停機,造成服務不可用或是數據丟失。

于是我們不得不對我們的服務器進行擴展,加入更多的機器來分擔性能上的問題,以及來解決單點故障問題。 通常,我們會通過兩種手段來擴展我們的數據服務:

(1)數據分區:就是把數據分塊放在不同的服務器上(如:uid % 16,一致性哈希等)。

(2)數據鏡像:讓所有的服務器都有相同的數據,提供相當的服務。

對于第一種情況,我們無法解決數據丟失的問題,單臺服務器出問題時,會有部分數據丟失。所以,數據服務的高可用性只能通過第二種方法來完成——數據的冗余存儲(一般工業界認為比較安全的備份數應該是3份,如:Hadoop和Dynamo)。

但是,加入更多的機器,會讓我們的數據服務變得很復雜,尤其是跨服務器的事務處理,也就是跨服務器的數據一致性。這個是一個很難的問題。 讓我們用最經典的Use Case:“A帳號向B帳號匯錢”來說明一下,熟悉RDBMS事務的都知道從帳號A到帳號B需要6個操作:

1)從A帳號中把余額讀出來。

2)對A帳號做減法操作。

3)把結果寫回A帳號中。

4)從B帳號中把余額讀出來。

5)對B帳號做加法操作。

6)把結果寫回B帳號中。

為了數據的一致性,這6件事,要么都成功做完,要么都不成功,而且這個操作的過程中,對A、B帳號的其它訪問必需鎖死,所謂鎖死就是要排除其它的讀寫操作,不然會有臟數據的問題,這就是事務。那么,我們在加入了更多的機器后,這個事情會變得復雜起來:

1)在數據分區的方案中:如果A帳號和B帳號的數據不在同一臺服務器上怎么辦?我們需要一個跨機器的事務處理。也就是說,如果A的扣錢成功了,但B的加錢不成功,我們還要把A的操作給回滾回去。這在跨機器的情況下,就變得比較復雜了。

2)在數據鏡像的方案中:A帳號和B帳號間的匯款是可以在一臺機器上完成的,但是別忘了我們有多臺機器存在A帳號和B帳號的副本。如果對A帳號的匯錢有兩個并發操作(要匯給B和C),這兩個操作發生在不同的兩臺服務器上怎么辦?也就是說,在數據鏡像中,在不同的服務器上對同一個數據的寫操作怎么保證其一致性,保證數據不沖突?

同時,我們還要考慮性能的因素,如果不考慮性能的話,事務得到保證并不困難,系統慢一點就行了。除了考慮性能外,我們還要考慮可用性,也就是說,一臺機器沒了,數據不丟失,服務可由別的機器繼續提供。 于是,我們需要重點考慮下面的這么幾個情況:

1)容災:數據不丟、結點的Failover

2)數據的一致性:事務處理

3)性能:吞吐量 、 響應時間

前面說過,要解決數據不丟,只能通過數據冗余的方法,就算是數據分區,每個區也需要進行數據冗余處理。這就是數據副本:當出現某個節點的數據丟失時可以從副本讀到,數據副本是分布式系統解決數據丟失異常的唯一手段。所以,在這篇文章中,簡單起見,我們只討論在數據冗余情況下考慮數據的一致性和性能的問題。簡單說來:

1)要想讓數據有高可用性,就得寫多份數據。

2)寫多份的問題會導致數據一致性的問題。

3)數據一致性的問題又會引發性能問題。

這就是軟件開發,按下了葫蘆起了瓢。

關鍵字:分布式系統數據存儲

本文摘自:51CTO

電子周刊
回到頂部

關于我們聯系我們版權聲明隱私條款廣告服務友情鏈接投稿中心招賢納士

企業網版權所有 ©2010-2024 京ICP備09108050號-6 京公網安備 11010502049343號

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 长白| 玉环县| 东明县| 樟树市| 中阳县| 三江| 上林县| 西青区| 利津县| 余庆县| 灵台县| 南和县| 阿鲁科尔沁旗| 墨竹工卡县| 连州市| 巴中市| 博白县| 厦门市| 福鼎市| 鹤峰县| 台前县| 克东县| 塔城市| 冷水江市| 永新县| 理塘县| 承德县| 仙游县| 江川县| 衡水市| 来安县| 丹棱县| 天水市| 黑龙江省| 临颍县| 东阿县| 芮城县| 灵丘县| 普安县| 福建省| 西乌|