5 实现结构化日志记录
将日志存储在集中地方,并使它们易于搜索。
指标提供了系统行为的高级概述,而日志记录允许我们了解单个 Web 请求或后台作业内部发生的事情。...在分布式系统中,传递某种关联标识符很有用。一个假设的例子是当买家在结账时启动支付,关联_id 由我们的 Rails 控制器生成。
6 使用幂等键
确保支付或退款只发生一次,尽管偶尔会出现小故障。...在 Shopify 的规模下,每一百万次不可靠的支付处理机会意味着它每天发生很多次。如果这是超时的支付 API 调用,他们希望重试请求,但要安全地进行重试。...7 与调节保持一致
在数据库中存储与 Shopify 的金融合作伙伴的调节中断。
通过调节,他们确保自己的记录与金融合作伙伴的记录一致。...他们调节单个记录,如费用或退款,以及尚未支付给商户的当前余额等汇总记录。
8 结合负载测试
如果传入工作的数量足够大,他们的服务器甚至会耗尽内存来存储队列上的工作并崩溃。