本帖最后由 keer_zu 于 2020-12-20 11:47 编辑
#申请原创# EdgeX Foundry出口客户注册微服务允许客户(无论是on-gateway还是off-gateway)注册为通过Core data的数据接收人。数据由传感器和设备发送到网络边缘,进入EdgeX Foundry。
然后数据通过EdgeX Foundry的设备服务层进入核心服务层的核心数据,然后数据通过消息队列汇集到一个出口设施。
导出工具由两个微服务组成:
- 一个微服务,使客户能够注册他们感兴趣的数据;
- 一个微服务,根据需要过滤和转换数据,然后物理地将数据获取到注册的客户端,称为Export Distro微服务
on-gateway客户端,包括本地分析服务、关键事件处理器、规则引擎服务等等。这些本地客户端通常需要根据所检查的数据通过命令微服务驱动回传感器/设备,因为它是通过出口设施接收的。
off-gateway客户端通常是企业和基于云的系统或聚合网关系统。这些系统通常是数据的历史存储库,也可能提供更深层次的分析能力。
客户端注册微服务提供了一个REST API,使客户端能够建立新的请求、更新现有的请求和删除对核心数据的请求。虽然没有直接关联到此服务的用户界面,但UI控制台和其他系统管理系统可以使用提供的api提供此功能。
数据模型:
数据字典:
此数据字典与用于导出服务分发的数据字典具有相同的内容。 Class Name | Descrption | EncryptionDetails | The object describing the encryption method and initialization vector. | ExportFilter | The object containing device and data filter information. | ExportMessage | The object containing the data from an Event sent by Export. | ExportRegistration | The object containing the reachability method and transport parameters for an Export client. | ExportString | The object sent to a registered Export client containing an Event. |
交互图
客户端注册细节:
客户端注册服务允许客户端提供关于他们想要数据的内容、方式和位置的一些详细信息。
客户端注册服务允许客户端提供关于他们想要数据的“what”、“how”和“where”的一些详细信息。
"what" data:
“what”指定数据的过滤器:过滤并只向客户端发送感兴趣的数据。默认情况下,所有通过核心数据的网关收集的数据都被发送到每个客户端。然而,现在的客户可以建立两个过滤器。
- 按设备ID或设备名称过滤。与客户端注册一起指定的设备id或设备名称的集合使客户端能够仅从这些设备和传感器获取数据。
- 根据值描述符ID或值描述符名称进行筛选。值描述符描述数据的类型和内容。例如,一个名为“温度”的值描述符将描述恒温器或其他温度读数数据。客户端注册时指定的值描述符id或名称的集合使客户端能够获得仅用这些值描述符标记的数据。
当注册时没有提供过滤器时,将所有数据转发给客户端。注册时提供的一个或两个过滤器,将发送给客户端的数据限制为与数据的设备组织或值描述符标签匹配的数据。
“How”是指数据传递格式
将数据传递给客户机的方式也由客户机注册决定。客户端可以请求以特定格式发送数据,对数据进行加密、压缩,或者同时加密和压缩。
- 格式 —— 支持JSON和XML可选
- 加密 —— 不加密或AES
- 压缩 —— 不压缩、GZIP或ZIP压缩可选
“Where” 指传递到何处EdgeX Foundry客户可以要求将数据推送到他们选择的端点。在注册时需要提供关于端点(URL、凭据等)的详细信息。EdgeX Foundry支持两种类型的目的地:推送到REST端点,或发布到指定的MQTT代理的主题。
REST端点传递必须提供其客户端注册:- REST address (URL and port)
- REST path
- POST HTTP method is assumed
- No reply is expected by the EdgeX Foundry services
MQTT端点传递必须提供其客户端注册:
- Broker address (URL and port)
- Client ID
- Username and password
- Destination topic
- QOS is assumed to be 0 and keepAlive time is assumed to be 60 seconds.
数据也可以通过Zero MQ发送到所选的0MQ端点,但这通常用于本地客户端接收端,例如本地规则引擎服务,而不是外部客户端。
|
@21ic小管家 费了些功夫,给个编辑推荐吧