大家好,我是你們的章魚貓。
今天推薦的專案非常值得使用 Go 語言程式設計的同學去學習和研究,尤其是對於初學者。minikeyvalue 是一個只有差不多 1000 行程式碼的分散式 Key-Value 資料庫,程式碼雖然比較少,但是功能一點都不少,支援多機器的狀態複製,同時對於 Value 的儲存支援 1MB 到 1GB 的大小。
minikeyvalue 專案是受到了 SeaweedFS 的啟發,但是 minikeyvalue 能夠支援擴充套件儲存 10 億級別 PB 級的資料檔案儲存。目前 minikeyvalue 已經在 comma.ai 的生產環境使用。
一個核心簡化 minikeyvalue 的設計點是該專案使用 Nginx 做為我們的資料檔案的儲存服務。
同時 minikeyvalue 依賴 LevelDB 做為資料的索引服務,一定程度上對 minikeyvalue 簡化了很多。而所有的資料會以 blob 資料塊的形式儲存在每臺機器的檔案系統中,這樣我們就可以很容易的在每臺機器上對資料塊進行增加和刪除,用來做資料均衡。
以下是 minikeyvalue 支援的 API:
以下是啟動方式,由於依賴了 Nginx,所以服務啟動前會先啟動 Nginx:
同時也有一些其他基本的使用方法和效能測試命令。
最後說一下程式碼,就跟文章前面說的一樣,真的只有 1000 行左右的程式碼,除去測試程式碼實際只有 5 個程式碼檔案,任何同學都可以參考學習一下。
更多專案詳情請檢視如下連結。
開源專案地址:https://github.com/geohot/minikeyvalue
最新評論