项目简介
本项目是基于Go语言开发的分布式键值存储系统,名为TikBase。具备高性能、多协议接入、系统保护、数据分区等特性,支持多种存储引擎和数据结构,还通过Raft算法实现多副本强一致性。
项目的主要特性和功能
- 高性能网络IO:运用KiteX作为RPC框架,可高并发处理请求。
- 协议接入:支持客户端通过HTTP协议和RPC请求访问系统。
- 系统保护:基于令牌桶实现限流,保护存储系统。
- 数据分区:采用一致性哈希算法实现数据分区。
- 存储引擎:
- bases:基于Bitcask设计,可采用自适应基数树/跳表作为内存索引,用日志文件持久化数据,适用于读多写少场景,支持单机事务。
- caches:基于HashMap设计,数据完全存于内存,自动回收失效数据,适用于内存存储场景。
- 多种数据结构:支持字符串、哈希、列表、集合、有序集合。
- 多副本强一致性:基于Raft算法实现。
- 即将支持:分布式事务和基于LSM - Tree的存储引擎。
安装使用步骤
服务端启动
- 直接运行:在项目根目录下执行
go run main.go
。 - 编译运行:在项目根目录下执行
go build main.go
进行编译,然后运行生成的可执行文件。 - Docker安装启动(当前只支持ARM架构):
- 拉取镜像:
docker pull venuns/tikbase:latest
- 运行容器:
docker run venuns/tikbase:latest
客户端启动(用于测试)
在项目根目录下执行 go run client/main.go
。
客户端命令行操作
启动客户端后,可使用以下命令:
- set key value
:设置键值对。
- get key
:获取键值对。
- expire key 3
:设置键的过期时间。
- del key
:删除键值对。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】