分散式架構推播,每分鐘10萬筆,直逼LINE API最大上限
身為一個程式人,將紙本中抽象需求一項一項化為可以互動和作用的實體,實有說不出的感動。內部進行大量測試確認沒問題後,便興沖沖走出新手村帥氣地上戰場。哎呀~當開始面對挑戰後,現實總是殘酷的。
正式上線後,第一個難關來了。明明設定好今天10點推播,為什麼等到11點多才推播完畢?測試時對 Team 內的人推播都很準時呀?
團隊內部進行 Log 分析後發現,一個容器發出請求處理推播的速度大約為1秒3筆,而推播名單約有1.5萬筆。1分鐘平均推180筆,一個小時也不過1萬。若推播對象有幾十萬筆,豈不是要等到地老天荒?
設定目標
簡單粗暴的解決方案:分散式處理
利用 Google Cloud Functions 無伺服器架構彈性拓展的特性,將發送訊息的程序分配到數十個容器至數百個容器上進行推播。在多個節點協力合作下,大量的推播請求便能在短時間內處理完畢,輕易地接近 Line 官方1分鐘1萬筆上限的門檻,LINE官方帳號1分鐘10萬筆的上限!
結論:
軟體設計上在處理大量資料/請求時,若主線程不需要取得子線程處理結果(單向處理),在資源及環境許可的狀況下,採用分散式處理的方式,可顯著地改善效能。
建構完整的無伺服器應用程式
Google Cloud 的無伺服器平台能讓您用自己的方式撰寫程式碼,不需要擔心基礎架構。將函式或應用程式部署為原始碼或容器。使用 Google Cloud 的儲存空間、資料庫、機器學習技術等服務,建構完整的無伺服器應用程式。透過來自 Google 或第三方服務整合功能的事件運算,輕鬆擴充應用程式。您甚至可以選擇移動您的無伺服器工作負載到內部部署環境或雲端。