发布重试要先考虑一致性而不是成功率
· 阅读需 2 分钟
很多内容系统都会遇到发布动作失败重试的问题,比如文章入库成功了,但缓存没刷、索引没建,用户看到的状态就不完整。这时候最直觉的做法是“再点一次发布”,但如果底层没有幂等设计,重试本身会把问题放大。
很多内容系统都会遇到发布动作失败重试的问题,比如文章入库成功了,但缓存没刷、索引没建,用户看到的状态就不完整。这时候最直觉的做法是“再点一次发布”,但如果底层没有幂等设计,重试本身会把问题放大。

Sequelize 开事务并不难,难的是控制事务作用域。很多项目一开始只是局部写入,后来为了复用逻辑,把 transaction 对象一层层往下传,结果一个简单发布动作能串起好几个服务函数,谁都可能在事务里顺手写点东西。
很多人提到事务,第一反应都是订单、库存、支付。但内容系统也会遇到并发问题,只是它通常没那么刺眼,等线上数据变脏了才会意识到早该补。
linux 下的一个指令 ln