项目简介
GirafKV是一个高可用、最终一致性的分布式键值存储系统。其采用中心管理主从架构,借助Zookeeper实现服务注册、发现、心跳监测、主从选举和分布式锁服务。该系统支持数据分区和可扩展性,具备数据恢复和迁移能力,还实现了基于改进型一致性哈希的Partition和启发自原子更新技术的Scalability。
项目的主要特性和功能
- 采用中心管理主从架构,保障系统高可用性与数据一致性。
- 利用Zookeeper进行分布式服务管理,涵盖服务注册、发现、心跳监测、主从选举和分布式锁服务。
- 支持动态调整数据分区和请求分发,协调节点间的数据迁移。
- 数据节点负责数据恢复和迁移,确保负载均衡和数据一致性。
- 客户端具备集群信息缓存和异常处理功能,提升系统整体性能与可用性。
- 支持高效的读写请求处理流程,保证数据操作的正确性与性能。
- 运用改进型一致性哈希算法,引入虚拟节点解决对象在节点间分布不均问题。
- 借鉴写时复制思想,实现基于原子迁移的可扩展性。
- 支持全量同步和增量同步的数据节点备份同步协议,确保数据一致性。
- 实现简单的Master容灾策略,保证Master节点无状态。
- 使用Java的ConcurrentHashMap,实现以哈希段为粒度的高性能并发读写。
- 实现数据分布和请求分发层面的负载均衡。
安装使用步骤
环境准备
- 安装Java 8或更高版本。
- 安装Zookeeper并启动Zookeeper服务。
- 安装gRPC和相关依赖库。
复制项目
bash
cd GirafKV
编译项目
bash
mvn clean install
启动Zookeeper
bash
./zookeeper/bin/zkServer.sh start
启动Master节点
bash
java -cp target/GirafKV-1.0-SNAPSHOT.jar server.metaserver.Master <IP地址> <端口号>
启动DataServer节点
bash
java -cp target/GirafKV-1.0-SNAPSHOT.jar server.dataserver.DataNode <IP地址> <端口号> <组ID>
启动客户端
bash
java -cp target/GirafKV-1.0-SNAPSHOT.jar client.Client <Master IP地址> <Master 端口号>
使用客户端进行操作
- 存储数据:
put <key> <value>
- 获取数据:
get <key>
- 删除数据:
delete <key>
按照上述步骤,即可成功部署和使用GirafKV分布式键值存储系统。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】