存储
一般用 mysql。数据量达到两千万以上的考虑分库分表。
高并发场景,考虑加入缓存。
缓存
使用缓存时,要注意:
https://blog.csdn.net/sinat_32502451/article/details/139545057
逻辑执行失败,如何处理?
-
补偿
当业务逻辑执行失败时,可以做一些补偿处理。
建一个任务表,当任务失败时,写入到任务表中。通过定时任务,扫描任务表,对逻辑进行补偿。
多次自动补偿,仍失败的,考虑人工补偿。 -
重试
根据业务,设置重试的次数、重试的时间间隔。
常见的重试策略:
- 立即重试:客户端立即重新发送请求。
- 固定间隔:在失败和重试之间等待固定长的时间。
- 递增间隔:客户端在第一次重试时等待较短时间,后面每一次重试时则逐渐增加等待时长。
- 指数退避(Exponential Backoff):在每次重试失败之后增加重试之间的等待时间。例如,当一个请求第一次失败时,我们在1秒之后重试;如果它第二次也失败了,在重试之前我们等待2秒;如果它第三次仍然失败,我们在重试之前等待4秒。
- 取消:客户端可以取消请求。这是当请求总是失败或者重试不太可能成功时的常见操作。
系统之间的对接方式/通信方式
- 同步通信:客户端发送请求,然后等待服务器的响应,将连接保持为打开的状态,直到知道结果。HTTP就是这样工作的。
- 异步通信:客户端不等待服务器的响应,一旦发送了请求,连接就关闭了。当请求被处理后,结果被返回给客户端,这通常是通过一个网络钩子(Webhook)来实现的。Webhook,也称为网络回调,是一个应用/服务提供实时更新给其他应用/服务的方式。
常见的异步通信:消息队列MQ、接口回调。
接口回调
详情见: https://blog.csdn.net/sinat_32502451/article/details/139859380
标签:请求,常见,系统,重试,补偿,失败,设计,等待,客户端 From: https://www.cnblogs.com/expiator/p/18294892