1. 程式人生 > >高效能快取服務—HANBO(1)

高效能快取服務—HANBO(1)

多數流行的開源快取服務都是出自老毛子之手,動輒就閉源,說不準哪天就被沒收回去了。

國人當自強,我不入地獄誰入地獄。大概兩年前,我開始了發明輪子的不歸路,從第一行程式碼開始到現在迭代了無數次,不斷優化重構,從玩具程式碼成功轉型為企業軟體。

記得每次突發靈感時,持續coding到深夜,硬是被老婆逼著睡覺,想想還是挺值得的。

言歸正傳,一起來窺探hanbo的究竟。

通訊層

netty快速起步,遮蔽掉非核心開發,僅做一些網路引數優化。

協議層

完全相容redis協議,可以快速平滑地切換到hanbo

邏輯處理層

無鎖設計,單執行緒處理請求指令,沒有執行緒切換

儲存層

記憶體檔案對映,IO零延遲,理論上單機併發上限受制於核心的配置

檔案系統

二進位制格式,分為索引檔案和資料檔案,邏輯儲存單元遵循TLV方式的序列化和反序列化

持久策略

資料同步落盤,保證資料不丟失

高可用

支援一主多從的架構,支援全量和增量同步

快取容量

預設1GB,超出會自動擴容為原來的兩倍

資料結構

string/list/hash/set

高階特性

支援事物,阻塞佇列,釋出訂閱,db物理隔離

key命中規則

純記憶體操作,hash表檢索(實際上是搜尋二叉樹)得到索引物件,進而得到value值(本質上是基於下標讀取directbuffer)

時間有限,下一篇我會重點拆解內部實現以