常见的系统设计
存储
一般用 mysql。数据量达到两千万以上的考虑分库分表。
高并发场景,考虑加入缓存。
缓存
使用缓存时,要注意:
https://blog.csdn.net/sinat_32502451/article/details/139545057
逻辑执行失败,如何处理?
-
补偿
当业务逻辑执行失败时,可以做一些补偿处理。
建一个任务表,当任务失败时,写入到任务表中。通过定时任务,扫描任务表,对逻辑进行补偿。
多次自动补偿,仍失败的,考虑人工补偿。 -
重试
根据业务,设置重试的次数、重试的时间间隔。
常见的重试策略:
- 立即重试:客户端立即重新发送请求。
- 固定间隔:在失败和重试之间等待固定长的时间。
- 递增间隔:客户端在第一次重试时等待较短时间,后面每一次重试时则逐渐增加等待时长。
- 指数退避(Exponential Backoff):在每次重试失败之后增加重试之间的等待时间。例如,当一个请求第一次失败时,我们在1秒之后重试;如果它第二次也失败了,在重试之前我们等待2秒;如果它第三次仍然失败,我们在重试之前等待4秒。
- 取消:客户端可以取消请求。这是当请求总是失败或者重试不太可能成功时的常见操作。
重试的使用,详情见: https://blog.csdn.net/sinat_32502451/article/details/133774582
系统之间的对接方式/通信方式
- 同步通信:客户端发送请求,然后等待服务器的响应,将连接保持为打开的状态,直到知道结果。HTTP就是这样工作的。
- 异步通信:客户端不等待服务器的响应,一旦发送了请求,连接就关闭了。当请求被处理后,结果被返回给客户端,这通常是通过一个网络钩子(Webhook)来实现的。Webhook,也称为网络回调,是一个应用/服务提供实时更新给其他应用/服务的方式。
常见的异步通信:消息队列MQ、接口回调。
接口回调
详情见: https://blog.csdn.net/sinat_32502451/article/details/139859380
分类:
A1--系统设计与架构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2018-07-10 线程的状态与基本操作
2018-07-10 java多线程通信方式之一:wait/notify
2018-07-10 synchronized的简单理解