从第一性原理构建。
从零开始为多线程内存数据处理而设计。无继承的技术债务,无运行时开销,无任何妥协。
为可预测的性能而设计
FlashKey的架构消除了限制传统内存存储的瓶颈。
多线程事件循环
每个工作线程运行自己的epoll/kqueue事件循环,无争用地并行处理命令。
线程独立内存区域
线程本地内存分配消除锁争用,提供可预测的分配性能。
无锁数据结构
并发哈希表和跳表实现无互斥开销的并行读写。
集成存储引擎
MVCC快照和AOF持久化直接内置于核心——无需外部进程协调。
从请求到响应
每个操作都遵循为最低延迟优化的确定性路径。
1
连接接受
传入连接通过SO_REUSEPORT分配到各工作线程。
2
命令解析
RESP2/RESP3协议解析,零拷贝缓冲区管理。
3
执行
在线程本地数据结构上执行命令,具有MVCC隔离。
4
响应
结果序列化后通过同一工作线程的事件循环发回。
透明水平扩展
FlashKey集群使用与Redis兼容的哈希槽分配在节点间分发数据。
主节点
具有自动哈希槽分配的主数据持有者。每个主节点处理16,384个哈希槽的一个子集。
副本节点
用于读取扩展和自动故障转移的实时同步副本。每个主节点可以拥有多个副本。
哨兵
集成监控和自动故障转移协调。检测主节点故障并在无需人工干预的情况下提升副本。
有针对性的技术选择
每个组件都为性能和可靠性而选择。
C11
手动内存管理,零运行时开销,直接硬件访问
epoll / kqueue
平台原生事件驱动I/O,实现最大连接吞吐量
AES-256-CTR
硬件加速加密,支持AES-NI指令集
Lua 5.1
嵌入式脚本引擎,用于服务器端命令组合