转载

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

在本系列的第 1 部分中,我们介绍了 Bluemix 中的 Internet of Things (IoT) Foundation 服务,以及它如何将 IoT 设备连接到云,使该设备能够利用丰富的云服务。然后,我们介绍了创建一个简单应用程序来捕获和公开 IoT 设备创建的数据的步骤。

如果您非常成功,并且想将 10 万多台设备连接到云,会发生什么?

第 1 部分也遗留了一个难题:如果您非常成功,并且想在短期内将 10 万多台设备连接到云,会发生什么?您如何处理该流量水平并扩展服务来满足该需求?这一期的文章将解决这个问题!

可伸缩性的架构原则的简要概述

在了解如何做之前,有必要知道一些架构原则,以便构建可正确扩展的 IoT 应用程序。不掌握此知识,就无法创建和维护企业级 IoT 应用程序。这些原则包括:

远程设备管理

如果无法远程管理 IoT 设备,那么您还没有开始就已经失败。出于某些原因,此能力必不可少,比如:

  • 在设备上更改/更新软件/固件的能力。如果设备代码中有一个错误或服务器地址发生更改,您是否希望手动连接到每个设备并执行必要的更改?如果有数十个或数百个以上的设备,此任务将不可能完成。
  • 从您的设备中获取诊断信息,了解它们的执行情况,并基于此反馈进行必要的调整。

自动扩展和负载平衡

在真实的环境中,设备数量以及这些设备传输的数据的数量和频率总在不停变化。要高效地响应应用程序的需求,最重要的是执行自动扩展和负载平衡来处理传输到它们的流量。

在添加和配置自动扩展服务之前,确保您知道横向扩展和纵向扩展之间的区别 - 理解二者对正确地扩展应用程序很重要。developerWorks 上的 在 IBM Bluemix 中扩展应用程序 是一篇关于该主题的优秀文章。

回页首

向应用程序添加自动扩展的步骤

现在应用程序已设置好,是时候将它扩展到企业级别了!在登录 Bluemix 帐户后,导航到 产品目录 ,向下滚动到“Dev Ops”部分并选择“Auto-Scaling”服务:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

您会看到一个屏幕,其中提供了该服务的基本信息,查看文档 (“View Docs”) 和词汇的链接,以及您想将此服务添加到何处:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

确保在“Add Service”窗格的“App”部分中选择了您创建的应用程序作为 IoT 应用程序(参阅第 1 部分 操作说明):

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

如果没有将此服务绑定到正确的应用程序,您的应用程序将无法随使用而增长,并会随着传输到您应用程序的流量增加而崩溃或性能变差。

单击“Use”按钮将该服务添加到您的应用程序,并在提示时重新载入您的应用程序,以便将此服务绑定到您的应用程序。在重新启动您的应用程序之前,该服务将无法绑定到该服务。在重新载入您的应用程序后,导航回您的仪表板,您会看到您的自动扩展服务已添加到您的帐户:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

在扩展应用程序之前,需要配置一条策略,自动扩展服务会根据您定义的参数使用该策略来进行纵向/横向扩展。单击自动扩展服务磁贴,并在随后出现的屏幕上选择您的应用程序。这会带您跳转到您的策略配置面板:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

单击‘Create Auto-Scaling Policy’按钮,您会看到您策略的三个主要类别 - Default Instance Limits、Scaling Rules 和 Schedule(s):

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

在调整这些设置之前,您需要知道,您创建的策略将会影响应用程序的成本。 Bluemix 定价工具 可帮助您估算这些成本,让您了解您即将创建的策略会给您的应用程序成本带来什么样的影响。

该策略的第一个类别设置了您想要允许的最少和最多服务器实例数量。这些是硬性限制,将覆盖其他所有策略设置:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

下一个类别是‘Scaling Rules’,它允许您根据某个指标类型(比如应用程序内存)设置一条或多条规则:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

点击查看大图

关闭 [x]

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

最后一个类别是‘Schedule(s)’,它允许您根据设置的天数和时间来调整服务器实例级别:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

在做出选择后,请保存您的策略,以便让其生效。为了简单起见,我不会详细介绍所有这些参数的含义和它们对扩展的影响;请访问 Auto-Scaling 服务入门 来了解更多的信息。

要了解您的策略的有效性,可以定期关注您的自动扩展服务中的‘Metric Statistics’和‘Scaling History’选项卡。您可以在这里看到您的应用程序的发展趋势并根据需要做出调整。

回页首

负载平衡和远程设备管理

负载平衡

只要您的应用程序拥有多个服务器实例,那么确保您的服务器上的网络负载保持平衡就变得至关重要,这样,在其他服务器只收到很少或未收到流量时,一个或多个服务器才不会过载。

设置正确的负载平衡可能是一个单调的过程,幸运的是此功能已内置到 Bluemix 中。它会接收网络流量并自动将它们分发到您的服务器实例,不需要您进行配置或监视。想想这一部分是怎么完成的!

远程设备管理

Andrew Schofield 撰写的优秀文章 设备管理现已在 IoT 中上线 全面介绍了该主题,所以我假设您已经阅读了这篇文章,并将关注点放在如何在您的设备上实现此服务上面。

您需要一个安装了设备管理代理(比如 Raspberry Pi、Arduino、Intel Edison 等)的 IoT 设备,这样此服务才能发挥作用。本系列第 1 部分中的简单应用程序和设备(智能电话)没有此特性,IoT 团队很快将发布用于 IoT 设备的设备管理的 SDK。在此之前,下一小节将总体概述如何管理您的设备。

回页首

管理设备的步骤

首先,在 Bluemix 中导航到您应用程序的仪表板,单击 IoT Foundation 的磁贴:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

这会跳转到 Bluemix 中的 IoT Foundation 服务页面。单击‘Launch Dashboard’按钮打开 IoT Foundation 仪表板和配置门户:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

进入该门户时,请选择‘Devices’菜单项并单击‘Browse’:

使用 Bluemix 上的 IoT 服务将连接到云的设备数量从 1 增加到 10 万多,第 2 部分

如果已正确配置您的设备,它将显示在此列表中(如果没有找到您的设备,请查看服务文档来排除您的问题)。单击该设备并向下滚动到‘Actions’部分。在这里,可以使用一些设备管理特性。一些特性在 IoT Foundation UI 中未受到支持,所以需要使用 RESTful API 代替。有关此服务的完整文档,请参阅 设备管理简介 (IBM Internet of Things Foundation)。

此服务非常新,而且在不断快速发展,所以请密切关注IoT Foundation 博客,了解最新状态和更新。

回页首

结束语

您现在已经掌握了将 IoT 应用程序和设备扩展到企业规模的知识。在未来的文章中,我们将利用 Bluemix 中的其他服务,通过 DevOps 和 Analytics 等服务让您的应用程序变得更强大、更健全。届时,您可以进行一些有益的尝试!

正文到此结束
Loading...