分布式金融架构课
任杰
eBay 支付账务系统负责人,前蚂蚁金服架构师
19876 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 30 讲
开篇词 (1讲)
分布式金融架构课
15
15
1.0x
00:00/00:00
登录|注册

19 | 正确性案例(下):如何在运行时进行数据系统的动态分库?

你好,我是任杰。这一讲我想和你聊一聊如何在运行时进行数据系统分库。
如果你需要进行数据系统分库,那么恭喜你,你的业务量又上了一个新的台阶。但是随之而来也有一个坏消息,那就是分库的过程想做得好的话会很困难。如果做得不好,可能你在每次集群的扩容前,都需要暂停业务,这样会带来一定的经济损失。
所以,为了解决这个问题,我们今天就来学习一下怎么做动态扩容。

支持分库功能的架构目标分析

在我们学习如何实现动态分库之前,先来看看我们的设计目标是什么。
最原始的分库方法是先将业务暂停,这样就不会有人修改数据系统。接着要完成数据系统备份,以防出错后回滚所有操作。然后按照预定的逻辑将数据切分到不同的机器上。如果测试结果没问题,那么就重启业务。
虽然这个方法清晰简单,但是带来的问题是业务需要暂停很久的时间。这个过程的示意图如下:
所以,分库并不是一个不能解决的问题,只是我们希望分库的时间越短越好。那前面说的这几个步骤在时间上还能不能再优化一下呢?其实也是可以的。
数据系统一般都会提供一个异步备份的容灾配置,你可以多备份一台机器。虽然这台备份机并没有所有数据,但是大部分数据都在,所以当你把业务系统停掉之后,只需要把备份机和主机之间的差别补全就可以了。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了动态分库在数据系统中的重要性以及实现方法。文章首先分析了动态分库的架构目标,强调了减少系统停机时间、与业务无关、自动化的重要性。接着详细介绍了适用于事件溯源架构的分库方法,包括架构假设、分库前和分库中的具体步骤。通过利用快照解决存量数据复制问题、命令队列解决增量数据完整性问题,以及状态机的计算能力实现实时状态一致,实现了动态分库的目标。文章还讨论了分库后的工作,包括上游和下游系统的处理方式。最后,文章提出了一个思考题,讨论了在分布式环境下协调者出现异常情况时可能引发的问题。整体而言,本文通过详细的分库方法和架构设计目标,为读者提供了一种在运行时进行数据系统动态分库的解决方案。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《分布式金融架构课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(3)

  • 最新
  • 精选
  • tt
    集群A接收并执行分库命令的结果是改变集群 A 能处理的消息类别,也就是改变集群 A 的内部配置。从此以后集群 A 将不能再处理今后属于集群 B 处理的事情。 这个改变内部配置的操作是幂等的,收到多次这样的指令,只要和自己内部维护的状态比较一下,如果已经处于这样的状态,跳过应该就行了。
    2021-02-07
    3
  • 悠然。
    可以分两种情况来分析 1. 假设集群 A 在收到开始分库的消息之后,所执行的改变内部配置操作是幂等的,此时两次操作对集群A和集群B来说,两次操作后所能处理的事件还是一样的,不会影响正确性 2. 假设集群 A 在收到开始分库的消息之后,所执行的改变内部配置操作不是幂等的,此时两次操作之后集群A和集群B所能处理的事件不一样了。 a. 对集群A来说,在第一次处理分库消息和第二次处理分库消息之间的消息,集群A可以正常处理,在第二次收到分库消息之后的消息,可能会被重定向到B b. 对集群B来说,在第一次处理分库消息和第二次处理分库消息之间的消息,可能会存在正常集群B收到的消息和集群A在处理完第二次分库消息之后重定向过来的消息,此时集群B正常收到的消息可以正常处理,但是集群A重定向过来的消息会被再次重定向回集群A(集群A由于也无法处理,还是会被重定向回B)。在第二次收到分库消息之后的消息,集群B可以正常处理被集群A重定过来的消息,同时集群B原本收到的消息可能会被重定向到集群A 综上分析,在两次分库消息幂等的情况下,一定可以保定正确性;在两次分库消息非幂等的情况下,消息可能会被多重定向几次,但是在集群B也处理完第二次分库消息之后,消息可以被正确处理,此时也可以保证正确性
    2021-02-22
  • webmin
    集群A在处理命令时有幂等性机制来保证,所以不会影响分库过程的正确性。
    2021-02-05
收起评论
显示
设置
留言
3
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部