pnuts是yahoo!的分布式資料庫系統,支援地域上分布的大規模併發操作。它根據主鍵的範圍區間或者其雜湊值的範圍區間將表拆分為表單元(tablet),多個表單元儲存在乙個伺服器上。乙個表單元控制器根據伺服器的負載情況,進行表單元的遷移和拆分。每條記錄的資料都沒有固定的模式(採用json格式的文字)
表單元控制器(tablet controller):乙個表單元是是表中被劃分出來的一組記錄的集合。表單元控制器管理著表單元的建立,切分,維護儲存單元與表單元的對映關係。有主備伺服器來保證其可用性。
路由器(router):根據從表單元控制器中讀取到的資訊將資料路由到正確的儲存單元。另外也支援資料的聚合。
儲存單元(storage unit):儲存表單元。可以是乙個ulix檔案系統(hash表)或者mysql innodb(順序表)
訊息中介軟體(ymb):分發備份記錄到其他的region或者更新通知給客戶端。
由於pnuts設計資料分布在地理上的不同位置,所以它沒有採用代價比較高的事務操作。另外由於最終一致性可能會出現一些不希望看到的中間結果,所以pnuts主要實現一種時序上的一致性。
在每條記錄中,有乙個字段標誌該記錄master所屬的區域,所有的更新先發往master,由master將資料同步到其他的備份中。為了避免插入操作的衝突,表也分為主備,所有的記錄插入操作都先在主表上執行。在底層,通過訊息中介軟體(ymb, yahoo! message broker)來保證資料分發的順序。
另外每條記錄都有乙個版本號,由應用根據自己的需要,來決定讀寫記錄的方式: 可以讀取任意的備份,也可以讀取最新的記錄,或者讀取指定的版本,在寫的時候既可以直接覆蓋,也可以實現樂觀鎖的控制。通過這種方式,來保證應用的讀寫一致性和寫讀一致性。
資料的可用性主要是通過ymb來保證,ymb也同時管理日誌,資料發布到ymb視為資料的提交,初始時ymb將資料寫到兩個伺服器的日誌中, 只有當資料分發到所有的區域上後,ymb才將日誌刪除。
在一條記錄的master區域不可用時,應用程式可以決定是否繼續更新,如果更新則需要手動解決潛在的衝突。
客戶端支援自動的failover
主要通過本地化操作實現,系統統計最近三次請求的**,將master遷移到相應的region中。
表單元控制器檢測系統的負載情況,通過遷移或者拆分tablet來均衡負載。
另外,資料拷貝的傳輸為非同步操作。
分布式系統介紹 PNUTS
pnuts是yahoo 的分布式資料庫系統,支援地域上分布的大規模併發操作。它根據主鍵的範圍區間或者其雜湊值的範圍區間將表拆分為表單元 tablet 多個表單元儲存在乙個伺服器上。乙個表單元控制器根據伺服器的負載情況,進行表單元的遷移和拆分。每條記錄的資料都沒有固定的模式 採用json格式的文字 表...
分布式系統介紹
目錄標籤 空格分隔 讀書筆記 總結 1 增加網路開銷與延遲,不過基本上影響很小,可以不在考慮因素之內 2 負載均衡硬體 軟體出現問題,那麼整個網路都會受到影響,所以需要考慮 伺服器的雙機熱備問題。而且在切換過程中,未完成的請求還是會受到影響。總的來說,是一種非常方便及適用的保證高可用的一種方式。總結...
分布式檔案系統介紹
分布式系統 分布式系統是指利用多台計算機協同解決單台計算機所不能解決的計算 儲存等問題。分布式系統分兩種 分布式儲存和分布式計算。分布式儲存主要有分布式檔案系統和分布式資料庫。分布式檔案系統主要是用於檔案儲存。網際網路上的所有資源,最終都會以檔案的形式存放在具體的物理機器的儲存裝置上。儲存 讀取和管...