高效能快取服務—HANBO(1)
阿新 • • 發佈:2019-08-06
多數流行的開源快取服務都是出自老毛子之手,動輒就閉源,說不準哪天就被沒收回去了。
國人當自強,我不入地獄誰入地獄。大概兩年前,我開始了發明輪子的不歸路,從第一行程式碼開始到現在迭代了無數次,不斷優化重構,從玩具程式碼成功轉型為企業軟體。
記得每次突發靈感時,持續coding到深夜,硬是被老婆逼著睡覺,想想還是挺值得的。
言歸正傳,一起來窺探hanbo的究竟。
通訊層
netty快速起步,遮蔽掉非核心開發,僅做一些網路引數優化。
協議層
完全相容redis協議,可以快速平滑地切換到hanbo
邏輯處理層
無鎖設計,單執行緒處理請求指令,沒有執行緒切換
儲存層
記憶體檔案對映,IO零延遲,理論上單機併發上限受制於核心的配置
檔案系統
二進位制格式,分為索引檔案和資料檔案,邏輯儲存單元遵循TLV方式的序列化和反序列化
持久策略
資料同步落盤,保證資料不丟失
高可用
支援一主多從的架構,支援全量和增量同步
快取容量
預設1GB,超出會自動擴容為原來的兩倍
資料結構
string/list/hash/set
高階特性
支援事物,阻塞佇列,釋出訂閱,db物理隔離
key命中規則
純記憶體操作,hash表檢索(實際上是搜尋二叉樹)得到索引物件,進而得到value值(本質上是基於下標讀取directbuffer)
時間有限,下一篇我會重點拆解內部實現以