DoorDash 经典考题:https://leetcode.com/discuss/interview-question/318214/DoorDash-Onsite-System-Design-question
是不是 “电影订票系统+ 券商系统” 最接近这个? 对于donation system 有没有啥需要特殊考虑的地方?
DoorDash 经典考题:https://leetcode.com/discuss/interview-question/318214/DoorDash-Onsite-System-Design-question
是不是 “电影订票系统+ 券商系统” 最接近这个? 对于donation system 有没有啥需要特殊考虑的地方?
donation system 是个高一致性系统,接近电影订票系统跟券商系统。它的一致性要求跟电影订票系统接近,但是会更简单一些,不需要关心递送票的这个步骤,算是个简化版吧。主要需要考虑的就是考虑容灾,如果某一部分宕机,怎么修复,这些课上的内容都讲得很细了。
请问在电影购票系统中,我能够把需要的 transaction 先写到 message queue 里,然后 用一些 workers 去queue 里取, workers 负责第三方支付,这种设计方案可以么? 如果可以用message queue 还能用2PC么?
这个 worker 负责支付的话,谁来负责更新内部的票相关的数据库呢?2PC 是 sync protocol,而这里的 message queue 是 async 的,不能混用。
假如我现在只考虑一个payments 系统。 能否把transaction 写到queue 里, 然后worker 去取, worker 负责和第三方支付talk?
并且通过Saga 来保证consistency. 那在这里Saga 的 T1 是不是就是 “把transaction 写入queue”, C1 是 “从queue 撤销transaction”. T2 是 worker 从queue 里 取出 tansaction,
C2 是 worker 撤销 拿出的 tansaction. pivot 就是worker 把 transaction 发到第三方支付PSP?
看起来这个 payment 系统唯一需要做的就是做第三方支付,而不需要做任何内部的记录。这样说来,不需要 Transaction,也不需要 2PC 或者 Saga。
1,在这样的payment 系统中有没有可能产生double pay 的问题,应该用哪些方式可以避免?
2.假如第三方PSP outage, 还想继续让用户donation 应该如何做到?