littlebot
Published on 2025-04-16 / 0 Visits
0

【源码】基于Go语言的TikBase分布式KV存储系统

项目简介

本项目是基于Go语言开发的分布式键值存储系统,名为TikBase。具备高性能、多协议接入、系统保护、数据分区等特性,支持多种存储引擎和数据结构,还通过Raft算法实现多副本强一致性。

项目的主要特性和功能

  1. 高性能网络IO:运用KiteX作为RPC框架,可高并发处理请求。
  2. 协议接入:支持客户端通过HTTP协议和RPC请求访问系统。
  3. 系统保护:基于令牌桶实现限流,保护存储系统。
  4. 数据分区:采用一致性哈希算法实现数据分区。
  5. 存储引擎:
    • bases:基于Bitcask设计,可采用自适应基数树/跳表作为内存索引,用日志文件持久化数据,适用于读多写少场景,支持单机事务。
    • caches:基于HashMap设计,数据完全存于内存,自动回收失效数据,适用于内存存储场景。
  6. 多种数据结构:支持字符串、哈希、列表、集合、有序集合。
  7. 多副本强一致性:基于Raft算法实现。
  8. 即将支持:分布式事务和基于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】