原则:
1. 尽量将请求拦截在系统上游:
2. 读多写少,多使用缓存
• 浏览器和app:做限速,限制用户在X秒之内只能提交一次请求(比如虽然你在疯狂的摇微信,但其实x秒后才向后端发起一次请求)
• 站点层:按照uid做限速,做页面缓存,这时用uid,一个uid5秒只准透过一个请求。这样就能拦住99%的for循环请求。
• 服务层:按照业务做写请求队列控制流量(每个提供服务的服务器各一个队列)(每次只透有限的写请求去数据层,如下订单,做支付这样的写业务)。3k张火车票,只透3k个下单去db
• 数据层:这时已经没有多少压力了。全部透到数据库,100w个下单,0个成功,请求有效率是0%;透3k个请求到数据,全部成功,请求有效率100%