急速上線 Serverless 釘釘機器人「防疫精靈」

新型冠狀病毒疫情肆虐的春節,你們都過得人心惶惶,做爲被關在家的程序狗,總以爲要作點什麼。因而阿里雲 IoT 事業部的幾個同窗就開始了防疫精靈的開發之路。web

從點子到防疫寶,只花了一個下午時間;從防疫寶到釘釘全域機器人防疫精靈,只花了 1.5 天時間完成開發,3 天灰度、全量,發佈 1 天半就突破 1 萬個羣添加使用,即插即用,疫情實況、常見問題、健康打卡全都有:數據庫

如此緊急,toC海量客戶,如何快速開發又不失穩定、安全呢?後端

快速搭建

天下武功惟快不破,怎麼快?靠工具! IoT Studio是阿里雲 IoT 向物聯網開發者提供的應用開發工具,包括了可視化、邏輯編排、數據分析三大能力。該工具開發的應用實例運行於阿里雲函數計算(FunctionCompute 簡稱 FC)之上,應用 serverless 化,以達到按量伸縮和免運維的效果。安全

機器人添加

原理:釘釘全域機器人添加/刪除/更新時,會自動推送HTTP事件 搭建:架構

1.使用HTTP流來提供釘釘事件回調 2.使用路徑選擇節點,根據事件類型分流到對應的處理邏輯 3.使用 Node 腳本進行數據預處理,包括數據格式、敏感字段脫敏或加簽等 4.存入數據庫併發

聊天消息通路

原理:基本同上,at機器人的消息將發送到回調接口,轉發 NLP 接口 搭建: 1.使用 HTTP 流來提供釘釘消息回調 2.使用 Node 腳本節點(此處可用 API 請求節點,但由於穩定性要求改用 Node 腳原本,詳見下文優化部分)less

批量羣推送

原理:天天 9 時、17 時定時推送最新疫情實況和打卡、諮詢快捷連接 搭建: // 觸發 1.使用定時節點,設置每日觸發 2.使用項目內API節點,調用同項目內的批量發送服務運維

// 發送 3.使用 HTTP 節點搭建發送入口 4.使用 Node.js 腳本節點拼裝消息發送的內容 5.使用 Node.js 腳本節點查詢數據庫的webhook信息並解籤(此處後續會優化數據庫節點,無需寫腳本) 6.使用 Node.js 腳本節點,批量發送消息給釘釘的 OpenAPI 接口(此處是關鍵點,容量評估、併發、流控、異常處理都在此處)分佈式

疫情可視化

原理:使用可視化工具,利用庫中的疫情數據,展現實況、趨勢圖,藉助函數計算部署 puppeteer 服務定時截圖 搭建:函數

  1. 使用文字組件,配置數據源(業務邏輯編排接口,相似上文搭建方式,不贅述),使用過濾器選定展現字段
  2. 使用折線圖組件,配置數據源、數據系列。
  3. 使用函數計算部署 puppeteer 截圖任務,詳見:Serverless 實戰 —— 快速開發一個分佈式 Puppeteer 網頁截圖服務

架構梳理

小結

  1. 好用的工具是絕對的生產力。 IoT Studio 拉近了想法和實現的距離,經過快速模板化,1 天搭建原型,1 天完成了 V1 版本。
  2. Serverless 爲後端的高併發、高可用保駕護航。因爲疫情的發展,「防疫精靈」的訪問量很快就大幅度提高,並且是很是典型的訪問量峯穀類業務。Serverless 的按量付費和急速彈性(百毫秒級別)省去了業務量增加而引入的架構升級的工做。此外函數計算的快速部署和低運維特性,也讓開發迭代得更快,對系統的監控度感知更容易。

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」

相關文章
相關標籤/搜索