分布式金融架构课
任杰
eBay 支付账务系统负责人,前蚂蚁金服架构师
2425 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
推荐试读
换一换
02 | 原理解读:如何理解第三方支付的业务逻辑和系统组件?
13 | 正确性分级(中):多机无容灾有哪几种不同的一致性实现?
15 | 分布式正确性的存在性(上):什么情况下不存在分布式共识算法?
课程目录
已完结/共 30 讲
开篇词 (1讲)
开篇词 | 如何成为金融级人才?
金融业务与系统 (6讲)
01 | 业务初探:扫了二维码之后发生了什么?
02 | 原理解读:如何理解第三方支付的业务逻辑和系统组件?
03 | 产品大观:不同金融业务都有哪些技术实现要点?
04 | 领域驱动设计(上):如何设计金融软件顶层架构?
05 | 领域驱动设计(下):如何设计统一的金融业务模型?
答疑集锦(一) | 思考题解析与外汇架构知识拓展
系统正确性保障 (7讲)
06 | 计算输入的正确性:怎么选择正确时间的数据?
07 | 计算过程的正确性:如何设计正确的数据处理架构?
08 | 计算结果的正确性:怎么保证计算结果是正确的?
09 | 数据传输的质量:金融业务对数据传输有什么要求?
10 | 数据存储的合理性:金融业务可以不用关系型数据库吗?
11 | 系统优化:如何让金融系统运行得更快?
答疑集锦(二) | 思考题解析与账务系统优化
分布式正确性及高可用 (11讲)
12 | 正确性分级(上):单机无备份有哪几种不同的一致性?
13 | 正确性分级(中):多机无容灾有哪几种不同的一致性实现?
14 | 正确性分级(下):多机有容灾有哪几种不同的一致性?
15 | 分布式正确性的存在性(上):什么情况下不存在分布式共识算法?
16 | 分布式一致性(下):怎么理解最简单的分布式一致性算法?
17 | 正确性案例(上):如何实现分布式的事件溯源架构?
18 | 正确性案例(中):常见分布式数据方案的设计原理是什么?
19 | 正确性案例(下):如何在运行时进行数据系统的动态分库?
20 | 容灾(上)如何实现正确的跨机房实时容灾?
21 | 容灾(下):如何通过混沌工程提高系统稳定性?
答疑集锦(三) | 思考题解析与数据库底层实现
春节策划 (3讲)
春节策划第1期 | 分布式金融系统知识,你掌握了多少?
春节策划第2期 | 读书如抽丝,为你推荐一些我读过的好书
春节策划第3期 | 如何运用架构知识解读春运买票和手游案例?
结束语 (2讲)
结束语 | 金融之道,与你同行,虽远尤欣
结课测试|这些金融架构的问题,你都掌握了么?
分布式金融架构课
15
15
1.0x
00:00/00:00
登录|注册

08 | 计算结果的正确性:怎么保证计算结果是正确的?

你好,我是任杰。这一讲我想和你聊一聊怎么保证计算结果的正确性。
在前面几节课里我们学习了如何保证数据输入的正确性,如何用事件溯源的架构来保证数据计算的正确性。但这只能保证一个组件是正确的。系统里还有很多其他组件,我们也需要保证它们的交互也是正确的,这就需要一个系统性的指导方案。所以,这节课我们一起来看看如何保证最终计算结果正确性。
从抽象的角度来讲,任何一个计算过程都分为三个步骤:收到请求、处理请求和输出结果,也就是分为事前、事中和事后三个步骤。接下来,我们就从这三个方面逐一分析,看看如何系统性地保证最终结果的正确性。

事前

如果计算的输入错了,计算的结果就很难正确。输入不正确有两种可能性。一种是单个数据内容不正确,另一种是多个数据之间的顺序关系不正确。接下来我们就看看怎么解决这两方面的问题。

内容正确性

在这里我们可以假设,系统组件之间的信息交流方式是上游系统负责将数据传输给下游系统。所以上游系统需要保证数据内容的正确性。
我们在第 6 节课提到过,在数据可以被修改的情况下,我们很难保证所有人都能使用正确的数据。所以金融公司需要用双时序数据库来保证我们能查询到正确时间的数据。
我还想提醒你,尽管你找到了正确时间的数据,但数据本身还是有可能会出问题,比如在读取的时侯出现部分数据丢失,或者在传输的过程中出现了数据损坏。这时候我们需要给数据增加完整性校验的功能,比如在存储的时侯增加 HMAC 验证,这些也都是常规操作。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/1000字
划线
笔记
复制
02 | 原理解读:如何理解第三方支付的业务逻辑和系统组件?
13 | 正确性分级(中):多机无容灾有哪几种不同的一致性实现?
15 | 分布式正确性的存在性(上):什么情况下不存在分布式共识算法?
17 | 正确性案例(上):如何实现分布式的事件溯源架构?
18 | 正确性案例(中):常见分布式数据方案的设计原理是什么?
21 | 容灾(下):如何通过混沌工程提高系统稳定性?
该试读文章来自付费专栏《分布式金融架构课》,如需阅读全部文章,
请订阅文章所属专栏新⼈⾸单¥59
立即订阅
登录 后留言

精选留言(7)

  • 楼下小黑哥
    1.消息id生成带有时间属性,让id 是自增,这样保证id 可以不重复。
    2.删除数据归档的时候,记录删除id 最后一个时间。如果后续id 时间在这这个范围之前,拒绝服务,防止错误
    2021-01-08
    1
    5
  • tt
    把ID里机上时间因子,这样就不会出现ID重复了吧。除非重复的事件10年以后再次出现。
    2021-01-08
    1
  • 小动物
    感觉做不到很完美。
    1.数据删除时能否留下去重用的字段,因为是有限的个别字段,数据量有限,空间会小一些。但这种只增不减的数据还是会判断空间有限的问题。
    2.唯一ID是否可控,若可控,可带上一些规则,如时间、自增ID等。通过规则判断是否已经超过合理期限。但这个的可能性很低,因为ID是别人的,基本没法介入。
    3.消息中增加时间,业务发生时间。超过合理时间范围的数据不做处理。
    2021-01-08
    1
  • liupan
    顺序mq怎么保障性能哩?前面场景加顺序号与缓冲队列就是顺序mq了
    2021-08-23
  • Palmer
    老师,现在很多MQ都能做到文中数据库+数据库的效果,比如Kafka提供增长id、消息去重等,那是否只需要在生产消费端保证有且仅有一次消息呢?
    2021-04-29
  • 牛粪汤
    计算精度的准确性,都有哪些解决方案
    2021-01-12
  • Geek_ea1777
    id和交易时间挂钩,超出时间范围的id不处理
    2021-01-08
收起评论
7
返回
顶部