如何处理 Azure IoT 的多租户?

物联网 天蓝色
2021-06-20 04:40:47

我的公司正在使用 Azure IoT 服务,因此我的问题更具体地针对 azure IoT 云服务。

我的项目是关于将数据发送到 Azure IoT 中心的 Azure 领域,而 Azure 事件中心读取实时数据并将数据发布到中心实例(主题),这是一种开发仪表板的第三方技术,使用事件产生的数据中心。

假设我有 5 个客户,他们有物联网项目的需求(我的意思是这里的用例)。每个用例都不同,我的项目可以满足他们的要求。从架构的角度来看,我必须创建一个可以处理多租户环境的计划,以便这 5 个客户将看到相同的仪表板视图,但其中包含的数据将属于各自的租户。

我想到的几件事是:为单个租户创建单独的 IoT 中心,并根据消息的要求调整其中的单元。创建单个事件中心并调整吞吐量单位/分区并为每个租户创建每个中心实例(主题),并使用来自 IoT 中心的消息路由功能将消息路由到每个租户的中心实例。

这是一个好的解决方案,如果我采用上述方法,我会遇到什么困难?

对于这种情况,您会建议其他哪些架构?

就像所有租户的单 S3 层 IoT 中心和相同大小的事件中心(当然根据要求调整单位),但是我如何过滤租户特定的数据,以便每个租户只能看到他们的数据而不是其他租户的数据。

3个回答

要获得完整的多租户,您必须为每个客户创建一个特定的 IoT 中心实例,这将使您完全分离租户。这种方法的缺点是:

  • 定价 - IoT 中心的最小实例每天可以消耗 40 万条消息,因此如果您有发送较少消息的小租户,您将支付此开销。
  • DevOps - 每次为租户部署新的 IoT 中心时,您都必须配置警报、故障转移和监控设置。
  • 配置复杂性 - 您的 Azure Sphere 设备需要知道连接到基于租户的不同 IoT 中心。

另一种选择是使用一个 IoT 中心并使用它的路由功能根据某个租户 ID 路由到租户的事件中心。在这种方法中,您正在为所有租户使用共享资源,但会丢失数据分离,并且租户可能会影响其他租户数据流(如果某个租户发送大量数据,它可能会达到 IoT 中心限制并阻止其他租户)。

在 IoT 中心之前,我一直在 Azure 上构建 IoT 解决方案,并在过去几年中以各种不同的方式完成。所以这来自于以不同方式做事和从错误中学习的经验。

你没有说每个租户有多少设备/消息,但我假设它超过数百个设备。我的建议是每个租户都有一个完全独立的管道,从 IoT 中心一直到存储。然后多租户成为一个部署问题而不是架构问题。所述亲的完全分离的许多和初级CON资源浪费的(即可以在多租户环境中共享)通过使用的功能和类似的方法无效。所以问问你自己......如果在单租户或多租户环境中每条消息的处理成本(计算、存储)是相同的,那么通过多租户节省的成本在哪里?

在无服务器的云世界中,多租户唯一有意义的时间是租户非常小(每月数十美元),因此每个租户的部署成本对于租户的价值来说过高,而基础(空闲) ) 成本太高。如果你的目标是五个高价值客户,你就不会有这个问题。如果你认为你有成千上万的低价值客户,那么首先要证明这一点。

可以使用 Azure IoT 中心消息路由服务。消息路由支持将遥测数据从 IoT 设备发送到内置的事件中心兼容终结点或自定义终结点,例如 Blob 存储、服务总线队列、服务总线主题和事件中心。请检查更多信息(https://docs.microsoft.com/en-us/azure/iot-hub/tutorial-routing),以及路由查询的帮助(https://docs.microsoft.com/en- us/azure/iot-hub/iot-hub-devguide-routing-query-syntax)。