将物联网应用程序从单一服务转变为微服务

时间:2018-11-15 00:01:19

标签: microservices iot

我有一个系统,该系统由连接到Arduino的3个传感器(温度,湿度,摄像头),1个云和1个手机组成。我开发了一个整体式物联网应用程序,该应用程序具有在这三个不同位置(Arduino,云移动)执行的不同任务。所有这些传感器都有共同的任务,包括:数据检测,数据传输(在Arduino上执行),数据保存,数据分析和数据通知(在云上),数据可视化(在移动设备上)。

这里的问题我知道微服务是独立的,并且具有数据库。如何使用微服务架构将该应用程序转换为一个应用程序?第一个想法是将每个任务表示为微服务。

首先,我将每个任务视为一个组件,并认为将每个任务表示为微服务,但它们是相互联系的。我的意思是上一个任务的输出是当前任务的输入,所以我不能这样,因为它们不是独立的。数据收集微服务的另一件事应该放在Arduino上,数据应该发送到云以存储在数据库中,因此这里有一个远程DB。对于数据收集,我与您有相同的想法,因为存在不同的事物(传感器),因此会有差异微服务,例如(温度数据收集,相机数据收集...)。

1 个答案:

答案 0 :(得分:0)

首先让我澄清一个困惑:当我们说微服务是独立的时,我们如何设计一个微服务,其中前一个任务的输出将输入下一个任务。

首先,当我们说微服务时,这意味着它可以独立部署和管理,但是像在任何系统中一样,微服务之间也存在依赖关系。您可以阅读有关reactice微服务的信息。

因此,您可以拥有彼此依赖的微服务,但我们希望这些依赖最小。

现在让我们了解在进行微服务时希望采用的好处(这将有助于回答您的问题):

  1. 可独立部署的组件(可提高部署速度)-在任何大型应用程序中,都有彼此相对独立的组件,因此如果我想在一个组件中进行更改,我应该确信另一个组件不会受到影响。如果是单片,那么对二进制的影响会很大。

  2. 可独立扩展-差异组件需要差异。规模,我们可以有差异。数据库类型和机器要求。

微服务架构带来了各种各样的开销(请在此处详细介绍,在线阅读这些内容)

我们现在将讨论这种方法

  1. 由于数据收集独立于如何进行何种分析。我将在云上安装一个DataCollectionService(从所有传感器收集数据,如果这些数据是完全独立的,我们将为差异传感器创建差异。)

  2. DataAnalysis作为单独的服务(需要了解有关如何收集数据的知识,例如使用mqtt,webscoket,定期或分批或其他方式收集数据)。该服务需要数据,并会对其进行操作。

  3. 通知服务

  4. Arduino上的
  5. DataSendClient:一些将数据发送到数据收集服务的客户端。