分布式系統中的共識性演算法的設計方案

2022-07-10 15:03:11 字數 1816 閱讀 6488

基於paxos一致性協議,開發乙個三節點集群kv儲存服務paxoskv。假定,該paxoskv用於儲存某遊戲中的玩家、家族或者聯盟的純英文slogan,該遊戲活躍id 10000個。slogan長度限制為32位元組。slogan中,需要包含客戶端傳送請求時刻的毫秒級時間戳。

由於我們還未正式開展具體的設計,這裡我們以raft演算法為例,分析其設計方案。

1、軟體架構

由於本專案和其他的web專案不同,主要關注於分布式演算法的設計和實現,所以這裡採用c/s體系結構。客戶端通過put(),和get()兩個操作向後端傳送請求,後端包含多台機器,這些機器通過一致性演算法達成一致後,返回給客戶端確認。c/s的架構風格是指客戶**通過請求和應答的方式訪問或者呼叫服務**。客戶是主動的,服務是被動的。

2、介面api

具體如下

api功能

put更新資料庫中的鍵值對

get返回對應key的value

sendrequestvote

傳送選票請求,只在機器狀態為candidate時才會呼叫

requestvote

響應sendrequestvote請求,根據條件決定是否投票

傳送追加log的請求,由leader發向follower

響應sendrequestvote請求,根據條件決定是否追加log

sendsnapshotinstall

傳送使用快照的請求,leader會將快照發給狀態太舊的機器

snapshotinstall

響應sendsnapshotinstall請求,使用快照更新自己狀態

1. 分解檢視

分解檢視用軟體模組勾劃出系統結構,往往會通過不同抽象層級的軟體模組形成層次化的結構。這裡採用按功能分解的檢視。

2. 依賴檢視

依賴檢視展現了軟體模組之間的依賴關係。

3. 執行檢視

執行檢視展示了系統執行時的時序結構特點,這裡用時序圖展示執行檢視。

4. 實現檢視

實現檢視是描述軟體架構與原始檔之間的對映關係。典型的實現檢視可以由軟體專案的源檔案目錄樹來呈現。

5. 部署檢視

部署檢視是將執行實體和計算機資源建立對映關係

4、資料庫設計

本專案實現的是kv資料庫,所以無需建立關係型資料庫的表。只需要以kv的形式儲存id和slogan的對應關係即可。

id slogan

6、核心工作機制

raft實現了和paxos相同的功能,它將一致性分解為多個子問題:leader選舉(leader election)、日誌同步(log replication)、安全性(safety)、日誌壓縮(log compaction)、成員變更(membership change)等。同時,raft演算法使用了更強的假設來減少了需要考慮的狀態,使之變的易於理解和實現。然後由於狀態機的特性,只要我們按序執行log,就能保證kv的一致性。

這樣,我們就能實現使用者資料在多個副本間一致,在leader宕機的情況下快速切換到備機。

分布式系統中的共識性演算法的需求分析和概念原型

隨著網際網路飛速發展,資料流量和企業所需要儲存的資訊也越來越多,單一的機器已經不能滿足日常的需求,那麼分布式系統也就應運而生。而在分布式系統中,最重要的問題就是如何保證資料的一致性。為了保證資料的一致性,我們必須要找到一種共識演算法,來確保各機器之間的資料一致性。在分布式系統中,由於機器可能宕機,網...

分布式系統的一致性演算法(共識演算法)

參考 分布式系統 多個節點之間的兩種通訊模型 共享記憶體 訊息傳遞。paxos演算法是基於訊息傳遞的。paxos的前提假設是不存在拜占庭將軍問題,即 通道是安全的 通道可靠 發出的訊號不會被篡改,否則該演算法就不可靠。如何保證訊息沒被篡改 數字簽名等 paxos能達成一致的原因 過半數學原理 我們稱...

分布式 分布式系統的設計

在計算機領域,當單機效能達到瓶頸時,一般有兩種方式解決效能問題 而分布式系統的設計說白了就是 如何合理將乙個系統拆分成多個子系統部署到不同機器上。講設計方法前,先介紹分布式系統的特性 1 分布性 空間中隨機分布。這些計算機可以分布在不同的機房,不同的城市,甚至不同的國家。2 對等性 分布式系統中的計...