今天,我戰勝了 李易峰......帶來的流量

今天,我戰勝了 李易峰......帶來的流量

來自專欄從零開始寫Python爬蟲

快兩個星期沒有寫文章了

主要一直都在做一個小程序:「扇貝每日一句

每天都會推出一條 名句(中文/英文)

然後大家可以在提交下面自己的翻譯

排名高的還有獎品可以拿喲

關於流量

今天我們和「李易峰」合作

效果大概是這樣的:

看上去是不是還不錯?

問題是李易峰帶來的流量非常巨大

怎麼形容好呢?

今天新增了xW+個用戶

api的訪問量翻了好幾倍

說實話

看到監控里的請求數不停的上漲

我心裡其實是很慌的

好在,最後,我撐住了

我是怎麼撐住的?

先來看看流量的情況

可以看到請求曲線非常的陡峭!

一天之內,流量翻了很多倍

那麼我是怎麼撐住的?

其實非常簡單,核心有四點:

  • 加cache
  • 加機器
  • 隔離快/慢的請求
  • task

先來看一下後端pod的分布

如果有對扇貝技術棧感興趣的小夥伴

可以看一下這篇文章

Michael Ding:Gitlab CI 與 DevOps?

zhuanlan.zhihu.com圖標

加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:任務與消息隊列?

zhuanlan.zhihu.com圖標

最終的結果?

百分之99的請求

都穩定在100毫秒以內返回

以目前我的能力來說

這已經是能做到的極限拉!


推薦閱讀:

TAG:李易峰演員 | 後端技術 |