多租户 - Azure IoT 客户是不是应该共享一个中心?

Posted

技术标签:

【中文标题】多租户 - Azure IoT 客户是不是应该共享一个中心?【英文标题】:Multitenancy - should Azure IoT customers share a hub?多租户 - Azure IoT 客户是否应该共享一个中心? 【发布时间】:2019-09-19 11:48:20 【问题描述】:

我正在构建一个 Azure IoT 中心应用程序。我有几个客户。您认为所有这些客户都应该连接到同一个集线器还是不同的集线器?

如果这是可能的,那么这种多租户如何工作,以使客户(租户)不会在同一个集线器上看到彼此的数据?

最后,您是否需要为每个新的 IoT 中心付费? (在这种情况下,考虑在客户之间共享一个可能是个好主意)

【问题讨论】:

这真的取决于数据被处理以及由什么处理。定价可以在 azure 文档网站上找到。 我找不到任何(好的)文档来说明如何将许多客户连接到单个 Azure IoT 中心。你知道吗? 您可以使用客户 ID 作为分区键。但是你是否真的需要将它们分开取决于你对传入数据的处理。 【参考方案1】:

单个集线器就足够了,但是应该有必要的规定来确保您没有达到集线器中允许的最大消息,因为 IoT 集线器 SKU 大小是根据消息数量定义的 https://docs.microsoft.com/en-in/azure/iot-hub/iot-hub-scaling?branch=release-iotbasic

对于单个集线器,您的应用程序中还需要一个几乎接近时间的限制功能,这样一个 rouge 设备就不会吃掉 IotHub 单元允许的最大消息。

“如果这是可能的,那么这种多租户如何运作? 客户(租户)不会看到彼此的数据 同一个枢纽?”

消息可以包含 TenantId(请查看 https://azure.microsoft.com/en-in/blog/azure-iot-hub-message-enrichment-simplifies-downstream-processing-of-your-data/),这将区分来自每个租户的消息。自定义解决方案需要根据 Tenantid 或 DeviceId 过滤它,这在 IoTHub 中的每个租户中都是唯一的。您可以拥有在 IoTHub 中注册设备后,在 DeviceTwins 中添加 TenantId,以便帮助识别与设备关联的 Tenantid。

【讨论】:

谢谢。我的公司需要我建立一个管理网站,您可以在其中查看所有物联网设备,监控它们的属性并设置它们的属性。我不打算发送任何消息。设备将能够将报告属性中的更改发送到 IoT 中心。因此,设备和我的自定义 Web 都将更改设备孪生属性,而不是真正发送我认为物联网所谓的“消息”。在这种情况下,所有设备双胞胎的“标签”中都有“客户”之类的东西可能是最好的。这足以启用多租户吗? 您可以在 Devicetwin 中有一个标签,也可以是一个单独的表(如果配置表则为种类),它映射每个租户的设备。然后您可以确保来自您网站的调用首先查询此表以过滤设备vs 租户映射。

以上是关于多租户 - Azure IoT 客户是不是应该共享一个中心?的主要内容,如果未能解决你的问题,请参考以下文章

多租户实现之基于MybatisMycat的共享数据库,共享数据架构

多租户实现之基于Mybatis,Mycat的共享数据库,共享数据架构

是否可以为 azure IoT hub 提供静态入站 IP 地址

共享多租户 MySQL 数据库的可扩展性

多租户应用程序中的 Azure DocumentDB 用户

在多租户应用程序中如何检查应用程序在 Azure 门户中注册的租户数据?