(转) 并发处理
1、使用事物
2、使用消息隊列
可以基于例如MemcacheQ等這樣的消息隊列。
比如有100張票可供用戶搶,那么就可以把這100張票放到緩存中,讀寫時不要加鎖。 當并發量大的時候,可能有500人左右搶票成功,這樣對于500后面的請求可以直接轉到活動結束的靜態頁面。進去的500個人中有400個人是不可能獲得商品的。所以可以根據進入隊列的先后順序只能前100個人購買成功。后面400個人就直接轉到活動結束頁面。當然進去500個人只是舉個例子,至于多少可以自己調整。而活動結束頁面一定要用靜態頁面,不要用數據庫。這樣就減輕了數據庫的壓力。
(非原創)
1. 盡量將請求攔截在系統上游:
2. 讀多寫少,多使用緩存
??瀏覽器和app:做限速,限制用戶在X秒之內只能提交一次請求(比如雖然你在瘋狂的搖微信,但其實x秒后才向后端發起一次請求)
??站點層:按照uid做限速,做頁面緩存,這時用uid,一個uid5秒只準透過一個請求。這樣就能攔住99%的for循環請求。
??服務層:按照業務做寫請求隊列控制流量(每個提供服務的服務器各一個隊列)(每次只透有限的寫請求去數據層,如下訂單,做支付這樣的寫業務)。3k張火車票,只透3k個下單去db
??數據層:這時已經沒有多少壓力了。全部透到數據庫,100w個下單,0個成功,請求有效率是0%;透3k個請求到數據,全部成功,請求有效率100%
?
轉載于:https://www.cnblogs.com/ilys/p/7813545.html
總結
- 上一篇: png转iconfont_IconFon
- 下一篇: 手机怎么将图片转换成word文档