首先是流程设计
流程图来帮助大家了解业务逻辑
系统调用
多个系统的交互,肯定会涉及到同步调用,异步调用
同步调用
重试机制如何选择,比如幂等设计,哪些code 需要重试
分布式事务
可以自研一个TCC二阶段的事务,或者利用定时任务来做补偿型事务,定时的回调各个系统来回收资源
幂等
幂等的key是外部系统选择的,但有时候内部设计会根据 key做一些路由,主要可能是 分库分表,根据key选择分库路由字段,这个时候幂等的设计就需要思考,因为幂等key都是外界生成的,有两种方式:
- 提供路由字段让外界去指定
比如前一次的查询的时候就提供key出去,让上游根据这个key 做幂等key后面拼接 - 根据幂等key做路由
这种不能保证一定是均衡的
事务
事务特性在交易环节是一个必要设计,事务可以存一个快照,快照事务数据用来做资源归还
异步调用
消息解耦 经典
一致性
异步调用、消息解耦 、多存储系统 设计过程中一致性就是经典问题,永远不知道下游到底是不是拿到数据了, 这个就是系统需要考虑的,滚雪球般的数据不一致,问题有了,方法呢?
● 对账监控发现问题
毕竟你不确定是业务逻辑问题、还是超时等情况
● 兜底任务
用定时任务来做增量、全量的数据推送,刷缓存、发起推送。