天天看点

diy数据库(十二)--diydb基于一致性hash的集群演示

一、前言

       前面分析了那么多代码和原理,显得太过枯燥。那么,本章就来结合我在客户端基于一致性hash实现的数据库集群来一并演示一下diydb的实际运行情况。

二、演示

 1、启动数据库服务器diydb

diy数据库(十二)--diydb基于一致性hash的集群演示

         从服务器启动打印的信息,可以看到启动时间、进程id、线程id、日志打印函数是在哪个函数中被调用的、还有日志级别,最重要的还有启动的端口号。在启动完后,打印日志就会被写到日志文件中去。

         下面是启动的另外两个数据库服务器:

diy数据库(十二)--diydb基于一致性hash的集群演示
diy数据库(十二)--diydb基于一致性hash的集群演示

           注意上面diydb后的参数,-d data2是指定数据库的数据文件名是data2,-s 2221是指定数据库服务器启动的端口是2221.

2、据库客户端diy

      (1)首先,看一下客户端配置文件diy.conf

diy数据库(十二)--diydb基于一致性hash的集群演示

原始版本的客户端是没有配置文件模块的,所有这里的参数命名都是我加的,hashenable表示是否开启集群功能,addrs表示服务器的ip地址和端口号,logpath是日志文件的路径

       (2)然后,看一下客户端的启动

diy数据库(十二)--diydb基于一致性hash的集群演示

由上图可以看到客户端正常启动的情况,可以看到启动时会根据配置文件自动连接服务器(修改前的版本是要求用户通过connect命令自行连接服务器)。下面是没有连接成功的情况,我故意没有打开2221端口上的服务器

diy数据库(十二)--diydb基于一致性hash的集群演示

        (3)help命令    

diy数据库(十二)--diydb基于一致性hash的集群演示

可以看到目前数据库所支持的所有操作,但是snapshort快照功能并没有实现。       

       (4)数据插入操作

diy数据库(十二)--diydb基于一致性hash的集群演示

 我们可以看到,key表示根据数据id值通过MD5算法求出来的hash值;hash size是表示key值映射带的服务器(实节点)拥有的虚拟节点的个数,默认每个服务器对应150个虚拟节点;port表示这行数据被插入到的服务器的端口号。

         (5)数据查询操作

diy数据库(十二)--diydb基于一致性hash的集群演示

上面是数据查询命令的使用情况,当我们查到id=5的数据时,由于数据不存在,服务器返回了record is not exist的错误

        (6)数据删除

diy数据库(十二)--diydb基于一致性hash的集群演示

          (7)退出客户端

diy数据库(十二)--diydb基于一致性hash的集群演示

三、总结

       上面是经过增加数据分片后的版本的演示

        增加多机功能后的diydb的源码和库的下载地址:https://git.oschina.net/superlike/diydb-conhash.git(编译方法,执行build_boost.sh编译boost库,执行src/build.sh编译源码和bson库)

         单机带注释版diydb源码下载地址:https://git.oschina.net/superlike/diydb-annotation.git