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