QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

Microsoft 发布用于统一事件处理的 Azure 事件网格

  • 2017-08-20
  • 本文字数:2960 字

    阅读完需:约 10 分钟

今天,Microsoft 发布了一项新服务,用于获取和处理云端事件。 Azure 事件网格(Event Grid)能够获取到从 Azure 服务中或者自定义应用程序中生成的事件,并且路由至所选择的处理程序。这项服务为开发者和运营商提供了一个单一事件流,可用于无服务器应用程序、应用程序集成或操作自动化。

Microsoft 的 Corey Sanders将此服务描述为“将事件定义为Azure 头等对象”的“全托管事件路由服务”。Azure 将事件路由到各种事件处理程序中。这些处理程序涵盖了从Azure Functions 到webhook【译注1】,它们支持事件过滤和保障可靠传递。Microsoft 声称,Azure 事件网格能够每秒支持数百万个事件。每月前10 万次操作都是免费的,之后用户需要为每百万次操作支付0.6 美元。

虽然包括Microsoft 在内的主要云服务提供商都为应用程序到应用程序之间的路由提供了一系列消息传递服务,但Azure 事件网格这一服务有些特别。Microsoft 提供了一个托管的或者自定义主题的单一事件结构。他们致力于为所有主流云服务提供内置的发布者支持。他们开箱即用的处理程序还能够让用户选择在Azure 平台触发行为,或者是通过webhook 在Azure 平台外部触发行为。例如,像Google Cloud Storage 这样的服务会将事件发送至 Google Cloud Pub/Sub,但是这仅仅适用于一部分服务,消息传递的主题是自我托管的。在 AWS 云服务中,SQS 从为数不多的服务中获取事件,然后 CloudWatch将事件分发至不同类型的处理程序。

为了获悉更多有关Azure 事件网格的信息,InfoQ 联系到了该项新服务的产品负责人 Dan Rosanova ,他也是该项目的首席项目经理。

InfoQ:Azure 事件网格源自哪里?它和 Service Fabric 一样吗,它也是从内部产品演化成为了公开发行的产品?还是一开始设计它的初衷就是面向客户的?

Rosanova: Azure 事件网格一开始就是以客户为中心而设计的,但是与此同时它也是为了满足我们的内部需求,用于 Azure 平台以及跨 Microsoft 产品的需求。这也就是说,这是我们专门为 Azure 以及我们的客户们所设计的常见应用场景。规模、可靠性、互操作性以及成本都被我们视作是至关重要的。

InfoQ:目前有哪些 Azure 服务能将事件发布到事件网格?它支持哪些地区?今后有什么计划呢?

Rosanova:目前 Azure 事件网格在美国西部以及美国中西部都可用。Azure 资源管理器、事件中心捕获(Event Hubs Capture)服务和存储二进制大对象服务都可以成为事件发布服务的提供者。我们将继续把这项服务部署到 Azure 的所有地区,并且随着时间的推移将其部署至所有的 Azure 服务上。

InfoQ:开发人员可以从他们自己的应用程序向 Azure 事件网格发布事件吗?如果这些应用程序是 Azure 平台之外的呢?他们该怎么做呢?

Rosanova:在 Azure 事件网格中,所有的事件都是从主题(topics)发出的。有一些主题是 Azure 特定的主题,例如你的存储账户。当你使用该存储账户时,它就会触发事件。你还可以生成自己的自定义主题,你可以将自己定义的事件发布到该主题,你自己或其他对其感兴趣的人可以订阅该主题用以接收感兴趣的事件。你可以通过使用 Header 中带有密钥或令牌的 HTTPS POST 来进行发布,密钥或令牌用以认证授权。我最喜欢的方式是通过 curl 使用 bash 变量将事件发送至事件网格:curl -X POST -H “aeg-sas-key: $key” -d “$body” $topicEndpoint。

InfoQ:开发人员是如何与 Azure 事件网格进行交互的呢?用户体验(UX)如何?

Rosanova:Azure 事件网格是 Azure 中的拓展资源(Extension Resource),也就是说,它需要锚定于其它资源(如存储)。当你想要在存储账户上创建事件订阅时,实际上,你会转至该存储账户的 UX。因此,事件确实是对于你在 Azure 中已使用资源的自然拓展。你还可以通过自己的 UX 来和 Azure 事件网格进行交互,但是我们更倾向于使用事件发布者的 UX。对于自定义主题,其锚点是你的自定义主题本身,因此你只需导航至你的主题并订阅那里的事件即可。这种体验真的是和我们内部所使用的模型和技术是完全相同的,我们把它直接提供给了我们的客户。

InfoQ:“事件”是什么样的呢?header/payload 有哪些部分是必须的呢,哪些是可选的呢?

Rosanova

复制代码
aeg-sas-key: <key azure="" custom="" event="" from="" grid="" my="" topic="">
[
{
"id": "'"$RANDOM"'",
"eventType": "recordInserted",
"subject": "myapp/vehicles/motorcycles",
"eventTime": "'`date --iso-8601=seconds`'",
"data":{
"make": "Ducati",
"model": "Monster"
​ }
}
</key>

在上述的例子中, header 中的 aeg-sas-key 是必不可少的,它也被称为 header 中的 SAS 令牌 aeg-sas-token。在 body 中,id、eventType、subject、eventTime(ISO 8601)以及有效 JSON 格式的 data 对象都是不可或缺的。你不需要预注册 eventTime 或 subject,但是你可以通过它们来为事件订阅者启用事件过滤,因此你在事件建模中应该考虑使用它们。

InfoQ:这是为了可靠消息传递这一场景所设计的吗?

Rosanova:事件网格提供至少一次送达( at least once delivery)。如果你的端点没有以 200/202 的状态码回复我们的请求,我们会以指数退避算法(exponential back off)来进行重试。最后这个重试间隔会变为 1 小时,在 24 小时之后我们会删除未送达的事件。至少一次的意思是,你可能会不止一次收到这些事件,尤其是当你没有确认已经收到这些事件时。

InfoQ:有效的事件消费者是什么?自定义应用程序?webhook?Azure 服务?

Rosanova:上述提到的那些全部都是。我们不对事件发生的地点加以区分,我们也不会将其限制在特定区域或者云端。事件消费者可以是其它 Azure 服务,例如 Azure Logic Apps 和 Azure Functions,它们都具有直接集成至 Azure 事件网格的 UX,但是事件消费者也可以是运行在 Azure 上或者其它任何地方的 HTTP 端点。

InfoQ:Microsoft 提供为数不多的与消息传递相关的服务,包括 Azure Service Bus、Azure Event Hubs、Logic Apps 等等。Azure 事件网格的明确使用用例是什么呢?

Rosanova:Azure 事件网格填补了当前云平台中消息传递服务的空白,填补的不仅仅是 Azure 的空白,而是涵盖了所有云服务提供商。我们提供消息传递、消息队列以及消息遥测(telemetry)服务,但是这仍然无法进行全方位的事件处理,尤其是对于跨服务或者跨云平台的场景。如果你着眼于一个典型的电子商务应用程序,你可能会去使用像 Service Bus 这样的服务来进行销售交易、其它物料交易或金融交易,你也可能会使用像事件网格这样的服务,让所有的模块都报告它们的状态,就像是“拉动式库存(inventory pulled)”,你还可能会去使用像 Event Hub 这样的服务来跟踪所有不同组件的遥测信息。我们认为,对于 Azure 事件网格来说,最具意义的三个方面是:无服务器、操作和集成。每个方面都有自己存在的原因并且都专注于服务略有差异的不同人群。

译注 1:webhook 是用户通过自定义回调函数的方式来改变 Web 应用的一种行为,通过 webhook 开发者能够自定义一些行为通知到指定的 URL。

查看英文原文: Microsoft Ships Azure Event Grid for Unified Event Processing


感谢薛命灯对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-08-20 19:001433

评论

发布
暂无评论
发现更多内容

软件测试/人工智能|一文告诉你Python元组相关操作

霍格沃兹测试开发学社

谷歌史上最强大模型Gemini抢鲜知!!!

江湖修行

AI Google openai #人工智能 #大模型

大模型数据集:力量的源泉,进步的阶梯

来自四九城儿

每日一题:LeetCode-105. 从前序与中序遍历序列构造二叉树

Geek_4z9ami

面试 算法 LeetCode 二叉树 Golag

技术人年度回顾:大模型驱动的变革与影响

熬夜磕代码、

大模型

PostgreSQL 技术内幕(十二)CloudberryDB并行化查询之路

酷克数据HashData

FFA 2023 明日开幕,Flink 智能诊断、小红书流批一体实践精彩来袭

小红书技术REDtech

大数据 flink 架构 流批一体

IT外包对中小企业的独特优势

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

软件测试/人工智能|一文告诉你Python字符串的相关操作

霍格沃兹测试开发学社

利用SEO策略提升网站排名和流量

九凌网络

Google排名高的是什么样的页面?

九凌网络

分布式基础概念-分布式高可用

派大星

分布式 Java 面试题

企业IT外包的四种类型

Ogcloud

外包 IT 外包公司 外包项目 IT 运维

【写作训练营打卡|03】

inBuilder低代码平台新特性推荐-第十五期

inBuilder低代码平台

低代码

大模型数据集:揭秘AI背后的魔法世界

来自四九城儿

英特尔研究院将在NeurIPS大会上展示业界领先的AI研究成果

E科讯

Kafka集群调优+能力探底

快乐非自愿限量之名

kafka 架构 集群

【智问-Askture】降低企业成本,定制一个专属自己的ChatGPT!

伊克罗德信息科技

AIGC 大语言模型

代币开发:加密货币开发与IDO预售相关指南

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

软件测试/人工智能|HTTPS加密协议,你会多少?

霍格沃兹测试开发学社

大模型数据集:探索新维度,引领AI变革

来自四九城儿

基于Browscap对浏览器工具类优化

不在线第一只蜗牛

浏览器 软件开发 可视化工具

Java多线程系列5:sleep()

BigBang!

Java多线程

KubeSphere Marketpalce 上新!Databend Playground 助力快速启动数据分析环境

Databend

2024营销日历新鲜出炉!提前规划,赢在起跑线!

彭宏豪95

互联网 营销 在线白板 活动策划 效率软件

用户案例|Milvus 助力 Credal.AI 实现 GenAI 安全与可控

Zilliz

Milvus Zilliz AIGC credal

颠覆你的绘图方式!这8款泳道图工具你用过几款

职场工具箱

泳道图 工具推荐

SQL CREATE INDEX 语句- 提高数据库检索效率的关键步骤

小万哥

MySQL 数据库 sql 程序员 后端开发

低代码/无代码应用赋能数字化

高端章鱼哥

低代码 数字化 无代码

【技术人的 2023】 ——我的AI学习之旅年度总结

YoLo

AI

Microsoft发布用于统一事件处理的Azure事件网格_微软_Richard Seroter_InfoQ精选文章