急速上线 Serverless 钉钉机器人“防疫精灵”
新型冠狀病毒疫情肆虐的春節(jié),大家都過得人心惶惶,作為被關(guān)在家的程序狗,總覺得要做點(diǎn)什么。于是阿里云 IoT 事業(yè)部的幾個(gè)同學(xué)就開始了防疫精靈的開發(fā)之路。
從點(diǎn)子到防疫寶,只花了一個(gè)下午時(shí)間;從防疫寶到釘釘全域機(jī)器人防疫精靈,只花了 1.5 天時(shí)間完成開發(fā),3 天灰度、全量,發(fā)布 1 天半就突破 1 萬個(gè)群添加使用,即插即用,疫情實(shí)況、常見問題、健康打卡全都有:
如此緊急,toC海量客戶,如何快速開發(fā)又不失穩(wěn)定、安全呢?
快速搭建
天下武功唯快不破,怎么快?靠工具!
IoT Studio是阿里云 IoT 向物聯(lián)網(wǎng)開發(fā)者提供的應(yīng)用開發(fā)工具,包括了可視化、邏輯編排、數(shù)據(jù)分析三大能力。該工具開發(fā)的應(yīng)用實(shí)例運(yùn)行于阿里云函數(shù)計(jì)算(FunctionCompute 簡(jiǎn)稱 FC)之上,應(yīng)用 serverless 化,以達(dá)到按量伸縮和免運(yùn)維的效果。
機(jī)器人添加
原理:釘釘全域機(jī)器人添加/刪除/更新時(shí),會(huì)自動(dòng)推送HTTP事件
搭建:
1.使用HTTP流來提供釘釘事件回調(diào)
2.使用路徑選擇節(jié)點(diǎn),根據(jù)事件類型分流到對(duì)應(yīng)的處理邏輯
3.使用 Node 腳本進(jìn)行數(shù)據(jù)預(yù)處理,包括數(shù)據(jù)格式、敏感字段脫敏或加簽等
4.存入數(shù)據(jù)庫(kù)
聊天消息通路
原理:基本同上,at機(jī)器人的消息將發(fā)送到回調(diào)接口,轉(zhuǎn)發(fā) NLP 接口
搭建:
1.使用 HTTP 流來提供釘釘消息回調(diào)
2.使用 Node 腳本節(jié)點(diǎn)(此處可用 API 請(qǐng)求節(jié)點(diǎn),但因?yàn)榉€(wěn)定性要求改用 Node 腳本來,詳見下文優(yōu)化部分)
批量群推送
原理:每天 9 時(shí)、17 時(shí)定時(shí)推送最新疫情實(shí)況和打卡、咨詢快捷鏈接
搭建:
// 觸發(fā)
1.使用定時(shí)節(jié)點(diǎn),設(shè)置每日觸發(fā)
2.使用項(xiàng)目?jī)?nèi)API節(jié)點(diǎn),調(diào)用同項(xiàng)目?jī)?nèi)的批量發(fā)送服務(wù)
// 發(fā)送
3.使用 HTTP 節(jié)點(diǎn)搭建發(fā)送入口
4.使用 Node.js 腳本節(jié)點(diǎn)拼裝消息發(fā)送的內(nèi)容
5.使用 Node.js 腳本節(jié)點(diǎn)查詢數(shù)據(jù)庫(kù)的webhook信息并解簽(此處后續(xù)會(huì)優(yōu)化數(shù)據(jù)庫(kù)節(jié)點(diǎn),無需寫腳本)
6.使用 Node.js 腳本節(jié)點(diǎn),批量發(fā)送消息給釘釘?shù)?OpenAPI 接口(此處是關(guān)鍵點(diǎn),容量評(píng)估、并發(fā)、流控、異常處理都在此處)
疫情可視化
原理:使用可視化工具,利用庫(kù)中的疫情數(shù)據(jù),展示實(shí)況、趨勢(shì)圖,借助函數(shù)計(jì)算部署 puppeteer 服務(wù)定時(shí)截圖
搭建:
架構(gòu)梳理
小結(jié)
“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的技術(shù)圈。”
總結(jié)
以上是生活随笔為你收集整理的急速上线 Serverless 钉钉机器人“防疫精灵”的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里巴巴如何改善开发人员在 K8s 上的
- 下一篇: K8s 1.18 正式 release