File tree 1 file changed +7
-6
lines changed
1 file changed +7
-6
lines changed Original file line number Diff line number Diff line change 13
13
14
14
这样其实就可以过滤掉大部分普通用户。
15
15
16
- 但是防不住直接抓包循环调用。这种情况可以最简单的处理:在` Web层 ` 通过限制一个UID 五秒之类的请求服务层的次数。
16
+ 但是防不住直接抓包循环调用。这种情况可以最简单的处理:在` Web层 ` 通过限制一个 UID 五秒之类的请求服务层的次数(可利用 Redis 实现) 。
17
17
18
- 但如果是真的有 10W 个不同的 UID来请求 ,比如黑客抓肉鸡的方式。
18
+ 但如果是真的有 10W 个不同的 UID 来请求 ,比如黑客抓肉鸡的方式。
19
19
20
- 这种情况可以在` 服务层 ` 针对于写请求使用请求队列,再通过限流算法每秒钟放一部分请求到队列 。
20
+ 这种情况可以在` 服务层 ` 针对于写请求使用请求队列,再通过限流算法( [ 限流算法 ] ( https://github.com/crossoverJie/Java-Interview/blob/master/MD/Limiting.md ) )每秒钟放一部分请求到队列 。
21
21
22
22
对于读请求则尽量使用缓存,可以提前将数据准备好,不管是 ` Redis ` 还是其他缓存中间件效率都是非常高的。
23
23
24
- > ps : 刷新缓存情况,比如库存扣除成功这种情况不用马上刷新缓存,如果库存扣到了0再刷新缓存。因为大多数用户都只关心是否有货,并不关心现在还剩余多少。
24
+ > ps : 刷新缓存情况,比如库存扣除成功这种情况不用马上刷新缓存,如果库存扣到了 0 再刷新缓存。因为大多数用户都只关心是否有货,并不关心现在还剩余多少。
25
+
26
+ ## 总结
25
27
26
- 总结:
27
28
- 如果流量巨大,导致各个层的压力都很大可以适当的加机器横向扩容。如果加不了机器那就只有放弃流量直接返回失败。快速失败非常重要,至少可以保证系统的可用性。
28
29
- 业务分批执行:对于下单、付款等操作可以异步执行提高吞吐率。
29
- - 最根本的就是尽量少的请求直接访问到 ` DB ` 。
30
+ - 主要目的就是尽量少的请求直接访问到 ` DB ` 。
You can’t perform that action at this time.
0 commit comments