国人当自强,我不入地狱谁入地狱。大概两年前,我开始了发明轮子的不归路,从第一行代码开始到现在迭代了无数次,不断优化重构,从玩具代码成功转型为企业软件。

记得每次突发灵感时,持续coding到深夜,硬是被老婆逼着睡觉,想想还是挺值得的。

言归正传,一起来窥探hanbo的究竟。

通信层

netty快速起步,屏蔽掉非核心开发,仅做一些网络参数优化。

协议层

完全兼容redis协议,可以快速平滑地切换到hanbo

逻辑处理层

无锁设计,单线程处理请求指令,没有线程切换

存储层

内存文件映射,IO零延迟,理论上单机并发上限受制于内核的配置

文件系统

二进制格式,分为索引文件和数据文件,逻辑存储单元遵循TLV方式的序列化和反序列化

持久策略

数据同步落盘,保证数据不丢失

高可用

支持一主多从的架构,支持全量和增量同步

缓存容量

默认1GB,超出会自动扩容为原来的两倍

数据结构

string/list/hash/set

高级特性

支持事物,阻塞队列,发布订阅,db物理隔离

key命中规则

纯内存操作,hash表检索(实际上是搜索二叉树)得到索引对象,进而得到value值(本质上是基于下标读取directbuffer)

时间有限,下一篇我会重点拆解内部实现以及核心代码。

08-07 04:57