beansdb 分析

本文详述了BeansDB的架构和运行流程,包括数据存储使用bitcask模型和HashTree索引,协议基于memcached并采用多worker线程的leader/follower模式。文中还介绍了 BeansDB 的数据路由和服务端分离设计,遵循CAP理论中的最终一致性。此外,分享了源码分析资源,便于深入理解BeansDB的最新版本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(看完这个文章,想对源码有进一步了解,可以到我的git里面看注释,或者邮件我讨论。附上地址:https://github.com/PhoneLi/beansdb)

在开始看这篇文章之前,建议花几分钟看下beansdb的结构分析。

             beansdb的结构分析:http://blog.youkuaiyun.com/l402398703/article/details/19371515


简述:

         1:数据存储实现。bitcask储存模型,HashTree 实现数据索引。

         2:协议实现。使用memcached的代码;修改redis的AE事件异步驱动库;多worker线程, leader/follower 模式;

(leader/follower模式介绍:http://www.habadog.com/2012/01/11/leader-follower-thread-model

    bitcask模型介绍:http://blog.nosqlfan.com/html/955.html)

    

                                        

(由上图看出,数据冗余直接在服务server之间实现。采用3为冗余数量。)

--------------------------==============水平分割线=================------------------------------

运行流程:

     1:beansdb.c的main函数启动;

     2:getopt处理各参数;

     3:一些资源的初始化,例如 getrlimit() ,  item_init();    stats_init();   conn_init();(资源参数很多,建议不要花事件耗在这里。等看完后面的函数代码,便会自然理解参数的含义。);

     4:hs_open函数 {

          打开数据目录(没有则创建),hstore的初始化。函数结尾调用parallelize函数;
          parallelize函数:启动一些线程运行scan_thread,每个scan_thread 运行对应的bc_scan。
          bc_scan:加载目录里面的 XXX.[data|hint.qlz|htree]文件。(ht_open 加载HTREE_FILE 文件,sanHintF

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值