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

當前位置:云計算企業動態 → 正文

谷歌新發布的分布式數據庫服務,是要打破CAP定理了嗎?

責任編輯:editor004 作者: 登州知府 |來源:企業網D1Net  2017-02-21 11:19:25 本文摘自:INFOQ

2月14日,Google 宣布推出 Cloud Spanner 云端數據庫服務的 Beta 版。Cloud Spanner 是構建在 Google Cloud Platform(GCP)平臺上的全球級分布式關系型數據庫服務,主要為 OLTP 場景的核心業務應用提供服務。不同于 Bigtable、Cloud SQL 和 Cloud Datastore,此次 Google 發布的 Cloud Spanner 打破了傳統關系型數據庫與 NoSQL 數據庫之間的壁壘,讓開發者可以使用到兼具二者優點的新型數據庫:支持 ACID 事務及 SQL 語義,同時具備水平擴展和跨數據中心高可用。

1. 什么是 Cloud Spanner?

Cloud Spanner 提供(跨區域/跨數據中心)分布式關系型數據庫服務,即所謂 NewSQL 數據庫服務:

分布式、橫向擴展( NoSQL 數據庫);

關系語義:Schema, ACID 事務和 SQL 查詢(傳統關系型數據庫)。

Cloud Spanner 可以橫向擴展到跨區域、跨數據中心的幾百個甚至幾千個節點,同時保證全局強一致性的事務。橫向擴展使得 Cloud Spanner 服務既是高可用的(一個實例失效,還有其他實例),又具備高吞吐能力(多實例并行處理)。

注 1: Cloud Spanner 只支持 SQL 查詢,即支持讀操作。寫操作是自定義的 API [2]。

2. 這算是打破 CAP 定理了嗎?

且慢,這是說 Cloud Spanner 同時提供了強一致性和高可用性嗎? CAP 定理指出一個分布式系統,下列三個特性只能同時實現兩個:

一致性(Consistency):分布式共享的數據只能有一個值;

可用性(Availability):讀寫操作都是 100% 可用;

分區(Partition):能夠容忍網絡分區。

在廣域網環境中,通常認為網絡分區是不可避免的,分布式系統只能是一個 CP 系統或 AP 系統。為什么 Cloud Spanner 能夠實現一個 CA 系統呢?

Eric Brewer 指出 [3, 4] ,嚴格地說, Cloud Spanner 并非一個 CA 系統,但從實際效果看,“仿佛就是”一個 CA 系統。

首先, Cloud Spanner 確實會發生網絡分區,此時它會選擇 C 而不保證 A 。因此,理論層面上, Cloud Spanner 實際上是一個 CP 系統。

其次, Cloud Spanner 實際上能夠提供 5 個 9 以上的可用性,這對于大多數應用來說,足以視為高可用。

注 2:這個可用性是根據 Google 及已有客戶使用 Spanner 服務的實際情況計算的。不能保證所有的應用都能達到這個程度的可用性。

3. 所謂的高可用性,究竟是指什么?

現在的問題是:一個跨區域、跨數據中心的 CP 式分布式系統,高可用的定義是什么?如何保證高可用性?

可用性的定義:確定停用時間區間,觀察一段時間內服務的停用情況。如果在某個時間點服務停用,只有當停用時間超過時間區間,才會真正被算為服務停用。如果還沒到一個時間區間就已經恢復服務,則不算服務停用。

舉個例子,假設停用時間區間是 10 分鐘,觀察 1000 分鐘的服務。共發生 2 次服務停用。第一次,5 分鐘后服務恢復;第二次, 12 分鐘后服務恢復正常。只有第二次才會被視為發生了服務停用,所有該服務的可用性是 1 - 1/100 = 0.99 。

什么叫高可用?首先,服務實際上具有很高的可用性,用戶的應用程序中無需包含專門處理服務停用的代碼。像 Google 內部使用的 Spanner 服務,雖然達不到 100% 可用性,但是遠超 5 個 9 的可用性。從 Google 和客戶實際使用的情況看,可以視為一個高可用的系統。

注 3:Cloud Spanner 與 Spanner 不同,可用性估計會低一些,因此號稱是 5 個 9 的可用性。但是計算可用性時,沒說停用時間區間是多少。

其次,引發服務故障(包括停用)的原因很多。這里討論 Cloud Spanner 可用性的前提是客戶端工作正常,能夠發送請求,因此能夠發現服務是否停用。顯然,僅考慮這種情況計算得到的服務可用性,比 Spanner 真正的可用性要高很多。

最后,由于 Spanner 采用特殊的網絡技術,在實踐中,幾乎不會發生網絡分區。因此,不考慮因為網絡分區導致的服務不可用。

總而言之,說 Cloud Spanner 高可用是指:

實踐中,系統處于 CA 狀態的概率非常高,用戶不需要編寫處理服務停用的代碼;

如果發生了服務停用,原因是網絡分區的可能性也非常非常小。

4. Cloud Spanner 高可用性究竟是如何實現的?

Google 打造了私有的全球網絡。以 Spanner 服務為例,所有的路由器和鏈接(除了客戶端與服務的鏈接)都是由 Google 控制的。每個數據中心都至少有 3 條獨立光纖連接到私有全球網,保證任何兩個數據中心之間都有多條物理路徑。在同一個數據中心內,網絡設備和路徑也是冗余的。因此,不會出現因為網絡路徑中斷引發的網絡分區。

如果配置不當或者軟件升級,導致多條路徑同時中斷,就會引發網絡分區。因此,采用部分升級的策略,即每次升級影響到部分路徑或副本,確保無虞之后,再全面升級。

當然,除了網絡分區,還有很多原因能夠引發服務停用。實際上,在所有引發服務事故(包括停用)的原因中,與網絡相關的僅占 8% 左右。既然 Google 用私有全球網絡解決了網絡分區的問題,那么剩下那些問題如何解決?答案很簡單:他們有一只厲害的運維隊伍。

注 4:討論了半天,實質上是告誡大家別想著達到 Google 的高可用性了。你有錢打造私有全球網嗎?你有高效的運維隊伍嗎?沒有,就購買 Google 托管的 Cloud Spanner 服務吧。

一個現實的問題是:即使采用上述手段,使得網絡分區的可能性大大降低,接近于零。畢竟還不是零,萬一發生了網絡分區呢? 答案是:如果發生網絡分區, Cloud Spanner 將保證強一致性,不管可用性。至于如何保證強一致性,那是另外一個需要詳細討論的問題了。

參考資料

[1] Introducing Cloud Spanner: a global database service for mission-critical applications

[2] Cockroach Labs CTO 談 Cloud Spanner

[3] Inside Cloud Spanner and the CAP Theorem

[4] Spanner, TrueTime and the CAP Theorem

[5] Google 今日發布 Cloud Spanner,這些內容你可能想知道

關鍵字:谷歌SpannerCloud

本文摘自:INFOQ

x 谷歌新發布的分布式數據庫服務,是要打破CAP定理了嗎? 掃一掃
分享本文到朋友圈
當前位置:云計算企業動態 → 正文

谷歌新發布的分布式數據庫服務,是要打破CAP定理了嗎?

責任編輯:editor004 作者: 登州知府 |來源:企業網D1Net  2017-02-21 11:19:25 本文摘自:INFOQ

2月14日,Google 宣布推出 Cloud Spanner 云端數據庫服務的 Beta 版。Cloud Spanner 是構建在 Google Cloud Platform(GCP)平臺上的全球級分布式關系型數據庫服務,主要為 OLTP 場景的核心業務應用提供服務。不同于 Bigtable、Cloud SQL 和 Cloud Datastore,此次 Google 發布的 Cloud Spanner 打破了傳統關系型數據庫與 NoSQL 數據庫之間的壁壘,讓開發者可以使用到兼具二者優點的新型數據庫:支持 ACID 事務及 SQL 語義,同時具備水平擴展和跨數據中心高可用。

1. 什么是 Cloud Spanner?

Cloud Spanner 提供(跨區域/跨數據中心)分布式關系型數據庫服務,即所謂 NewSQL 數據庫服務:

分布式、橫向擴展( NoSQL 數據庫);

關系語義:Schema, ACID 事務和 SQL 查詢(傳統關系型數據庫)。

Cloud Spanner 可以橫向擴展到跨區域、跨數據中心的幾百個甚至幾千個節點,同時保證全局強一致性的事務。橫向擴展使得 Cloud Spanner 服務既是高可用的(一個實例失效,還有其他實例),又具備高吞吐能力(多實例并行處理)。

注 1: Cloud Spanner 只支持 SQL 查詢,即支持讀操作。寫操作是自定義的 API [2]。

2. 這算是打破 CAP 定理了嗎?

且慢,這是說 Cloud Spanner 同時提供了強一致性和高可用性嗎? CAP 定理指出一個分布式系統,下列三個特性只能同時實現兩個:

一致性(Consistency):分布式共享的數據只能有一個值;

可用性(Availability):讀寫操作都是 100% 可用;

分區(Partition):能夠容忍網絡分區。

在廣域網環境中,通常認為網絡分區是不可避免的,分布式系統只能是一個 CP 系統或 AP 系統。為什么 Cloud Spanner 能夠實現一個 CA 系統呢?

Eric Brewer 指出 [3, 4] ,嚴格地說, Cloud Spanner 并非一個 CA 系統,但從實際效果看,“仿佛就是”一個 CA 系統。

首先, Cloud Spanner 確實會發生網絡分區,此時它會選擇 C 而不保證 A 。因此,理論層面上, Cloud Spanner 實際上是一個 CP 系統。

其次, Cloud Spanner 實際上能夠提供 5 個 9 以上的可用性,這對于大多數應用來說,足以視為高可用。

注 2:這個可用性是根據 Google 及已有客戶使用 Spanner 服務的實際情況計算的。不能保證所有的應用都能達到這個程度的可用性。

3. 所謂的高可用性,究竟是指什么?

現在的問題是:一個跨區域、跨數據中心的 CP 式分布式系統,高可用的定義是什么?如何保證高可用性?

可用性的定義:確定停用時間區間,觀察一段時間內服務的停用情況。如果在某個時間點服務停用,只有當停用時間超過時間區間,才會真正被算為服務停用。如果還沒到一個時間區間就已經恢復服務,則不算服務停用。

舉個例子,假設停用時間區間是 10 分鐘,觀察 1000 分鐘的服務。共發生 2 次服務停用。第一次,5 分鐘后服務恢復;第二次, 12 分鐘后服務恢復正常。只有第二次才會被視為發生了服務停用,所有該服務的可用性是 1 - 1/100 = 0.99 。

什么叫高可用?首先,服務實際上具有很高的可用性,用戶的應用程序中無需包含專門處理服務停用的代碼。像 Google 內部使用的 Spanner 服務,雖然達不到 100% 可用性,但是遠超 5 個 9 的可用性。從 Google 和客戶實際使用的情況看,可以視為一個高可用的系統。

注 3:Cloud Spanner 與 Spanner 不同,可用性估計會低一些,因此號稱是 5 個 9 的可用性。但是計算可用性時,沒說停用時間區間是多少。

其次,引發服務故障(包括停用)的原因很多。這里討論 Cloud Spanner 可用性的前提是客戶端工作正常,能夠發送請求,因此能夠發現服務是否停用。顯然,僅考慮這種情況計算得到的服務可用性,比 Spanner 真正的可用性要高很多。

最后,由于 Spanner 采用特殊的網絡技術,在實踐中,幾乎不會發生網絡分區。因此,不考慮因為網絡分區導致的服務不可用。

總而言之,說 Cloud Spanner 高可用是指:

實踐中,系統處于 CA 狀態的概率非常高,用戶不需要編寫處理服務停用的代碼;

如果發生了服務停用,原因是網絡分區的可能性也非常非常小。

4. Cloud Spanner 高可用性究竟是如何實現的?

Google 打造了私有的全球網絡。以 Spanner 服務為例,所有的路由器和鏈接(除了客戶端與服務的鏈接)都是由 Google 控制的。每個數據中心都至少有 3 條獨立光纖連接到私有全球網,保證任何兩個數據中心之間都有多條物理路徑。在同一個數據中心內,網絡設備和路徑也是冗余的。因此,不會出現因為網絡路徑中斷引發的網絡分區。

如果配置不當或者軟件升級,導致多條路徑同時中斷,就會引發網絡分區。因此,采用部分升級的策略,即每次升級影響到部分路徑或副本,確保無虞之后,再全面升級。

當然,除了網絡分區,還有很多原因能夠引發服務停用。實際上,在所有引發服務事故(包括停用)的原因中,與網絡相關的僅占 8% 左右。既然 Google 用私有全球網絡解決了網絡分區的問題,那么剩下那些問題如何解決?答案很簡單:他們有一只厲害的運維隊伍。

注 4:討論了半天,實質上是告誡大家別想著達到 Google 的高可用性了。你有錢打造私有全球網嗎?你有高效的運維隊伍嗎?沒有,就購買 Google 托管的 Cloud Spanner 服務吧。

一個現實的問題是:即使采用上述手段,使得網絡分區的可能性大大降低,接近于零。畢竟還不是零,萬一發生了網絡分區呢? 答案是:如果發生網絡分區, Cloud Spanner 將保證強一致性,不管可用性。至于如何保證強一致性,那是另外一個需要詳細討論的問題了。

參考資料

[1] Introducing Cloud Spanner: a global database service for mission-critical applications

[2] Cockroach Labs CTO 談 Cloud Spanner

[3] Inside Cloud Spanner and the CAP Theorem

[4] Spanner, TrueTime and the CAP Theorem

[5] Google 今日發布 Cloud Spanner,這些內容你可能想知道

關鍵字:谷歌SpannerCloud

本文摘自:INFOQ

電子周刊
回到頂部

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

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

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

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 张家港市| 新干县| 龙南县| 泸定县| 英山县| 商洛市| 通渭县| 斗六市| 察隅县| 太康县| 讷河市| 大理市| 丰顺县| 丹东市| 醴陵市| 西吉县| 监利县| 大姚县| 神池县| 临高县| 丹阳市| 曲水县| 芮城县| 应城市| 京山县| 大理市| 铜陵市| 繁峙县| 阳泉市| 迁西县| 本溪| 临夏市| 镇巴县| 常德市| 响水县| 阿克苏市| 兴山县| 江华| 怀安县| 淄博市| 诸城市|