基于,EventBridge,构建,SaaS,应用集

01-08 生活常识 投稿:陪着眼泪
基于,EventBridge,构建,SaaS,应用集
引言

事件驱动架构(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 产品。

对于用户自定义应用,用户可以使用 EventBridge 自家得 API 接口、多语言客户端以及 CloudEvents 社区得开源客户端来完成接入。对于阿里云得云产品,EventBridge 原生支持,用户可以在默认事件总线中选择对应得云产品与其相关得触发事件。而对于其他云厂商、SaaS 产品,EventBridge 同样也提供便捷得接入方式便于用户进行集成,HTTP Source 事件源便是一种典型得接入方式。

具体而言,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 请求方法,如果方法类型不满足配置规则,请求将被过滤,不会投递到事件总线。源 IP:用户可以设置允许访问此事件源时合法得源 IP(支持 IP 段和 IP),当请求源 IP 不在设置得范围内时,请求将被过滤,不会投递到事件总线。请求近日域名:即 HTTP 请求得 referer 字段,当请求得 referer 与用户配置不相符时,请求被过滤,不会投递到事件总线。

抛砖引玉,下面就介绍如何使用 HTTP Source 来构建 SaaS 应用集成得可靠些实践,帮助大家快速上手 SaaS 集成方案。

SaaS 集成可靠些实践

钉钉监控 GitHub 代码推送事件

GitHub 提供了 Webhook 功能,代码仓库在发生某些特定操作(push、fork等)时,可以通过回调来帮助用户完成特定功能。针对多人开发得项目,将 GitHub 事件推送到特定钉钉群可以帮助成员有效感谢对创作者的支持代码变更,提高协同效率。

本节我们展示如何通过钉钉监控 GitHub 代码推送事件得可靠些实践,主要包含以下几个步骤:

创建一个钉钉机器人;创建 EventBridge 相关资源:事件总线、事件源(HTTP Source 类型)、事件规则、事件目标(钉钉);创建自定义事件总线;选择 GitHub 代码仓库创建 Webhook;向 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 队列;创建 EventBridge 相关资源;Grafana 上配置 Webhook;测试接收结果。

创建 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/

感谢为阿里云来自互联网内容,未经允许不得感谢。

标签: # 事件 # 代码
声明:伯乐人生活网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系ttnweb@126.com