Azure 消息 & 事件服务的选择 – 中篇

时间:2021-07-15 | 标签: | 作者:Q8 | 来源:Microsoft Azure网络

小提示:您能找到这篇{Azure 消息 & 事件服务的选择 – 中篇}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的Azure 消息 & 事件服务的选择 – 中篇内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您!

在上篇中我们分别对了消息服务中三种类型服务做了介绍和对比,它们包括Storage queue、Service bus queue、Service bus to危机公关的基本方针内容pic。这篇文章我们继续对事件服务中的Event Hub和IOT Hub分别做介绍。

1.Event Hub





a.什么是Event Hub

Event Hub服务可以在短时间内接收由设备或服务生产大量数据流。

这里的“短时间”和“大量”可以达到每秒钟接收百万级别的数量。传递到Event Hub的数据更准确来讲是数据流,即使流动到Event Hub的数据量非常大,也可以保证低延迟接收到所有的数据流,并且系统是可靠稳定的。

在Event Hub的世界里,数据被称为“事件”而不再是“消息”,这里我们对这两个概念做进一步的介绍,这将帮助我们了解消息服务和时间服务的区别。“事件”和“消息”是不同的,简单来讲消息是有明确目的意图的,即它被发送到后端是用来执行特定的操作,发送端需要知道对应的操作是否被执行,需要得到对应的响应;而“事件”则是反映一个事实,是发生在过去的一个事件记录,发送端发出这个“事件”后则不需要了解后续的操作,也不需要拿到接收端收到“事件”的响应。

b.服务特性

Event Hub做为处理高并发数据流的服务有丰富的产品特性:

首先Event Hub支持用户使用AMQP协议发送事件到服务端,这方便不同的设备、应用传递事件到服务端。

其次在Event Hub中,用户是通过“consumer groups”来接收发送到Event Hub中的事件的,用户可以创建多个“consumer groups”,这样每个接收端可以根据自己的节奏并且依赖于特定的“consumer groups”来接收Event Hub中的数据,依赖于不同“consumer groups”的不同的接收端相互之间是完全独立互不干扰的。

另外在Event Hub中有一项非常重要的功能,即Event Hub允许接收端从不同的位置开始接收消息,这依赖于Event Hub中一个非常重要的概念offset(我们可以理解为游标),offset就是用来记录接收端当前在Event Hub中读取事件的位置。在Event Hub中用户可以定义多个partition,我们可以将每个partition理解为一个队列,接收端读取每个partition上的事件,因此每个partition上都会对应有一个offset用来记录当前的位置,而“consumer groups”则可以理解为一组offset记录,它包含了当前接收端在每个partition上读取消息的当前位置。通过这项功能,接收端不需要每次都从头开始获取消息,而是可以通过获取记录位置的offset值,从相应的位置开始获取数据。

最后,作为处理高并发百万级别事件流的服务,Event Hub有很好的扩容性,一方面用户可以定义多个partition(目前我们最多可以自己创建32个partition)分担并发数据流,另外一方面我们可以增加TU(Throughput Units),每个TU允许1MB/S的进入数据和2MB/S的输出数据。需要提的一点是partition和TU是两个不同方向上的扩容。我们可以将进入Event Hub的数据想象成一个水池中的水,这一水池(事件流)通过管道(partition)1秒钟就进入Event Hub服务中。

当我们增加partition时,相当于接到Event Hub中的管道增加,这样对于同样的数据流,增加partition则进入Event Hub的数据更快;当我们增加一个TU时,相当于允许再额外增加一水池的水,这样我们允许双倍的数据流1秒钟传入到Event Hub服务中。

下面这张图表让我们能更直观的对Event Hub中Partition,Consumer Group有个了解:

c.与Service bus queue的区别



Event Hub不同于以上的三种服务Storage queue/Service bus queue&topic,这些服务都是每次处理一条消息,而Event Hub则可以理解为是一个接收事件流的“管道”(pipeline)。

Event Hub的设计侧重于数据流的解决方案,它是一个“事件摄取器”,用来接受并存储事件数据,并可以快速将事件流推送到接收端,具备每秒接收和处理数百万个事件的能力。而Service bus queue则主要面向传统的企业应用程序,是典型的传递消息任务的解决方案,这些解决方案中对消息的顺序、监测重复消息、保证数据不能丢失有很高的要求。

更多关于这两项服务的区别可以参考官方链接。

d.适用场景

基于Event Hub产品特性,它非常适用于大量的消息的传递处理,如遥测或物联网的使用场景。

e.一些限制和说明

Event Hub允许多个接收端根据不同的consumer group独立相互不影响的接收消息,这一点与Service bus topic很像,但是目前每个Event Hub下最多能创建32个consumer group,而topic的subscription可以多达2000个。

另外传递到Event Hub中的事情大小最大不能超过256KB,TU最多可以增加到20个,partition最多可以增加到32个(需要注意partition在创建Event Hub时指定,一旦指定之后就不能改变)。

在Service bus queue中用户可以设定消息有TTL(time to live)值,而在Event Hub中用户可以指定事件的retention period(最长保留期)值,这是两个不同的概念,消息一旦过了TTL值,该条消息是一定会从Service bus queue中移出,然而事件过了retention period,有可能继续保留在Event Hub服务中(取决于一段时间内数据量的多少),而可以保证的是在指定的retention period期限内,该事件是一定会在Event Hub中保留,目前Event Hub事件的retention period最大值为7天。如何进行危机管理

2.IOT Hub

a.什么是IOT Hub

Event Hub非常适合用来处理大量数据流,但是对于物联网的应用场景它不是最佳选择。正如IOT Hub它的名字,Azure平台上的IOT Hub是专门为物联网的应用场景设计的产品。它基于Event Hub服务,并具有额外物联网所需的附加功能,比如管理和保护连接到IOT Hub上的成千上万的设备。

b.服务特性

IOT Hub可以与设备端交互,也就是支持双向通信(device to cloud和cloud to device),允许对设备执行同步或异步指令。

IOT Hub支持多种通信协议,比如,AMQPHttpMQTT协议,而MQTT是非常流行的物联网协议。对于那些不支持以上三种通信协议的设备,Azure IOT Hub提供给用户一套Gateway的SDK,从而保证这些设备可以通过已有的能力(蓝牙)与Gateway通信,Gateway将消息传递到Hub中,从而实现设备与云端的通信。

IOT Hub具备设备管理能力,从而可以对设备进行硬件升级、报告配置管理信息。

Azure IOT作为构建物联网解决方案的关键技术,实现将前端收集的数据传递到后端应用中,在Azure IOT Hub中,可以通过是Azure平台提供的应用对接收到Hub中的数据进行处理,比如(流分析、logic app、HDInsight等等);也可以通过IOT Hub提供的SDK构建接收数据程序对数据进行处理;另外还可以通过配置message routers将数据重新导向到其他的服务。这里我们对message router做进一步的解释,当IOT Hub接收到设备端的一条数据后,首先会监测用户是否配置了自定义的router,如果有并且该条消息满足对应的规则,那么IOT Hub会将该条消息传递到router对应的服务中去,而不是存放在默认的Event Hub服务中(如果没有任何router的配置,默认一条消息进入IoT Hub中是会自动存放在默认的一个Event Hub中)。

下图是IOT Hub架构和功能的概述:

c.与Event Hub的区别

首先IOT Hub与Event Hub一个非常明显的区别在于,Event Hub只能用来接收事件流,而IOT Hub支持双向通信(device to cloud和cloud to device):不仅可以接收来自设备端成千上万的数据,还可以自己发送指令/消息到设备端。

其次,Event Hub无法区分发送数据到云端的不同的设备,Event Hub无法感知到设备的存在,在IOT Hub中设备需要在云端注册,IOT Hub对设备进行身份管理和验证,比如设备重启,设备状态监控等等。基于IOT Hub对设备身份验证管理,IOT Hub可以对单个设备中断连接,而这一点Event Hub做不到(在Event Hub中所有的设备端都使用同一个连接字符串)。

最后,Event Hub只能允许并发5000个连接(基于AMQP协议),而IOT作为构建物联网的解决方案,允许上百万级别的设备连接数,从这个角度上来看,IOT Hub也更适合物联网解决方案。

更多关于IOT Hub和Event Hub的区别可以参考官方链接。

d.适用场景

用户可以使用IOT Hub构建典型的物联网解决方案,从而保证数百万的物联网设备和云端托管的后端应用之间实现安全、可靠的通信。

e.一些限制和说明

不同级别的IOT Hub限制说明是不一样的,这里我们以S1为例,设备的连接数每秒最多100个或者每unit最多为12这个,这两个标准都不可超。虽然cloud to device消息的限制为100/分钟/unit,但是每个设备上最多可以存储50个cloud to device的消息(消息在设备上以queue的方式存储)。

更多关于IOT Hub的一些限制说明可以参考官方链接。

在上篇和中篇我们分别对了消息/事件服务中五个服务做了介绍和对比,在下篇中我们继续对剩下的三种服务做介绍,其中Service bus Relay和Notification Hub相比较之前的五种服务有比较大区别,而Event Gird则又是Azure平台最新推出的一种Serverless服务,如果您对这个话题感兴趣可以在下篇中继续了解详细内容。

Azure 消息 & 事件服务的选择 – 中篇

上一篇:被AppStore拒绝上架的原因总结
下一篇:UI规范之iOS logo、启动图尺寸、AppStore上架图


版权声明:以上主题为“Azure 消息 & 事件服务的选择 – 中篇"的内容可能是本站网友自行发布,或者来至于网络。如有侵权欢迎联系我们客服QQ处理,谢谢。
相关内容
推荐内容
扫码咨询
    Azure 消息 & 事件服务的选择 – 中篇
    打开微信扫码或长按识别二维码

小提示:您应该对本页介绍的“Azure 消息 & 事件服务的选择 – 中篇”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通Azure 消息 & 事件服务的选择 – 中篇的相关事宜。

关键词:Azure,消息,&,事件服务的选

关于 | 业务 | 案例 | 免责 | 隐私
客服邮箱:sales@1330.com.cn
电话:400-021-1330 | 客服QQ:865612759
沪ICP备12034177号 | 沪公网安备31010702002418号