- 类型: 内核原理/架构深究
- 话题标题: 【原理向】当OceanBase集群进行Rebalance时,对正在运行的热点事务会产生怎样的影响?
-
话题内容:
一直对OceanBase的负载均衡机制(日志流的分裂与合并)很感兴趣。我们知道当集群节点扩缩容或负载不均时,系统会自动调度Unit或迁移日志流。
假设某个日志流正在处理高频的写入事务,此时调度器决定将该日志流的一部分分区迁移到另一台节点。
请问:- 这个迁移动作对当前正在执行但未提交的事务是透明的吗?会阻塞事务的提交吗?
- 如果迁移过程中节点宕机,恢复流程会比平常更复杂吗?在应用层通常需要做什么样的重试机制来应对这种微小的抖动?
5 个赞
迁移我觉得应该是无感的吧
3 个赞
学习一下
2 个赞
- 对事务的透明性:分区迁移对正在执行且未提交的事务是透明的。OceanBase 采用两阶段迁移机制:
- 先在目标节点创建分区的只读副本,同步源节点的增量日志。
- 待数据同步完成后,进行一次原子切换,将分区的读写权限转移到目标节点。
- 对事务提交的影响:迁移过程不会阻塞事务提交。
- 若事务在切换前提交,会在源节点完成。
- 若事务在切换后提交,会被路由到目标节点完成。
- 整个过程中,事务的 ACID 特性得到保证,不会出现数据丢失或不一致。
2 个赞
有道理
1 个赞