急速上线 Serverless 钉钉机器人“防疫精灵”
新型冠狀病毒疫情肆虐的春節,大家都過得人心惶惶,作為被關在家的程序狗,總覺得要做點什么。于是阿里云 IoT 事業部的幾個同學就開始了防疫精靈的開發之路。
從點子到防疫寶,只花了一個下午時間;從防疫寶到釘釘全域機器人防疫精靈,只花了 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 腳本來,詳見下文優化部分)
批量群推送
原理:每天 9 時、17 時定時推送最新疫情實況和打卡、咨詢快捷鏈接
搭建:
// 觸發
1.使用定時節點,設置每日觸發
2.使用項目內API節點,調用同項目內的批量發送服務
// 發送
3.使用 HTTP 節點搭建發送入口
4.使用 Node.js 腳本節點拼裝消息發送的內容
5.使用 Node.js 腳本節點查詢數據庫的webhook信息并解簽(此處后續會優化數據庫節點,無需寫腳本)
6.使用 Node.js 腳本節點,批量發送消息給釘釘的 OpenAPI 接口(此處是關鍵點,容量評估、并發、流控、異常處理都在此處)
疫情可視化
原理:使用可視化工具,利用庫中的疫情數據,展示實況、趨勢圖,借助函數計算部署 puppeteer 服務定時截圖
搭建:
架構梳理
小結
“阿里巴巴云原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術圈。”
總結
以上是生活随笔為你收集整理的急速上线 Serverless 钉钉机器人“防疫精灵”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴如何改善开发人员在 K8s 上的
- 下一篇: K8s 1.18 正式 release