Skip to content

Latest commit

 

History

History
55 lines (41 loc) · 1.8 KB

README.md

File metadata and controls

55 lines (41 loc) · 1.8 KB

fundb-server设计与实现

fundb-server 设计

  • fundb-server的实现是基于wiretiger,目前设计采用主从架构。参考了部分daos的框架代码,服务端上层采用go语言开发,数据库服务层是采用c来写。fundbjust for fun的意思。设计的主要目的是提供kv的服务,灵活的操作kv数据库。目前完成了dbservice的服务,包括create schema/delete schema/query schema meta/set kv/get kv/del kv的功能。如果想要存储服务的配置服务,可以基于这个二次开发。

  • 如果是fundb-server的架构,所有来自客户端的请求都路由到go服务端的grpc服务,然后采用多线程和本地套接字的方式的转发到dbservice层,请求由dbservice处理完成后在给go的服务层,最终转发给客户端。

wiretiger 编译和安装

$ wget https://github.com/wiredtiger/wiredtiger/archive/refs/tags/10.0.0.tar.gz
$ tar zxvf 10.0.0.tar.gz && cd wiredtiger-10.0.0/
$ env CFLAGS="-ggdb3 -O0" ./configure 

$ make CFLAGS="-ggdb3 -O0" && make install

编译drpc服务端和客户端

$ git clone [email protected]:perrynzhou/fundb-server.git
$ cd fundb-server/ && ./build.sh

编译存储enngine服务

$ cd fundb-server/module/dbservice && ./build.sh
// demo 是配置服务的存储服务,/tmp是数据库存储路径,4代表线程数
$ ./engine conf.json

启动dbserver服务

// 启动kv 的存储服务,接受哦来自drpc服务端的请求
$ cd cmd && dbserver -c conf.json

客户端请求示例

// 请求创建创建schema
$ cd cmd && dbclient -n 3
//删除schema
$ ./dbclient  -t drop_schema -n 10
// put kv
$ dbclient -t put_kv -n 3
// get kv
$ dbclient -t get_kv -n 3

fundb-server项目进度