docs: format document with prettier

全面整理项目内容,可读性更佳
This commit is contained in:
yanglbme
2020-09-24 09:54:38 +08:00
parent ffb727bbf2
commit dd2740751e
85 changed files with 1057 additions and 907 deletions

View File

@@ -1,4 +1,5 @@
## 面试题
分布式服务接口的幂等性如何设计(比如不能重复扣款)?
## 面试官心理分析
@@ -21,9 +22,9 @@
其实保证幂等性主要是三点:
* 对于每个请求必须有一个唯一的标识,举个栗子:订单支付请求,肯定得包含订单 id一个订单 id 最多支付一次,对吧。
* 每次处理完请求之后,必须有一个记录标识这个请求处理过了。常见的方案是在 mysql 中记录个状态啥的,比如支付之前记录一条这个订单的支付流水。
* 每次接收请求需要进行判断判断之前是否处理过。比如说如果有一个订单已经支付了就已经有了一条支付流水那么如果重复发送这个请求则此时先插入支付流水orderId 已经存在了,唯一键约束生效,报错插入不进去的。然后你就不用再扣款了。
- 对于每个请求必须有一个唯一的标识,举个栗子:订单支付请求,肯定得包含订单 id一个订单 id 最多支付一次,对吧。
- 每次处理完请求之后,必须有一个记录标识这个请求处理过了。常见的方案是在 mysql 中记录个状态啥的,比如支付之前记录一条这个订单的支付流水。
- 每次接收请求需要进行判断判断之前是否处理过。比如说如果有一个订单已经支付了就已经有了一条支付流水那么如果重复发送这个请求则此时先插入支付流水orderId 已经存在了,唯一键约束生效,报错插入不进去的。然后你就不用再扣款了。
实际运作过程中,你要结合自己的业务来,比如说利用 Redis用 orderId 作为唯一键。只有成功插入这个支付流水,才可以执行实际的支付扣款。