今天,我戰勝了 李易峰......帶來的流量
07-11
今天,我戰勝了 李易峰......帶來的流量
推薦閱讀:
來自專欄從零開始寫Python爬蟲
快兩個星期沒有寫文章了
主要一直都在做一個小程序:「扇貝每日一句」每天都會推出一條 名句(中文/英文)
然後大家可以在提交下面自己的翻譯排名高的還有獎品可以拿喲
關於流量
今天我們和「李易峰」合作
效果大概是這樣的:
看上去是不是還不錯?
問題是李易峰帶來的流量非常巨大怎麼形容好呢?
今天新增了xW+個用戶
api的訪問量翻了好幾倍!
說實話
看到監控里的請求數不停的上漲我心裡其實是很慌的好在,最後,我撐住了
我是怎麼撐住的?
先來看看流量的情況
可以看到請求曲線非常的陡峭!
一天之內,流量翻了很多倍
那麼我是怎麼撐住的?
其實非常簡單,核心有四點:
- 加cache
- 加機器
- 隔離快/慢的請求
- task
先來看一下後端pod的分布
如果有對扇貝技術棧感興趣的小夥伴
可以看一下這篇文章
Michael Ding:Gitlab CI 與 DevOps
加cache
cache是所有後端開發同學都需要面對的東西
讓一個請求不走資料庫(慢io)而是走cache(memery,redis)就能大大減少請求的時間了加機器(pod)
可以看到每種服務:
(api、slow、celery)都有很多個Replicas
這些pod 在envoy的負載均衡下
動態處理打進來的請求機器的數量越多,能夠負載的並發量也就越高快慢分離
可以看到,同樣是api
我卻分了兩種不同的pod
- api
- api-slow
這是因為 api的請求只需要在內網進行操作(讀寫cache,讀寫資料庫)
而api-slow 則是參雜著一些外網的io
比如和微信的交互(拿用戶的openid之類的)
非同步任務
非同步任務,也就是task,
都用了 celery 來做這樣可以將一些不需要及時返回的數據用非同步的方式去操作,可以大大加速請求的響應時間
如果有對非同步任務感興趣的小夥伴
可以看看這篇文章
kindJeff:任務與消息隊列
最終的結果?
百分之99的請求
都穩定在100毫秒以內返回
以目前我的能力來說
這已經是能做到的極限拉!推薦閱讀: