在分布式数据库的弹性扩容场景中,通过节点间实时数据迁移实现流量分流,保障服务的稳定性与连续性。
本项目基于开源的分布式数据库原型 Deneva ,实现事务在线迁移技术,该分支主要负责日志传输与重放模块。
分布式系统架构包括客户端和服务器集群部分。
当客户端发送请求时,服务器会发起会话并启动事务以执行相应的查询。SQL 引擎会生成执行计划,承载会话的服务器则充当查询控制器。如果数据分布在其他节点上,查询控制器会生成分布式执行计划并将其分发给其他节点上的查询执行器。然后,这些节点会将其本地结果发送回查询控制器。
Deneva 内部程序模型:工作线程处理工作队列的消息,日志线程处理日志队列的消息。节点之内和节点之间均通过消息传递。
1.基于快照-日志协同机制,先进行基础数据快照拷贝,再通过增量日志同步实现热迁移。
2.主从协同事务处理,扩容期间源节点保持分布式事务主角色,平滑切换后自动重定向到新节点。
-
日志记录功能。定义物理逻辑混合日志,使用WAL方式在工作线程处理读写操作或提交操作时记录日志。
-
日志发送机制。继承Deneva系统的消息类,封装日志消息类。在事务迁移阶段将日志发送到新节点。
-
日志重放逻辑。在快照数据同步完成后,重放缓冲队列中的日志记录,调用存储过程完成数据恢复。
Deneva 部署和运行参照 README_1, README 。
部署过程中遇到问题可以参考 部署问题汇总
脚本 install_boost.sh, install_environment.sh, install_jemalloc.sh, install_nanomsg.sh 帮助快捷安装相关库。
Deneva 日志部分代码理解 总结 .
Deneva 日志部分运行主要问题 总结 .
项目完成的功能模块 总结 .
项目实验运行 记录 .


