Google Megastore介绍
Google Megastore介紹
- 概述
- 策略對比
- 異步主從 Asynchronous Master/Slave
- 同步主從 Synchronous Master/Slave
- 樂觀復制 Optimistic Replication
- Megastore的選擇
- Megastore系統架構
- 實體組EG
- 并發控制(事務)
- 讀事務
- 寫事務
- 索引
- 協調者
- 讀寫流程
- 讀流程
- 寫流程
- Megastore總結
概述
Megastore是在Bigtable的基礎上提供了友好的數據庫功能支持。是介于關系型數據庫(RDBMS)和NoSQL之間的存儲技術。其引入了實體組(Entity Group EG)的概念,每一個用戶的所有數據構成一個實體組。每個EG中可能會有多張表。多數情況下同一個EG只有一個子表,分布在一臺bigtable TabletServe上,如果EG比較大,導致子表分裂,會分布到多臺機器上。同一個EG內保證強一致性,多EG之間只保證最終一致性
Megastore研發的目的是為了支撐谷歌每天30億次的寫請求和200億次的讀請求,并且要支撐PB級別的跨可用區數據規模
策略對比
論文開頭作者就對比了分布式系統各種共識方案:
異步主從 Asynchronous Master/Slave
通過一致性協議選主并復制日志,WAL日志至少要寫到一個slave上去。這種方式master可以做到很快的ACID事務,但是節點發生變動或者leader變化的時候會導致有一定的時間不可服務,并且由于各節點的副本狀態不是強一致,其丟數據的風險要比一般的強一致系統要大。
同步主從 Synchronous Master/Slave
主將數據復制到所有的從節點后操作才算完成。需要有外部服務及時檢測各個節點的狀態(節點下線、路由變更、修復)。由于使用強同步協議,丟數據的風險大大降低,隨之而來的是延遲的增大
樂觀復制 Optimistic Replication
wiki中定義為:
Optimistic replication, also known as lazy replication,is a strategy for replication, in which replicas are allowed to diverge.
Traditional pessimistic replication systems try to guarantee from the beginning that all of the replicas are identical to each other, as if there was only a single copy of the data all along. Optimistic replication does away with this in favor of eventual consistency, meaning that replicas are guaranteed to converge only when the system has been quiesced for a period of time. As a result, there is no longer a need to wait for all of the copies to be synchronized when updating data, which helps concurrency and parallelism. The trade-off is that different replicas may require explicit reconciliation later on, which might then prove difficult or even insoluble.
個人理解意味副本中的內容只保證最終一致性,如果各個副本中內容不一致,需要有額外的機制去解決沖突。這種模型意味著可用性和延遲都是最好的,但是就別想做事務了
Megastore的選擇
所以最后的方案系統中并沒有master節點,并且使用paxos協議復制數據,并在集群中增加協調者處理、優化讀寫請求。
Megastore系統架構
megastore的功能主要分為以下三部分:
實體組EG
并發控制(事務)
讀事務
Megastore提供了三種讀取模式:
寫事務
Megasttore的所有寫操作都要先寫redo log,然后采用paxos復制到集群中。流程大概如下:
由于Megastore從上層應用的角度設計出了EG的概念:同一時間多個客戶端對統一EG發出修改請求的概率較低。所以事務沖突概率較低。
Each Megastore entity group functions as a mini-database that provides serializable ACID semantics. A transaction writes its mutations into the entity group’s write-ahead log, then the mutations are applied to the data.
索引
megaStore主要提供以下2類索引
協調者
MegaStore的一大兩件就是在集群中引入了協調者的概念,引入協調者后:
讀寫流程
讀流程
- 讀流程首先檢查協調者,查看是否本地EG處于最新狀態
- 如果本地最新,可以直接使用local read
- 如果本地不是最新,需要對讀操作應用paxos協議,做一個majority read
- 追趕:讀取最新EG后,需要通過獲取最新redo log,然后apply redo log到本地的方式將本地EG更新,并通知協調者
- 如果本地最新,可以直接使用local read
寫流程
寫流程就是對paxos組寫入。對某個EG執行paxos協議,不再贅述。
Megastore總結
分布式存儲系統有兩個目標:一個是可擴展性,最終目標是線性可擴展,另一個是功能,最終目標是支持全功能SQL。Megastore是一個介于傳統關系型數據庫和分布式NoSQL系統之間的存儲系統。融合了SQL和NoSQL兩者的優勢。
Megastore的是構建與Bigtable之上的系統,其創新點主要包括:
總結
以上是生活随笔為你收集整理的Google Megastore介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分布式表格系统Google Bigtab
- 下一篇: 副本放置策略Copysets论文解读及工