最近正在备考微软的AZ 204 开发者认证考试,发现其中的对于Event Grids, Event Hubs和Service Bus的使用场景是一个重点,查找了微软的在线文章和Stackoverflow里的用户回答,翻译并总结了以下要点,分享出来以助大家快速区别这几个概念:
简单定义:
- Azure Event Grids: 简单事件驱动, 不负责处理事件,使用Publish-Subscription模型(Reactive Programming)
- Azure Event Hubs: 多源的大数据流处理平台,使用Pipeline存储和Push-Pull模型(用于Telemetry数据,Log数据)
- Azure Service Bus: 消息驱动,传统的企业代理消息传递系统,使用Queue存储和Push-Pull模型(类似 Azure Queue,且提供许多高级功能)
Event Grids与Event Hubs之间的区别
- Event Grids不保证事件的顺序,但Event Hubs使用带有有序序列的分区,因此它可以保证同一分区中的事件顺序。
- Event Hubs仅接受用于数据采集的端点,它们不提供响应机制,相对Event Grids会发送 HTTP 请求通知已发生的事件。
- Event Grids可以触发 Azure 函数。 对于Event Hubs,Azure 函数需要主动拉取和处理事件。
- Event Grids是一个Distribution系统,不是队列机制。 如果一个事件被导入,它会立即被导出,如果它没有得到处理,它就会不再存在。 除非将未交付的事件发送到存储帐户, 这个过程被称为死信。
- Event Hubs的数据最多可以保留 7 天,然后再重播。 这使得数据能够从某个时间点恢复或从较早的时间点重新开始,并在需要的时候重新处理事件。
Event Hubs和Service Bus之间的区别
对于发布者或接收者,Service Bus 和Event Hubs看起来非常相似。
- Event Hubs专注于事件,而Service Bus更像是一个传统的消息传递Broker。
- Service Bus 用作Backbone,将运行在云中的应用程序连接到其他应用程序或服务,并在它们之间传输数据,而 Event Hubs 更关心以高吞吐量和低延迟接收海量数据。
- Event Hubs将多个Event生产者与Event接收者分离,而Service Bus旨在分离应用程序。
- Service Bus消息传递支持消息属性“Time to Live”,而Event Hubs的默认保留期为 7 天。
- Service Bus有 Message Session的概念。 它允许根据Message Session ID 属性关联消息,而Event Hubs则不允许。
- Service Bus消息由接收者拉出并且无法重新处理,而Event Hubs的事件可以由多个接收者摄取。
- Service Bus使用消息队列和Topics,而Event Hubs使用分区。