最近,在努力看看 Go 底层代码库。但是,我的习惯还是要从实际的开发经验去学习就准备去写一个基于 Redis 协议和Raft 的一个分布式KV存储的NoSQL做为练手。

因此,选择啦一些优秀的开源项目做为参考:

  • titan A Distributed Redis Protocol Compatible NoSQL Database
  • tidb TiDB is an open source distributed HTAP database compatible with the MySQL protocol
  • tikv Distributed transactional key-value database, originally created to complement TiDB
  • etcd Distributed reliable key-value store for the most critical data of a distributed system
  • badger Fast key-value DB in Go.

以上项目有很大的参考性意义。

第一阶段:

​ 编写基础的TCP接受功能,能满足 Redis 自带压力测试工具 redis-benchmark 的压力测试

通过 基础的 net 库测试 、 evio 库、badger 读写 进行性能测试

​ 主要代码参考:

    - [evio]( https://github.com/tidwall/evio ) 
    - [net]( https://golang.google.cn/pkg/net/ ) Examples

第二阶段:

主要查阅啦 titan 的源代码,了解啦Redis协议(RESP)的解析方法。

主要代码目录是:

  • encoding 包代码 Redis 协议解析

  • client.go 获取TCP请求内容

第三阶段:

Etcd Raft 代码查看

主要代码参考:

​ - etcd

第四阶段:

代码整合开发具备:

​ 基础的:SET/GET/PONG 命令支持