Object的metadata可多可少,由於Lab只是一個小小的object storage示範,所以我們只會存放name, created time, version, hash, component location,然後存放的資料庫我們使用redis,他是一個與主機分離的資料庫,並且他是存在記憶體上的,存取速度非常快
關於object的hash,目的是確保獨一無二的object,存在data server上的component我們都會以hash作為名字,這樣就不會重複儲存,至於怎麼hash,我們會對整個壓縮後的object進行hash,使用的演算法是sha256,sha256有256^32種組合,雖然hash難免一定會進行碰撞,而碰撞的代價就是新object會把舊的覆蓋掉,但是到目前為止,還沒有人report sha256的碰撞
此外,為了防止上傳過程中數據出了什麼意外,可能不小心被改了,所以前端的request也需要hash好再上傳,重複確認數據的完整性
所以我們的架構將會如下所示
下一篇會介紹Kafka和Redis這兩個有名的middleware原理