我有一个系统,该系统由连接到Arduino的3个传感器(温度,湿度,摄像头),1个云和1个手机组成。我开发了一个整体式物联网应用程序,该应用程序具有在这三个不同位置(Arduino,云移动)执行的不同任务。所有这些传感器都有共同的任务,包括:数据检测,数据传输(在Arduino上执行),数据保存,数据分析和数据通知(在云上),数据可视化(在移动设备上)。
这里的问题我知道微服务是独立的,并且具有数据库。如何使用微服务架构将该应用程序转换为一个应用程序?第一个想法是将每个任务表示为微服务。
首先,我将每个任务视为一个组件,并认为将每个任务表示为微服务,但它们是相互联系的。我的意思是上一个任务的输出是当前任务的输入,所以我不能这样,因为它们不是独立的。数据收集微服务的另一件事应该放在Arduino上,数据应该发送到云以存储在数据库中,因此这里有一个远程DB。对于数据收集,我与您有相同的想法,因为存在不同的事物(传感器),因此会有差异微服务,例如(温度数据收集,相机数据收集...)。
答案 0 :(得分:0)
首先让我澄清一个困惑:当我们说微服务是独立的时,我们如何设计一个微服务,其中前一个任务的输出将输入下一个任务。
首先,当我们说微服务时,这意味着它可以独立部署和管理,但是像在任何系统中一样,微服务之间也存在依赖关系。您可以阅读有关reactice微服务的信息。
因此,您可以拥有彼此依赖的微服务,但我们希望这些依赖最小。
现在让我们了解在进行微服务时希望采用的好处(这将有助于回答您的问题):
可独立部署的组件(可提高部署速度)-在任何大型应用程序中,都有彼此相对独立的组件,因此如果我想在一个组件中进行更改,我应该确信另一个组件不会受到影响。如果是单片,那么对二进制的影响会很大。
可独立扩展-差异组件需要差异。规模,我们可以有差异。数据库类型和机器要求。
微服务架构带来了各种各样的开销(请在此处详细介绍,在线阅读这些内容)
我们现在将讨论这种方法
由于数据收集独立于如何进行何种分析。我将在云上安装一个DataCollectionService(从所有传感器收集数据,如果这些数据是完全独立的,我们将为差异传感器创建差异。)
DataAnalysis作为单独的服务(需要了解有关如何收集数据的知识,例如使用mqtt,webscoket,定期或分批或其他方式收集数据)。该服务需要数据,并会对其进行操作。
通知服务
DataSendClient:一些将数据发送到数据收集服务的客户端。