前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >clustered tdb

clustered tdb

原创
作者头像
用户2176138
修改2021-01-25 10:35:12
7110
修改2021-01-25 10:35:12
举报
文章被收录于专栏:teeth

tdb是一个简易的单机kv数据库,samba中有些组件需要依赖它。而CTDB(clustered tdb)可以将tdb变成一个分布式kv数据库。各个tdb节点中数据的同步迁移依赖于ctdb节点,原理见:CTDB_database_design

用法

参考test目录下的例子。

操作tdb的程序需要作为ctdb daemon进程的一个client,通过unix domain与ctdb daemon进程建链通信。

操作数据库时不再调用tdb原生的借口,而是使用ctdb_client.h中封装的操作接口。

使用ctdb_client.h中的接口会依赖好几个ctdb中的.c文件,因此想单独拿出来编译比较麻烦(直接在ctdb的waf中添加一个新的编译命令是不是更方便)。

关于ctdb链路

ctdb有两个进程:daemon和recover,后者是前者的子进程。

集群中daemon进程之间会相互建链(tcp),每个节点daemon和recover之间会建链(unix domain,daemon是服务端),ctdb工具也是通过unix domain的方式和daemon进程建链。和daemon建立unix domain通信的进程被叫做daemon的client(如:recover;ctdb工具;自定义的操作分布式tdb的进程)。

daemon和recover的通信相关代码简单介绍

recover是作为客户端,主动向daemon建链,但是它有时也需要向集群中其他daemon进程发控制消息,方式是,先把消息发到本地的daemon,本地daemon进程转发消息到相应的其他节点的daemon。recover发消息是同步的(没注意有没有异步),发了一条控制消息就原地等reply或等超时,用的都是tevent_loop_once。

daemon是服务端,同时监听tcp消息(集群其他节点的daemon进程)和unix domain(client)。它处理消息是异步的,用的是tevent_loop_wait。

recover和daemon都是单线程的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 用法
  • 关于ctdb链路
  • daemon和recover的通信相关代码简单介绍
相关产品与服务
TDSQL MySQL 版
TDSQL MySQL 版(TDSQL for MySQL)是腾讯打造的一款分布式数据库产品,具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特性,同时提供智能 DBA、自动化运营、监控告警等配套设施,为客户提供完整的分布式数据库解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档