基于 EventBridge 构建 SaaS 应用集成方案

简介: 事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。

作者:昶风


引言


事件驱动架构(EDA)是一种以事件为纽带,将不同系统进行解耦的异步架构设计模型。在 EDA 中,事件驱动的运行流程天然地划分了各个系统的业务语义,用户可以根据需求对事件与针对此事件做出的响应灵活定制,这使得基于 EDA 架构可以方便地构建出高伸缩性的应用。据 Daitan Group 的调研报告,早在 2017 年,例如 UBER、Deliveroo、Monzo 等公司就已经采用了 EDA 去设计他们的系统。


640.png


为了便于用户更加轻松地开发以 EDA 为架构的应用,在 2020 年云栖大会上,阿里云正式推出了 EventBridge。EventBridge 是一款无服务器事件总线服务,能够以标准化的 CloudEvents 1.0 协议在应用之间路由事件。目前,EventBridge 已经集成了众多成熟的阿里云产品,用户可以低代码甚至零代码完成各个阿里云产品和应用之间的打通,轻松高效地构建分布式事件驱动架构。


事件源是事件驱动的基石,如何获取更多事件源也是 EventBridge 一直在探索和尝试的方向。针对市场上其他云厂商和垂直领域的 Saas 服务,EventBridge 发布了 HTTP Source 能力,提供简单且易于集成的三方事件推送 ,帮助客户更加高效、便捷地实现业务上云。


HTTP Source 概述


接入 EventBridge 应用有多种情况:用户自定义应用、阿里云服务、其他云厂商服务或者其他 SaaS 产品。


  • 对于用户自定义应用,用户可以使用 EventBridge 官方的 API 接口、多语言客户端以及 CloudEvents 社区的开源客户端来完成接入。


  • 对于阿里云的云产品,EventBridge 原生支持,用户可以在默认事件总线中选择对应的云产品与其相关的触发事件。


  • 而对于其他云厂商、SaaS 产品,EventBridge 同样也提供便捷的接入方式便于用户进行集成,HTTP Source 事件源便是一种典型的接入方式。


2.png


具体而言,HTTP Source 事件源是 EventBridge 支持的事件源的一种,它以 Webhook 形式暴露了发布事件的 HTTP 请求地址,用户可以在有 URL 回调的场景配置 HTTP Source 事件源,或者直接使用最简单的 HTTP 客户端来完成事件的发布。HTTP Source 事件源提供了支持 HTTP 与 HTTPS,公网与阿里云 VPC 等不同请求方式、不同网络环境的 Webhook URL,便于用户将其集成到各类应用中。接入时无需使用客户端,仅需保证应用可以访问到对应 Webhook URL 即可,这使得接入过程变得简单而高效。


在将 HTTP 请求转换为 CloudEvent 的时候,EventBridge 会将请求的头部和消息体部分置于 CloudEvent 字段中,其余字段会依据用户 EventBridge 资源属性以及系统默认规则进行填充。用户可以在事件规则中,对所需的内容进行过滤、提取,最终按照模板拼装成所需的消息内容投递给事件目标。


3.png


HTTP Source 事件源目前支持 3 种类型的安全设置,分别是请求方法、源 IP 以及请求来源域名。


  • 请求方法:用户可以配置当前请求此事件源时合法的 HTTP 请求方法,如果方法类型不满足配置规则,请求将被过滤,不会投递到事件总线。


  • 源 IP:用户可以设置允许访问此事件源时合法的源 IP(支持 IP 段和 IP),当请求源 IP 不在设置的范围内时,请求将被过滤,不会投递到事件总线。


  • 请求来源域名:即 HTTP 请求的 referer 字段,当请求的 referer 与用户配置不相符时,请求被过滤,不会投递到事件总线。


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


SaaS 集成最佳实践


钉钉监控 GitHub 代码推送事件


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

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


  • 创建一个钉钉机器人;
  • 创建 EventBridge 相关资源:事件总线、事件源(HTTP Source 类型)、事件规则、事件目标(钉钉);
  • 创建自定义事件总线;
  • 选择 GitHub 代码仓库创建 Webhook;
  • 向 GitHub 代码仓库推送代码变更;
  • 钉钉群接收此次代码推送相关信息。


1)创建钉钉机器人


参考钉钉官方文档[1],创建一个群机器人。创建群机器人时,安全设置请勾选“加签”并妥善保管密钥和稍后生成的机器人 Webhook 地址。


2)创建 EventBridge 相关资源


创建 EventBus 事件总线

5.png创建事件源。事件源配置完成之后,点击跳过,我们接下来会专门配置事件规则与目标。
66.png创建完成后,进入事件源详情页,保存刚刚生成的 Webhook URL。


77.png在 EventBridge 控制台页面点击进入刚刚创建的 EventBus 详情页,在左侧一栏中“事件规则”选择“创建规则”。


88.png

99.png



创建时间目标。选择钉钉,并将钉钉机器人的 Webhook 地址和密钥填入,推送内容侧可以按照需求设计。


100.png

image.gif

我们填写模板变量为:

{"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”,创建完成。


111.png

122.png


4)向 GitHub 代码仓库推送代码变更


本地仓库做一定变更,commit 后推送 GitHub。


5)钉钉群接收此次代码推送相关信息


133.png


异步消费监控报警信息


业务上存在异步消费报警信息的场景,例如报警内容备份,根据报警频率自适应调整报警阈值等。而且对于多云业务的用户,如何将跨云服务的报警信息整合起来也是一个麻烦的问题。依托 HTTP Source,用户可以将不同云厂商(腾讯云、华为云等)、不同监控产品(Grafana、Zabbix、Nagios等)统一集成到 EventBridge 平台,以便于实现对报警信息的异步消费。

14.png


本节我们介绍如何使用 EventBridge 集成 Grafana,实现异步消费监控报警信息。Grafana 是一款开源数据可视化工具,也同时具有监控报警功能,具体使用可以参阅Grafana 官方文档[2]。本节主要包含以下步骤:


  • 创建 MNS 队列;
  • 创建 EventBridge 相关资源;
  • Grafana 上配置 Webhook;
  • 测试接收结果。


创建 MNS 队列


在 MNS 控制台,选择“队列列表-创建队列”。


15.png

创建 EventBridge 相关资源


同上文所述,这里仅示例创建事件目标时相关配置。


16.png


Grafana 上配置 Webhook


点击 Grafana 控制台左侧“Alerting-Notification channels”,选择“Add channel”。


17.png


在“type”一栏中选择“Webhook”,url 填写 HTTP Source 事件源的 Webhook 地址,点击下方“Test”。


18.png


测试接收结果


登陆 MNS 控制台,进入队列详情页,点击页面右上角“收发消息”,可以看到 MNS 已经接收到刚刚 Grafana 发送的消息。

212121.png

19.png



点击对应消息详情可以看到消息内容,说明消息已经被成功消费。


20.png


更多集成



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] 钉钉官方文档https://open.dingtalk.com/document/group/custom-robot-access


[2] Grafana 官方文档https://grafana.com/docs/

相关文章
|
1月前
|
机器学习/深度学习 敏捷开发 人工智能
深入探究持续集成在软件测试中的应用
【4月更文挑战第23天】 随着敏捷开发和DevOps文化的普及,持续集成(CI)已成为软件开发生命周期中不可或缺的一环。本文旨在剖析持续集成如何革新软件测试流程,提升测试效率及质量。文中不仅探讨了CI的基本原理与架构,还细致地分析了其对测试自动化、快速反馈以及质量控制的显著影响。同时,通过实际案例分析,揭示了实施CI的最佳实践及其面临的挑战。最终,文章提出了未来持续集成在测试领域可能的发展方向,为软件测试专业人士提供了前瞻性的参考。
|
6天前
|
弹性计算 Serverless 应用服务中间件
Serverless 应用引擎操作报错合集之集成sls时出现报错,是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
21天前
|
敏捷开发 人工智能 数据管理
探索自动化测试在持续集成环境中的应用与挑战
【5月更文挑战第27天】随着敏捷开发和持续集成(CI)的普及,自动化测试已成为确保软件质量和加速交付的关键工具。本文将深入探讨自动化测试在持续集成环境中的实施策略、面临的挑战以及优化实践。通过分析自动化测试框架的选择、脚本维护、数据管理等关键要素,旨在为读者提供一种系统化的视角,以理解和改进其自动化测试流程。同时,文章还将分享一些前沿的测试自动化趋势,包括人工智能(AI)在测试用例生成和执行中的潜在应用。
|
5天前
|
存储 缓存 安全
LLM应用实战:当图谱问答(KBQA)集成大模型(三)
本文主要是针对KBQA方案基于LLM实现存在的问题进行优化,主要涉及到响应时间提升优化以及多轮对话效果优化,提供了具体的优化方案以及相应的prompt。
17 1
|
5天前
|
存储 自然语言处理 C++
LLM应用实战:当KBQA集成LLM(二)
本文主要是针对KBQA方案基于LLM实现存在的问题进行优化,主要涉及到图谱存储至Es,且支持Es的向量检索,还有解决了一部分基于属性值倒查实体的场景,且效果相对提升。
14 1
|
5天前
|
缓存 自然语言处理 知识图谱
LLM应用实战:当KBQA集成LLM
项目是关于一个博物馆知识图谱,上层做KBQA应用。实现要求是将传统KBQA中的部分模块,如NLU、指代消解、实体对齐等任务,完全由LLM实现,本qiang~针对该任务还是灰常感兴趣的,遂开展了项目研发工作
15 0
|
14天前
|
边缘计算 Cloud Native
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
SOA架构,即面向服务的架构,它将系统中的所有功能都拆分为一个个独立的服务单元。这些服务通过相互间的沟通与配合,共同完成了整体业务逻辑的运作。在SOA架构中有几个核心概念:服务提供者、服务使用者、服务注册中心、服务规范、服务合同,这些概念清晰地阐述了服务应如何被提
“论SOA在企业集成架构设计中的应用”必过范文,突击2024软考高项论文
|
18天前
|
敏捷开发 机器学习/深度学习 监控
探索自动化测试在持续集成中的应用与挑战
【5月更文挑战第30天】 随着敏捷开发和持续集成(CI)实践的日益普及,自动化测试已成为确保软件质量和加速交付的关键工具。本文旨在分析自动化测试在持续集成环境中的作用,探讨其带来的优势及面临的挑战,并提出了相应的应对策略。通过实际案例分析和最新技术趋势的梳理,文章为软件开发团队如何高效实施自动化测试提供了参考和指导。
|
19天前
|
敏捷开发 运维 监控
探索自动化测试在持续集成中的应用与挑战
【5月更文挑战第29天】 随着敏捷开发和持续集成(CI)实践的普及,自动化测试已成为确保软件质量和加快交付速度的关键因素。本文将探讨自动化测试在持续集成流程中的实施策略、面临的挑战以及解决方案。通过分析自动化测试的优势和局限,我们旨在为软件开发团队提供实用的指导和最佳实践,帮助他们在不断变化的技术环境中维持高效和稳定的软件发布周期。
|
19天前
|
敏捷开发 存储 测试技术
探索自动化测试在持续集成中的应用与优化策略
【5月更文挑战第29天】 随着敏捷开发和持续集成(CI)的普及,自动化测试已成为确保软件质量和加快交付速度的关键。本文将深入探讨自动化测试在持续集成环境中的实际应用,并提出一系列优化策略。我们将分析自动化测试流程中常见的挑战,如测试用例管理、测试数据准备、并行执行以及结果反馈机制等,并基于这些挑战提出相应的解决方案。文章旨在帮助读者理解如何通过优化自动化测试流程来提升软件开发的效率和质量。

热门文章

最新文章