[票务系统] Ledger在系统中的位置


为什么ledger 安放在ticketing service之后而不是payment executor service之后呢?我觉得应该是后者,有了payment order做记账

这里的 Payment Executor 在我的设想里是单纯和外部服务做交互的服务,没有特别多的服务逻辑。这样每个的服务的责任比较明确。在这个情况下,Ledgar 需要记一笔进账,一笔出账的话,就不是 Payment Executor 可以做的了。
如果在你的设计里,Payment Executor 包含更多的服务逻辑,也可以把 Ledgar 放一起。

问个相关问题,
还是不太理解transaction table和ledger table的具体区别
课上有提到金融或者银行系统需要每日对账,ledger table可以用在这个场景。
transaction table一般是用在什么场景?
两个table所存的信息有哪些不一样?查询方式不一样么?哪一个是source of truth?如果很多信息一样的话,算是一种denormalization吗?
而且brokerage system design high level diagram只有ledger table.

使用场景不一样。Transaction Table 是在我们进行每笔交易的时候不断更新状态的表。Ledger 是记录每一笔进账出账的 immutable 的表(append-only)。内容相关但不是简单的重复。使用场景不一样,两张表都是 source -of-truth。Transaction Table 是我们系统处理 online request 的时候用的,Ledger 更多是留一笔账本,offline processing 用。

1赞