• 急速上线 Serverless 钉钉机器人“防疫精灵”


    han1.jpg

    新型冠状病毒疫情肆虐的春节,大家都过得人心惶惶,作为被关在家的程序狗,总觉得要做点什么。于是阿里云 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 服务定时截图
    搭建:

    1. 使用文字组件,配置数据源(业务逻辑编排接口,类似上文搭建方式,不赘述),使用过滤器选定展示字段
    2. 使用折线图组件,配置数据源、数据系列。
    3. 使用函数计算部署 puppeteer 截图任务,详见:Serverless 实战 —— 快速开发一个分布式 Puppeteer 网页截图服务

    架构梳理

    小结

      1. 好用的工具是绝对的生产力。 IoT Studio 拉近了想法和实现的距离,通过快速模板化,1 天搭建原型,1 天完成了 V1 版本。
      2. Serverless 为后端的高并发、高可用保驾护航。由于疫情的发展,“防疫精灵”的访问量很快就大幅度提升,而且是非常典型的访问量峰谷类业务。Serverless 的按量付费和急速弹性(百毫秒级别)省去了业务量增长而引入的架构升级的工作。此外函数计算的快速部署和低运维特性,也让开发迭代得更快,对系统的监控度感知更容易。
  • 相关阅读:
    滴滴 cubeui 教程
    继往开来的 sass 3 代编译器:ruby sass、nodesass、dartsass
    研究大佬用 Vue 写的倒计时组件,学到了不少东西
    狠人!标星 3.4 万的项目说删就删,几行代码搞崩数万个开源项目
    本人EE知识体系导航 Embedded menu
    PMP之思维――我的PMP备考之旅
    总有些瞬间,能温暖整个曾经
    不是一辈子的人,不说一辈子的话
    QImage对一般图像的处理
    从零开始系统深入学习android(已完成部分的目录带链接)
  • 原文地址:https://www.cnblogs.com/yunqishequ/p/12605427.html
Copyright © 2020-2023  润新知