- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我要创建 IoT 中心时,Azure 平台会请求 IoT 中心的分区数量。我已阅读有关此主题的分区 purpose of Azure iot hub device-to-cloud partitions但我不明白消费者组和分区之间有什么关系,和数据的读取有什么关系。
最佳答案
分区主要是为了支持扩展。默认行为是发送到集线器的消息被划分到这些分区上。
假设我们有 4 个分区 (1-4),其中包含一些消息 (A-L):
分区 1:A、E、I
分区 2:B、F、J
分区 3:C、G、K
分区 4:D、H、L
我们还定义了 2 个消费者组:C1 和 C2。如果您启动一个进程来从中心读取消息,则您可以定义一个消费者组(如果没有,则使用默认的消费者组)。
因此,让我们有 2 个读取器,其中一个 (R1) 配置为使用 C1 读取,另一个 (R2) 配置为使用 C2 读取。
两个读者都可以访问相同的分区和消息。但两者都有自己的进度跟踪器。 这是重要的部分!
在实际场景中,您可能有一个数据流,让我们假设日志消息。要求是所有日志消息都必须写入数据库,并且一些具有较高日志级别的消息需要使用短信作为高优先级警报发送。如果您只有一个消费者组(C1,由 R1 读取),则所有消息最终都会被处理。但是,如果数据库写入速度很慢,很可能是在传递消息和处理消息之间需要一些时间。
现在,如果我们有 2 个消费者组,该消费者组 (C2) 的读取器 (R2) 可以跳过所有低日志级别消息,只处理要使用 SMS 发送的关键消息。该读取器将比需要将所有消息写入数据库的读取器更快地浏览所有消息。
TL;DR:多个消费者组可用于将慢速流处理器与更快的流处理器分开。每个消费者组都会在流中跟踪自己的进度。
所以最终的进展可能是这样的:
消费者组1(进行一些耗时的处理)
分区 1:A、E、I
分区 2:B、F、J
分区 3:C、G、K
分区 4:D、H、L
消费者组 2(进行一些快速消息处理)
分区 1:A、E、I
分区 2:B、F、J
分区 3:C、G、 K
分区 4:D、H、L
其中粗体字符表示已处理的消息。
编辑
如果我在同一个消费者组中有两个读者,每个读者都有自己的进度还是每个消费者组都有进度?
每个读取器通过消费者组连接到事件中心分区,进度存储在每个消费者组的每个分区上。因此,从某种意义上说,读取器有自己的进度,但读取器是短暂的,连接到同一分区的读取器的新实例将继续前一个读取器离开的位置。
关于azure - Microsoft Azure Iot Hub 中的分区有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51287824/
这是 Controller 方法,它接收应该被踢出的userName。 public ActionResult Kick(string userName) { var h
ASP.NET SignalR Hubs API 指南 - 服务器 ( https://learn.microsoft.com/en-us/aspnet/signalr/overview/guide-
我知道程序以及如何从 GitHub 或 BitBucket 配置自动化 docker hub。 但是我现在要做的是创建两个名为 Test/main 的 docker hub 存储库。和 Test/de
这是场景: Device1同时发送两条iothub D2C消息: 这会将标志设置为 true 这会将标志设置为 false 物联网消息路由将消息路由到 eventhub,这将触发 EventHubTr
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我是 selenium 的新手,我一直在尝试启动 Selenium Hub 并使用 java 将节点添加到 Hub。我已使用命令提示符启动它,但我希望它自行发生。我能够启动 Hub,但不知道如何添加节
我正在使用 SignalR 项目,我想在 WebApi 项目和 Web 项目中使用 Hub。所以我创建了一个类库项目并在那里实现了 Hub。 我的项目结构如下: -ChatHub -Hub -We
在开始之前,我想提一下,这并不完全是重复的,其他类似的问题对我的情况没有任何有用的答案。 在我的 ASP.Net Core 2.1 中,我有一个可以使用 AJAX 调用的操作(它的名称是 Create
我得到以下堆栈跟踪: { “状态”:13 “值(value)”: { “class”:“java.lang.NullPointerException”, “堆栈跟踪”: [ { “fileName”:
这是我当前的设置: 从 Bitbucket 获取存储库 使用 Amazon Linux 2 AWS 托管镜像构建 docker 镜像 将图像推送到 ECR 我现在有时会在 docker 构建阶段收到
我开发了一个 PDF Converter / Viewer for Windows Phone 7 , 但除非它可以从某处获取源文件(Word、Excel、PowerPoint 等),否则它毫无用处。
在 ASP.Net MVC 5 项目的根目录中创建 SignalR 2 Hub 类工作得很好。您可以访问 ~/signalr/hubs url 并返回代理。您还可以将该类放在名为 Hubs 或类似名称
我正在从我的工作站测试 ML DHF Quickstart Hub,并且可以很好地连接到 MarkLogic 的本地实例。但是当我创建一个新的环境 gradle-DEV.properties 文件并尝
我想监视来 self 的应用程序的一些事件。 一种选择是将数据发送到 Azure 事件中心并使用流分析进行一些后处理并将数据输入到 cosmos db 中。 另一个选项是从应用程序存储到 cosmos
我想监视来 self 的应用程序的一些事件。 一种选择是将数据发送到 Azure 事件中心并使用流分析进行一些后处理并将数据输入到 cosmos db 中。 另一个选项是从应用程序存储到 cosmos
(我是 Signalr 新手) 我正在开发一个 Web 应用程序,它使用 Signalr-core 来实时更新页面。 我遇到的问题是,当我运行多个客户端时,我正在运行的方法将同时运行与客户端数量一样多
我是 SignalR 库的新手。我在 VS2010 中创建了一个新的 Web 项目,然后在包管理器控制台中我执行了以下命令来设置 SignalR 包。 PM> Install-Package Micr
我将我的Docker镜像标记为foo/foo:latest 当只有一张图片时,可以做docker push 但是由于我总是将它们标记为foo/foo:latest,所以我想知道是否可以上传不是最新生成
我有一个容器,我想对其进行更改。 它托管在docker hub上,我想更改其命令之一以安装其他应用程序。 我可以在docker hub中看到各个步骤,但不能看到dockerfile本身(不确定原因)。
我正在尝试找到一种方法,可以在短时间内将100幅图像推送到Docker集线器。有没有更好,更有效的方法来做到这一点? alpine:1.0.0.0 alpine:2.0.0.0 . .. ... al
我是一名优秀的程序员,十分优秀!