多数流行的开源缓存服务都是出自老毛子之手,动辄就闭源,说不准哪天就被没收回去了。
国人当自强,我不入地狱谁入地狱。大概两年前,我开始了发明轮子的不归路,从第一行代码开始到现在迭代了无数次,不断优化重构,从玩具代码成功转型为企业软件。
记得每次突发灵感时,持续coding到深夜,硬是被老婆逼着睡觉,想想还是挺值得的。
言归正传,一起来窥探hanbo的究竟。
通信层
netty快速起步,屏蔽掉非核心开发,仅做一些网络参数优化。
协议层
完全兼容redis协议,可以快速平滑地切换到hanbo
逻辑处理层
无锁设计,单线程处理请求指令,没有线程切换
存储层
内存文件映射,IO零延迟,理论上单机并发上限受制于内核的配置
文件系统
二进制格式,分为索引文件和数据文件,逻辑存储单元遵循TLV方式的序列化和反序列化
持久策略
数据同步落盘,保证数据不丢失
高可用
支持一主多从的架构,支持全量和增量同步
缓存容量
默认1GB,超出会自动扩容为原来的两倍
数据结构
string/list/hash/set,基于fastUtil库提供高性能集合读写
高级特性
支持事物,阻塞队列,发布订阅,多db分区
key命中规则
纯内存操作,hash表检索(实际上是搜索二叉树)得到索引对象,进而得到value值(本质上是基于下标读取directbuffer)
时间有限,下一篇我会重点拆解内部实现以及核心代码。