系统架构

本文档介绍组成SiteWhere的组件以及它们之间的相互关系。

架构图

下图显示了主要的SiteWhere服务器组件以及它们如何与外部系统进行交互。



全局组件

如架构图所示,SiteWhere由许多不同的组件组成,这些组件通过连接在一起提供核心平台。在下面的章节中,我们将介绍系统全局的组件。所有租户都共享这些全球设置。

Web应用程序容器

sitewhere部署在apache-tomcat的web容器中,可以更改配置文件以更改SiteWhere处理设备事件并与外部服务集成的方式。

SiteWhere服务器

SiteWhere Server是控制所有其他SiteWhere组件的中央应用程序。它是从部署的WAR文件和使用位于conf / sitewhere / sitewhere-server.xml中的Spring配置文件的引导自动启动的服务器管理通用系统组件,如用户管理和REST服务。它还引导一个或多个处理大多数其他处理逻辑的租户引擎

行政申请

SiteWhere包含一个可用于管理系统功能的HTML5管理应用程序。出现在应用程序中的信息取决于提供的登录凭证和与该用户相关的权限。默认情况下,新的SiteWhere实例具有一个 具有所有权限并且与默认租户相关联的管理员用户。

REST服务

与SiteWhere API相关的大多数核心功能都可以通过REST服务从外部访问。使用这些服务,外部实体可以创建,查看,更新或删除系统中的实体。这些服务还可以与资产管理等子系统进行交互。所有REST调用都需要进行身份验证,并使用Spring Security来验证用户是否有权进行操作。

SiteWhere包含一个Swagger的工作版本,版本在REST服务周围添加了一个用户界面。使用Swagger接口,您可以针对正在运行的SiteWhere服务器交互式执行REST调用并查看JSON响应。服务器的默认Swagger URL是:

HTTP://sitewhere.hostname/sitewhere/

其中sitewhere.hostname是运行SiteWhere的服务器的主机名。


全局数据存储

在存储和检索数据时,SiteWhere从不直接处理数据库。相反,系统为它需要操作的数据操作定义服务提供者接口(SPI),并期望数据存储实现符合所需的接口用户管理数据存储在全局级别配置,并基于以下API:

IUserManagement:包含所有核心用户管理调用,包括用户,权限等的CRUD方法。

在配置新的SiteWhere服务器实例时,您可以更改核心Spring配置文件中的设置,以指示将哪种类型的数据存储用于基础数据实现。目前支持的数据存储类型包括MongoDB和Apache HBase。

Hazelcast服务

Hazelcast是一款内存数据网格,设计时考虑到了高性能。默认情况下,每个SiteWhere Server实例也充当Hazelcast实例。在默认的全局配置中,Hazelcast配置从conf / sitewhere / hazelcast.xml加载Hazelcast支持可以通过从配置文件中删除相应的条目来删除。

SiteWhere可以使用Hazelcast以交互方式将事件数据广播到其他感兴趣的系统。例如,Mule Studio的SiteWhere插件使用Hazelcast连接到SiteWhere服务器实例,并在事件发生时将事件拉入总线。然后可以使用Mule流逻辑处理事件,以便将事件数据与其他云系统集成或实时执行其他异步处理任务。通过调整SiteWhere服务器Hazelcast配置来限制对Hazelcast客户端的访问,以便例如只有特定IP范围内的机器才能接收事件数据。

租户组件

系统的大多数组件都按每个租户级别进行配置。这允许将数据和处理逻辑从一个租户清理到下一个租户。

租户引擎

SiteWhere(从版本1.2.0开始)被设计为多租户系统,这意味着可以从单个SiteWhere实例提供多个IoT应用程序。每个系统租户都有独立的数据存储,因此数据不会在租户之间混杂在一起。每个租户还有一个独立的处理管道,可以在不影响其他租户处理的情况下进行定制。当SiteWhere Server首次启动时,会根据在conf / sitewhere / tenant-template处找到的默认租户文件夹创建默认租户将包含配置的默认文件夹结构复制到位于conf / sitewhere / tenants / xxx的租户特定配置文件夹中,其中xxx租户的唯一标识。租户配置文件被命名sitewhere-tenant.xml并位于该文件夹的根目录中。更改租户的配置文件将改变该租户的处理逻辑。新的租户可以从SiteWhere管理应用程序添加。一旦创建,租户就可以动态地启动和停止,而无需关闭整个服务器。例如,要对一个承租人进行配置更改,它可能会关闭,重新配置并重新启动,而不会影响其他正在运行的承租人。

租户数据存储

与全局数据存储一样,租户数据存储配置SPI实现,以提供持久性租户级别信息,如设备和资产管理。实现的服务提供者接口包括

IDeviceManagement:包含所有核心设备管理调用,包括站点,规格,设备,事件等的CRUD方法。

IAssetManagement:包含所有核心资产管理调用,包括资产类别和资产的CRUD方法。

租户数据存储在conf / site / xxx-tenant.xml配置文件中进行配置(其中xxx 是租户ID)。

通信引擎

SiteWhere通信引擎处理与设备交互相关的所有功能。

链接:https://blog.csdn.net/orchidofocean/article/details/79540781

资产模块

SiteWhere资产代表物理世界中的物体 - 人物,地点和事物。设备规格资产用于描述某种设备的硬件信息/配置。设备分配资产用于描述与设备相关联的实体 - 与与位置跟踪器或与医院设备相关联的医院病房关联的徽章或推土机相关联的人员。

SiteWhere不是对系统中资产的模式进行硬编码,而是为一般资产类型定义SPI,并允许插入资产模块以提供资产定义。这使得现有的身份管理系统可用于提供可用人员资产列表。它还允许产品目录系统用于定义可用的硬件资产。SiteWhere以只读方式使用资产模块,并且仅基于底层资产模块所理解的唯一标识引用实体。维护可用资产列表留给资产模块背后的系统(它们通常具有特定于其提供的功能的用户界面)。

SiteWhere还提供驻留在SiteWhere数据存储区中资产类别的概念资产类别是指定类型资产的容器,可以在管理控制台中添加/编辑。资产类别在运行时作为资产模块加载,除了从其他资源(例如XML文件或第三方系统)加载的模块外,还允许从数据存储中提取资产。

对象模型

SiteWhere提供了一个全面的对象模型,用于捕获跟踪设备数据中所有各种概念之间的关系。下图显示了模型中的一些核心对象及其关系:



待续。。。




参考:http://documentation.sitewhere.io/architecture.html

Logo

开源、云原生的融合云平台

更多推荐