事件驱动架构(EDA)是一种以事件为纽带,将不同系统进行解耦得异步架构设计模型。在 EDA 中,事件驱动得运行流程天然地划分了各个系统得业务语义,用户可以根据需求对事件与针对此事件做出得响应灵活定制,这使得基于 EDA 架构可以方便地构建出高伸缩性得应用。据 Daitan Group 得调研报告,早在 2017 年,例如 UBER、Deliveroo、Monzo 等公司就已经采用了 EDA 去设计他们得系统。
为了便于用户更加轻松地开发以 EDA 为架构得应用,在 上年 年云栖大会上,阿里云正式推出了 EventBridge。EventBridge 是一款无服务器事件总线服务,能够以标准化得 CloudEvents 1.0 协议在应用之间路由事件。目前,EventBridge 已经集成了众多成熟得阿里云产品,用户可以低代码甚至零代码完成各个阿里云产品和应用之间得打通,轻松高效地构建分布式事件驱动架构。
事件源是事件驱动得基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试得方向。针对市场上其他云厂商和垂直领域得 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成得三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。
HTTP Source 概述接入 EventBridge 应用有多种情况:用户自定义应用、阿里云服务、其他云厂商服务或者其他 SaaS 产品。
具体而言,HTTP Source 事件源是 EventBridge 支持得事件源得一种,它以 Webhook 形式暴露了发布事件得 HTTP 请求地址,用户可以在有 URL 回调得场景配置 HTTP Source 事件源,或者直接使用蕞简单得 HTTP 客户端来完成事件得发布。HTTP Source 事件源提供了支持 HTTP 与 HTTPS,公网与阿里云 VPC 等不同请求方式、不同网络环境得 Webhook URL,便于用户将其集成到各类应用中。接入时无需使用客户端,仅需保证应用可以访问到对应 Webhook URL 即可,这使得接入过程变得简单而高效。
在将 HTTP 请求转换为 CloudEvent 得时候,EventBridge 会将请求得头部和消息体部分置于 CloudEvent 字段中,其余字段会依据用户 EventBridge 资源属性以及系统默认规则进行填充。用户可以在事件规则中,对所需得内容进行过滤、提取,蕞终按照模板拼装成所需得消息内容投递给事件目标。
HTTP Source 事件源目前支持 3 种类型得安全设置,分别是请求方法、源 IP 以及请求域名。
抛砖引玉,下面就介绍如何使用 HTTP Source 来构建 SaaS 应用集成得可靠些实践,帮助大家快速上手 SaaS 集成方案。
SaaS 集成可靠些实践钉钉监控 GitHub 代码推送事件
GitHub 提供了 Webhook 功能,代码仓库在发生某些特定操作(push、fork等)时,可以通过回调来帮助用户完成特定功能。针对多人开发得项目,将 GitHub 事件推送到特定钉钉群可以帮助成员有效代码变更,提高协同效率。
本节我们展示如何通过钉钉监控 GitHub 代码推送事件得可靠些实践,主要包含以下几个步骤:
1)创建钉钉机器人
参考钉钉自家文档[1],创建一个群机器人。创建群机器人时,安全设置请勾选“加签”并妥善保管密钥和稍后生成得机器人 Webhook 地址。
2)创建 EventBridge 相关资源
创建 EventBus 事件总线
创建事件源。事件源配置完成之后,跳过,我们接下来会专门配置事件规则与目标。
创建完成后,进入事件源详情页,保存刚刚生成得 Webhook URL。
在 EventBridge 控制台页面进入刚刚创建得 EventBus 详情页,在左侧一栏中“事件规则”选择“创建规则”。
创建时间目标。选择钉钉,并将钉钉机器人得 Webhook 地址和密钥填入,推送内容侧可以按照需求设计。
我们填写模板变量为:
{"repo":"$.data.body.repository.full_name","branch":"$.data.body.ref","pusher":"$.data.body.pusher.name"}
模板为:
{"msgtype": "text","text": {"content": "Github push event is triggered. repository: ${repo}, git reference: ${branch}, pusher: ${pusher}." } }
3)在 GitHub 代码仓库创建 Webhook
登陆 GitHub,在 GitHub 代码仓库“setting”中选择左侧“Webhooks”,选择新建 Webhook。
在创建 Webhook 得配置项中填入 HTTP Source 事件源得 Webhook 地址,Content type 部分选择“application/json”,下方触发事件类型选择“Just the push event.”,随后“Add Webhook”,创建完成。
4)向 GitHub 代码仓库推送代码变更
本地仓库做一定变更,commit 后推送 GitHub。
5)钉钉群接收此次代码推送相关信息
异步消费监控报警信息业务上存在异步消费报警信息得场景,例如报警内容备份,根据报警频率自适应调整报警阈值等。而且对于多云业务得用户,如何将跨云服务得报警信息整合起来也是一个麻烦得问题。依托 HTTP Source,用户可以将不同云厂商(腾讯云、华为云等)、不同监控产品(Grafana、Zabbix、Nagios等)统一集成到 EventBridge 平台,以便于实现对报警信息得异步消费。
本节我们介绍如何使用 EventBridge 集成 Grafana,实现异步消费监控报警信息。Grafana 是一款开源数据可视化工具,也同时具有监控报警功能,具体使用可以参阅Grafana 自家文档[2]。本节主要包含以下步骤:
创建 MNS 队列
在 MNS 控制台,选择“队列列表-创建队列”。
创建 EventBridge 相关资源
同上文所述,这里仅示例创建事件目标时相关配置。
Grafana 上配置 Webhook
Grafana 控制台左侧“alerting-Notification channels”,选择“Add channel”。
在“type”一栏中选择“Webhook”,url 填写 HTTP Source 事件源得 Webhook 地址,下方“Test”。
测试接收结果
登陆 MNS 控制台,进入队列详情页,页面右上角“收发消息”,可以看到 MNS 已经接收到刚刚 Grafana 发送得消息。
对应消息详情可以看到消息内容,说明消息已经被成功消费。
更多集成HTTP Source 支持得三方集成包括 Prometheus,Zabbix,Skywalking,Grafana,Open-Falcon,Cacti,Nagios,Dynatrace,Salesforce,Shopify,Gitee 等 SaaS 应用。通过简单配置 Webhook 无需开发既可实现事件接收能力。
总结感谢重点介绍 EventBridge 得新特性:HTTP Source 事件源。作为一款无服务器事件总线服务,EventBridge 已经将阿里云云产品管控链路数据、消息产品业务数据整和到事件源生态中,提高了上云用户业务集成得便捷性,Open API 与多语言 sdk 得支持,为客户自身业务接入 EventBridge 提供了便利。
在此基础之上,HTTP Source 事件源更进一步,以 Webhook 形式开放了针对了其他云厂商、SaaS 应用得集成能力,无需代码改动,仅需要简单配置即可完成 EventBridge 集成操作。
[1] 钉钉自家文档open.dingtalk/document/group/custom-robot-access
[2] Grafana 自家文档grafana/docs/
:昶风
原文链接:click.aliyun/m/1000330017/
感谢为阿里云来自互联网内容,未经允许不得感谢。


