新型冠状病毒疫情肆虐的春节,你们都过得人心惶惶,做为被关在家的程序狗,总以为要作点什么。因而阿里云 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 服务定时截图 搭建:函数
“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术领域、聚焦云原生流行技术趋势、云原生大规模的落地实践,作最懂云原生开发者的技术圈。”