举个栗子
一个用户注册了一个试用期的订阅,超过试用期未取消则需要收费,最多收X个月,且需要发送邮件告诉用户收费标准及随时取消订阅。
分析
业务不难,但必须确保业务流程具有容错性和可伸缩性
解决办法
1、定期轮询数据库,执行必要操作,更新状态
- 下游系统不可用时,变更状态频繁
- 产品收费失败
- 邮件失败
- 失败后重试时间过长
- 需要有逻辑来处理损坏的客户记录,以避免阻塞整个流程
- 数据库有性能和可伸缩性限制(最终需要分片),对于需要不断轮询的场景来说效率不高
2、排队系统(计时器+队列)有更新,则推送到队列中
- 计时器和队列见无事务,模型复杂
3、Temporal
- Temporal封装了整个业务逻辑,无第三方系统即可保证持久性及容错性