igithu / dist_storage

mini分布式key-value存储引擎,主要涵盖: RPC,一致性Hash,master-slave-client架构,心跳机制等基本已经实现,主备结构, 数据迁移,数据副本等一些分布式主要功能将在以后添加

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

dist_storage

mini分布式存储引擎,主要涵盖实现 RPC,一致性Hash,master-slave-client架构,心跳机制等。 数据迁移,数据副本,节点增加宕机容错等讲在本阶段后继续增加

总体说明

1.一致性hash:仿照memcache原理下的ketama hash算法
2.现阶段采用master-slave-client架构,slave:负责数据存储,master:记录更新slaves状态信息,client:按照一致性hash直接与slave通信,同时周期从master获取信息

编译说明:

该项目使用gcc/g++编译,工具为automake,所以编译前需要安装好automake等编译工具,另外要下载third-64,pub_util两目录下的代码,并将这两个目录放在与本想项目顶层目录平行位置下才能顺利编译,最后是执行顶层目录下build.sh 若编译所有项目请执行build.sh all
最后生成目录为dist_storage,所有需要的生成文件均在该目录下

进展结果:

现阶段可以基本跑通读写功能,通过valgrind检测主要运行程序 保证definitely lost为0

src下的代码说明

1.common:
    内部含有日志,通用函数,以及md5等通用工具函数
2.config:
    该目录主要的代码主要负责配置文件的加载和参数的设置
3.rpc:
    公共的通信基础组件,主要负责分布式存储系统内部各个组件的之间的网络通信
4.proto:
    该目录主要为protobuf文件以及对应生成的protobuf代码,主要定义了各个组件之间的通信协议,包括请求响应字段信息,rpc调用函数等
5.name_server:
    分布式存储系统的master,现阶段主要实现:对各个data_server 状态监控以及记录,构建一致性hash表负载均衡使用,另外提供对外信息rpc接口调用。后面将实现:数据节点增加与挂机时的容错功能,副本容错数据生成,数据迁移计划制定,主备服务功能等
6.data_server:
    分布式存储系统主要数据存储载体,现阶段包括实现:对外数据的读写rpc调用,内部leveldb的封装以及抽象存储接口,心跳信息功能等。后面将增加实现增加其他(除了leveldb之外)存储实体的接入,针对leveldb读性能不稳定增加缓存结构等功能
7.dist_client:
    分布式存储系统的客户端访问,现阶段主要实现:从name_server定时更新信息(包括一致性hash表,存活节点列表等),一致性hash(ketamahash)的rpc调用访问。后面将实现shell操作,http server接入 多语言的支持(例如对Python,Java的支持)以及一些其他增强型功能

About

mini分布式key-value存储引擎,主要涵盖: RPC,一致性Hash,master-slave-client架构,心跳机制等基本已经实现,主备结构, 数据迁移,数据副本等一些分布式主要功能将在以后添加


Languages

Language:C++ 90.9%Language:Shell 7.6%Language:Protocol Buffer 1.5%