tigerNoSQL 数据库

联合创作 · 2023-10-01 01:01

erlang开发的开源高可靠性nosql数据库tiger介绍


可靠性:


    写:对于n=2f+1 机器集群,在f台机器宕机的情况下可写


    读:只要是没有宕机的机器都是可读的


一致性:


    强一致性


扩展性:


    读的能力可以线性扩展 


功能:


   目前实现了key/value的get set 和delete功能:


   基于memcached协议和leveldb的持久数据库


   基于redis协议和redis存储引擎的内存数据库,宕机后数据重放到内存


 


性能:


     单机跑3个实例:


     双核,Pentium(R) Dual-Core  CPU      E6600  @ 3.06GHz


     centos 5.6 erlang R15b 2G 内存


    基于memcached协议的接口:


     set接口:


     91.49% <= 12 milliseconds,5387.93 requests per second


     get 接口:


     100.00% <= 13 milliseconds 18177.54 requests per second
     基于redis协议的接口:


     set接口:


     100.00% <= 60 milliseconds 3954.13 requests per second


      get 接口: 
     13477.09 requests per second


 


     测试程序使用:mc-benchmark,redis-benchmark,因为3个实例在一个机器上,所以写的性能影响比较大,    部署的时候建议分开到不同物理机部署。


 


主要技术:


  erlang:用于socket和通讯层


   Zab(Zookeeper  Atomic Broadcast):实现消息的原子广播


  存储引擎:leveldb,redis存储引擎


 


 


架构实现:



zab_engine介绍:


将zab协议实现为erlang的api,如果使用erlang开发项目,可以嵌入zab_engine,实现多master的架构变得非常简单


 


 


引擎实现功能:


1:2阶段提交


2:恢复


   a.follow恢复


   b.leader恢复


   c.在线加入和恢复


架构:




 


使用说明:


1.实现gen_zab_server 回调函数


2.对于须同步数据,实现handle_commit


3.对于只读数据,实现handle_call

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报