写点什么

事件驱动架构离我们还有多远?

2021 年 7 月 23 日

事件驱动架构离我们还有多远?

近年来,随着云原生、Serverless 等技术关键词都成为了 buzz word,事件驱动再一次成为了云应用架构领域的热门词汇。Gartner 报告将 Event-Driven Model 列为 10 大战略技术趋势之一,事件驱动架构(EDA)将成为未来微服务的主流。该报告同时做出了以下预言:


  • 到 2022 年,事件通知的软件模型将成为超过 60% 的新型数字化商业的解决方案;

  • 到 2022 年,超过 50% 的商业组织将参与到事件驱动的数字化商业服务的生态系统当中。

美好的未来,骨感的现实

然而,抛开美好的畅想,在实际工作中,落地事件驱动架构不是一件简单的事情,其问题主要体现在以下方面:

  • 事件无标准,获取困难:阿里云的云产品,从 IaaS 到 PaaS,每天都有数以亿计的事件产生,但这些云产品没有采用统一的标准和规范来定义描述这些事件,使得用户无法使用同样的方式来获取处理事件。

  • 事件孤岛严重,无法串联应用:云产品的事件天然孤立,因为缺少统一的事件中枢,使得用户做应用处理时很难将多个产品的事件做串联组合,无法形成规模效应,很难挖掘出有用的业务价值。

  • 事件响应能力弱:当前大多数云产品事件的处理场景都停留在事件本身的监控、告警展示层面,属于离线分析的场景,而云上的用户更加需要将这些事件连接到自身的在线业务系统中,实现事件的在线响应处理,以发挥更大的价值。

  • 事件管理能力差:当前大部分云产品的事件管理能力处于初级阶段,缺乏对事件生命周期的全程管理,缺少事件长期归档、查找、轨迹诊断等能力,用户使用过程中定位问题较为困难。

EventBridge 事件总线基本模型

为了解决这些现实问题,2020 年 11 月,阿里云发布了 EventBridge 事件总线。作为一款无服务器事件总线服务,EventBridge 作为云事件的枢纽,以标准化的 CloudEvents 1.0 协议连接云产品和云应用,提供中心化的事件治理和驱动能力,帮助用户轻松构建松耦合、分布式的事件驱动架构。


另外,在阿里云之外的云市场上有海量垂直领域的 SaaS 服务,EventBridge 将以跨产品、跨组织以及跨云的集成与被集成能力,助力客户打造一个完整的、事件驱动的、高效可控的上云新界面,阿里云 EventBridge 可以提供以下核心能力:


(1)海量阿里云官方事件源:EventBridge 当前支持了阿里云 60+云产品的官方事件接入,用户零成本即可获取各类资源、运维和审计事件。

(2)多类型自定义事件源:EventBridge 支持用户以 CloudEvent1.0 标准协议上传自定义的事件内容,同时还支持消息、数据库变更等类型的数据源清洗成自定义事件。

(3)丰富的事件目标和处理模式:EventBridge 支持短信、邮箱、钉钉、API 等 10+事件目标,并支持全量部分提取、常量、模板等 10+事件处理模式,用户无需任何代码即可完成事件驱动和处理。

(4)完善的事件管理和触达能力:EventBridge 支持事件生命周期查询、轨迹追踪等诊断能力,支持跨网络、跨账号、跨地域的复杂事件触达能力。

EventBridge 产品包含几个基本概念:事件、事件总线、事件源、事件规则以及事件目标。


如上图所示,事件由阿里云官方、自定义、第三方 SaaS 这三类事件源产生并传输到事件总线,用户在事件总线内配置事件规则以实现事件过滤、转换处理,并最终投递到用户指定的事件目标。

典型场景

根据 EventBridge 当前已经具备的能力,给大家介绍下三个典型的案例:

场景 1:云原生海量媒体处理业务

在线教育、游戏直播行业,伴随着在线课堂、直播间的产生,会有大量的媒体数据,例如视频、音频文件需要做剪辑、切分、转码等复杂处理。这类业务处理量往往存在较为陡峭的波峰波谷,业务上需要实时的事件驱动协调以及 Serverless 化的执行处理能力,以满足高实时、低成本、极致弹性的业务需求。



在这个业务场景中,EventBridge 收集来自原始文件的上传、变更事件,并根据业务逻辑驱动下游的函数计算做高并发、可弹性的媒体处理逻辑,在函数计算产品处理完成后将结果驱动下游的媒体通道,同时处理结果可以通过 EventBridge 触达到钉钉、短信邮箱等离线通知渠道以及 API、消息队列等在线渠道。使用 EventBridge+函数计算的方案弹性扩容能开强,运维成本更低、实时性更强。

场景 2:360 度业务全景

随着企业业务规模的扩大,业务的稳定性愈发重要,为了避免故障随着场景的复杂化而频繁发生,对应用建设 360  度全方位的可观测和监控体系尤为重要。传统的应用基于云原生重构后,享受云原生技术红利的同时也为应用的稳定性治理带来了更多的复杂性,最主要的就是变更难以控制:业务依赖了整套云的基础设施,IaaS 层物理资源、网络资源以及 PaaS 层云服务,甚至依赖的上下游服务,时刻都在进行变更,用户很难立马感知到变更的发生以及相应的影响,而 95% 的故障都是由变更导致的。


为了解决这个问题,通过 EventBridge 打造 360 度业务全景图,清晰地感知整个产品业务链路上,做了哪些变更,有哪些异常反应,这些异常反应是不是跟最近的变更有关联,遇到特殊问题时,我们甚至可以通过自运维的方式,帮助产品更快的恢复,将影响面降低到最小。


而这些能力的拥有,离不开 EventBridge 集成多个云产品事件的能力,也离不开 EventBridge 可以通过事件触发多个云产品响应的能力。事件作为一个信息的重要载体,通过 EventBridge 优雅的协调各个云产品进行有序工作。

场景 3:新零售智慧家具门店

EventBridge 未来可以触达的场景有多大?让我们看一个新零售智慧家具门店的场景:


  • 仓库的家具商品入库事件、门店的顾客进店事件通过 EventBridge 实时流转到在线分析系统,让我们知道现在店内有哪些家具商品,进店顾客的家具偏好是什么,并推送给商场门店的导购员或则广告屏,帮助门店更好的下单转化;

  • 顾客在线电子支付后,订单信息发送到 EventBridge,并触发第三方物流公司进行送货上门;

  • 第三方物流公司,可以实时的将家具的位置信息通过 EventBridge 推送给移动端 APP,客户可以通过 APP 很方便的实时了解到自己的家具到哪了,预估还需要多久送到家;


所有这些通过 EventBridge 流转的在线业务事件数据,最终通过 EventBridge 流转到离线分析系统,自动生成业务报表,供管理层做绩效考核或则运营决策。

在这个场景中,EventBridge 起着关键的通道作用,无论是 IoT、在线业务、还是大数据场景,EventBridge 将事件信息高效的流转,推动业务目标达成。Event 既作为在线业务数据,又作为离线分析数据,这种方式,既降低了成本,同时也提高了效率。

发布半年,what's new

EventBridge 距离上次发布已有半年,近一段时间在生态集成规模、事件触达能力、事件应用集成方面有了全面的发展和增强。

  • 在生态集成规模方面,基于阿里云审计产品实现了 30+ 云产品官方事件源接入,涵盖计算、存储、网络、数据库等主流云产品。

  • 在事件触达能力全面新增跨网络、跨地域、跨账号等深度事件触达能力,支持大企业客户使用资源账号做集中事件管理,管理其他成员账号、其他地域的事件。

  • 在事件处理方案:新增了事件查询和事件轨迹查询能力,方便用户快速定位事件驱动链路的异常问题。

未来展望

作为阿里云官方的事件中枢产品,EventBridge 的核心能力将聚集于连接和集成。在连接场景上,未来 EventBridge 会扩大场景范围,不局限于阿里云网络环境,业务应用部署在线下 IDC 机房、跨云厂商、边缘公网环境,阿里云 EventBridge 都将实现连接的触达。


在集成场景上,EventBridge 会继续扩大事件源和目标的范围,涵盖更多的云产品、自定义数据源以及三方 SaaS,同时为了降低用户事件集成的开发复杂度,EventBridge 将会根据各种应用场景构建事件应用模板,用户只需简单配置即可低成本集成。


本文转载自:阿里巴巴中间件(ID:Aliware_2018)

原文链接:事件驱动架构离我们还有多远?

2021 年 7 月 23 日 13:005285

评论 2 条评论

发布
用户头像
事件驱动国外早就流行了,国内话语权为什么老是控制在大厂里面,拿出来开源免费的技术架构才是正题,rsocket ,vert.x,quarkus值得国内技术人员关注,多关注下真正的技术。
2021 年 07 月 23 日 18:16
回复
这里的事件是跨服务之间的事件,业务相关的,不是服务器内部的处理方式
2021 年 07 月 26 日 11:38
回复
没有更多了
发现更多内容

MySQL字段默认值设置详解

Simon

MySQL 数据库

QA视角看数据匿名化

BY林子

数据安全 测试右移 用户数据 数据脱敏

【LeetCode】区域和检索 - 数组不可变Java题解

HQ数字卡

算法 LeetCode 28天写作

Serverless 如何在阿里巴巴实现规模化落地?

阿里巴巴云原生

阿里巴巴 Serverless 容器 微服务 云原生

程序员之禅(一)

每天读本书

读书笔记

Kubernetes 稳定性保障手册 -- 极简版

阿里巴巴云原生

云计算 容器 开发者 云原生 k8s

工作两三年了,整不明白架构图都画啥?

小傅哥

Java 后端 小傅哥 架构设计 画架构图

EEPROM CAT24CXX实现分页读、写数据

不脱发的程序猿

28天写作 CAT24C08 EEPROM 嵌入式软件 单片机

从0到1建立数据分析指标体系底层逻辑

小飞象@木木自由

数据分析 数据指标 数据分析体系

887页Java面试“成神”手册,已助朋友狂砍9个一二线大厂Offer

Java架构追梦

Java 阿里巴巴 架构 面试 金三银四

程序员专属“灯谜”大挑战,答对六题算你赢!

京东科技开发者

编程语言 集群

MongoDB 在评论中台的实践

vivo互联网技术

数据库 mongodb 分布式 集群

使用 pyVmomi 采集 vSphere 监控指标

冯骐

Python 运维 监控 Open-Falcon vpshere

OS命令--shell中数组的操作

cloudcoder

数组 Shell 循环引用

极限编程技术实践

Teobler

敏捷 敏捷开发 TDD 重构 极限编程

技术解析 | Doris Compaction机制解析

百度开发者中心

百度 apache doris

算力挖矿系统开发|算力挖矿软件APP开发

开發I852946OIIO

系统开发

Vim,人类史上最好用的文本编辑器

沉默王二

vim 开发工具 vim教程

看完你就明白什么是图神经网络

华为云开发者社区

神经网络 深度学习 节点 图神经网络 图结构

搭建一个 802.1x 的 web 测试服务

冯骐

网络 监控系统 Open-Falcon radius eduroam

Git学习游戏化,从Learn Git Branching 开始

程序老王

git 学习方法 git 学习 学习推荐

从0到1建立软件测试质量体系

程序员阿沐

软件测试 测试工程师 质量保证

树莓派上的温湿度环境监控

冯骐

运维 树莓派 物联网 监控告警

构建一套适合微服务的高可用架构

环信

技术案例 | 云原生微服务落地难?百度自用CRM这样做

百度开发者中心

CRM 云原生微服务 #百度智能云#

接口测试--apipost中cookie管理器的使用

测试人生路

接口 Cookie

树莓派上的家庭监控中心

冯骐

运维 树莓派 监控系统 Open-Falcon 物联网,

建立博客数据库并连接ES用MySQL还是MongoDB更合理

读字节

MySQL mongodb 分布式 分布式数据库 分布式存储

山东青岛推进平安小区建设!源中瑞智慧社区平台解决方案

源中瑞-龙先生

解决方案 山东 源中瑞 青岛 智慧社区

国产芯片WiFi物联网智能插座—电耗采集功能设计

不脱发的程序猿

28天写作 国产芯片 电耗检测 电压电流 华大MCU

LeetCode题解:123. 买卖股票的最佳时机 III,动态规划,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

事件驱动架构离我们还有多远?-InfoQ