設計一個分散式塊儲存
ofollow,noindex" target="_blank">https://github.com/jiajunhuang/hfs
最近讀了GFS論文,然後想自己造一個輪子出來,畢竟自己的輪子圓又圓。
設計思路
最開始其實是腦子一團漿糊,沒想好要怎麼完成這個設計。不過仔細想了一下之後,逐步把大的系統拆解之後,然後依次實現和迭代, 最終還是成功的做出來了。
- 封裝一套POSIX API的操作檔案的API,用於操作本地檔案,包括CRUD
- 封裝一套操作檔案(file)和chunk的API,並且提供RPC/">gRPC介面,稱之為chunkserver
- 使用etcd來儲存關於chunk和file的資訊,例如file有哪些chunk組成,順序是如何,每個chunk大小是多少,實際上寫入的資料是多少,把這些資訊稱之為meta data
- 給chunkserver加上服務註冊的功能,使得在etcd中可以讀取到worker的資訊
- 增加一個監聽chunk變化的worker,當發現本機有新建的chunk時,就挑選可用的其他chunkserver對該chunk進行同步
- 更改刪除檔案的API,刪除檔案時,刪除所有節點上的chunk
差不多就是這樣一個順序。
還可以做的事情:
hfsclient