https://github.com/canezk/MIT-6.824/tree/master/src/pbservice
Part B: The PBService
mit-6.824 lab2 文檔
這個部分實現的是內存的kv存儲服務
PBserver
server主要有3種角色:
- primary:接收所有的Get,Put,Append操作
- backup:同步primary,必要的時候切換為primary(由ViewService操作)
- idle:必要時切換為backup(由ViewService操作)
Client
client通過rpc訪問PBserver:
1.每次cache一個view,然后直接訪問primary,避免viewservice節點負載過高 2.如果緩存的primary是down的狀態,那么就rp訪問viewservice獲取最新的view
System Design
IO
使用的是串行io(生產環境中使用的存儲肯定需要重新設計的)
測試
cd到pbservice 執行 go test
缺陷
- viewservice 單點問題
- bio模式
- backup升級之后,需要完全復制整個數據庫數據