You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
255 lines
9.5 KiB
255 lines
9.5 KiB
3 years ago
|
|
||
|
|
||
|
## 后端整体架构设计
|
||
|
|
||
|
感知平台后端整体架构设计如图所示
|
||
|
|
||
|
![image-20210809153536503](imgs/飞尚物联/image-20210809153536503.png)
|
||
|
|
||
|
保留现有采集控制模块(DAC),然后将以DAC采集的数据以及其他相关的感知数据,存储到数据湖中,这部分数据一般是原始的采集指纹,我们对数据的采集频率和数值不做改动。ETL是后续数据处理流程,将原始数据转换为业务感知数据,即用户期望的数据格式,是一种半结构化的数据。感知平台将其持久化在存储媒介上,同时使用消息规则引擎,可以将数据推送到任意地方。感知平台还提供一部分的数据可视化分析功能。
|
||
|
|
||
|
目前,从技术上选型主要是用来`Apache Flink`和 `Apache IceBerg` 两个框架。Flink主要提供流式计算和批量聚合能力,IceBerg数据湖应用主要用于保存原始数据。技术框架整体的应用如下图:
|
||
|
|
||
|
![image-20210811114005563](imgs/飞尚物联/image-20210811114005563.png)
|
||
|
|
||
|
### ETL流程说明
|
||
|
|
||
|
我们着重于拓展ETL进程的功能,新增包括数据入湖、钩子接口、脚本化计算等功能,增强ETL的可扩展性。ETL的设计如下:
|
||
|
|
||
|
|
||
|
|
||
|
![image-20210811092806946](imgs/飞尚物联/image-20210811092806946.png)
|
||
|
|
||
|
我们引入[IceBerg](https://www.sohu.com/a/403477409_411876)数据湖方案,它支持Table Schema表格式定义,以及快速的upsert/delete操作,并支持ACID原子性语义保证。基于现有的HDFS分布式文件存储底层,打造存储设备采集结果的数据湖。IceBerg支持Streaming和Batch增量数据流接口,并可以和Flink流式计算框架很好的集成。
|
||
|
|
||
|
另外,数仓方面,依然采用ElasticSearch这个NoSql数据库,主要目的是保留目前技术栈,依赖其开箱即用分布式能力、高性能检索能力。另外日志这种需要全文检索的数据,也是储存在ElasticSearch中。
|
||
|
|
||
|
流程方面,采集数据通过kafka通道,进入ETL。这里的采集数据应该包括设备数据以及状态数据,经过ETL的Parse模块解析提取后,输出至ICEBERG的数据湖中,后面的流程基本跟原ET处理流程一致,经过计算(Map)和过滤(Filter),然后将感知数据存储至ElasticSearch中。这里保留Aggregation(RT)实时聚集功能,是为了得到近实时的增量聚合数据。最终,经过实时计算处理后的数据,输出到消息管道(Kafka)中。
|
||
|
|
||
|
其中相关进程模块说明如下:
|
||
|
|
||
|
> + Parse 数据解析
|
||
|
> + Map 数据计算转换
|
||
|
> + Filter 合理值过滤、数据降噪
|
||
|
> + Storage 存储到数据仓库(ElasticSearch)
|
||
|
> + Aggregation(RT) 实时增量聚合
|
||
|
> + Aggregation 定时聚合方法
|
||
|
|
||
|
|
||
|
|
||
|
告警保留原来的处理流程,如下图所示
|
||
|
|
||
|
![image-20210811105044185](imgs/飞尚物联/image-20210811105044185.png)
|
||
|
|
||
|
在解析提取(Parse)阶段,将告警原数据保存到数据湖。(这里保存的告警原数据,应该类似告警数据中详情数据,包含设备采集返回的错误码信息和错误内容)
|
||
|
|
||
|
后续步骤,跟原告警处理流程一致。该平台只保留Analyzer模块中阈值判断类数据告警,并提供业务钩子函数或脚本化功能,用户可以根据自己需求做定制。
|
||
|
|
||
|
|
||
|
|
||
|
### 钩子接口
|
||
|
|
||
|
为方便业务应用扩展,我们在ETL流程中增加部分hook接口(类似RPC的调用,用户可以实现自己的`FaaS`,提供函数计算服务,通过配置实现到自己的业务流程中),以及通过脚本化方式扩展部分功能。接口钩子和脚本化调用主要包含在ETL中如下位置:
|
||
|
|
||
|
![image-20210811134932722](imgs/飞尚物联/image-20210811134932722.png)
|
||
|
|
||
|
位置说明:
|
||
|
|
||
|
> Hook 1 : Custom Map 扩展计算方法。
|
||
|
>
|
||
|
> Hook 2: Custom Filter 扩展过滤方法。
|
||
|
>
|
||
|
> Hook 3: Custom Before Storage 扩展后续计算。经过平台计算和过滤的数据,在存储前,可扩展业务计算。
|
||
|
>
|
||
|
> Hook 5: Custom Analyze 扩展告警判断。生成自定义告警
|
||
|
>
|
||
|
> Hook 6: Custom Deliver 扩展告警内容,在告警内容分发之前
|
||
|
>
|
||
|
> Scripts A: 脚本实现协议解析
|
||
|
>
|
||
|
> Scripts B: 脚本实现公式计算
|
||
|
|
||
|
|
||
|
|
||
|
### 视频
|
||
|
|
||
|
视频数据相对独立于传统设备数据。服务端只需提供数据推流服务拉取远端NVR,向前端推送RTMP协议的视频流数据。
|
||
|
|
||
|
将安心云平台的视频配置(NVR设置、摄像头配置)作为设备的一部分(特殊设备),在感知平台进行配置。
|
||
|
|
||
|
|
||
|
|
||
|
### 监控运维
|
||
|
|
||
|
感知平台扩展监控内容,除了设备接入,将感知过程中的数据、事件、状态,记录到 Promethus。这边的功能点可以参考:
|
||
|
|
||
|
+ 实时监控:数据指标、网络状态。
|
||
|
|
||
|
+ 运维大盘:显示设备创建数、激活、在线、活跃设备数(周统计和周同比)
|
||
|
|
||
|
+ 在线调试:需要设备在线,包括属性调试、服务调用、远程登录。
|
||
|
|
||
|
+ 设备模拟器:模拟数据调试
|
||
|
|
||
|
+ 日志服务:云端运行日志、设备本地日志、日志转储
|
||
|
|
||
|
+ OTA升级和远程配置
|
||
|
|
||
|
|
||
|
|
||
|
### 规则引擎、流程和联动*
|
||
|
|
||
|
> '*' 试验性功能,需进一步探索实现可能性
|
||
|
|
||
|
在以太规则基础上,增加数据源,包含ET计算后的感知数据和聚合数据,同时扩展输出方式。
|
||
|
|
||
|
探索流程引擎在数据流程控制中应用,使业务数据可以走ETL流程之外的自定义流程。
|
||
|
|
||
|
场景联动,通过数据/告警消息,触发动作执行:反向控制、告警输出、数据推送等。
|
||
|
|
||
|
|
||
|
|
||
|
## 功能设计和实现方案
|
||
|
|
||
|
### 一) 功能整合
|
||
|
|
||
|
梳理物联网感知平台的功能包含如下(具体参见《物联网接入服务架构思路》)
|
||
|
|
||
|
> + 数据接入
|
||
|
> + 产品定义
|
||
|
> + 协议开发
|
||
|
> + 设备管理
|
||
|
> + 部署
|
||
|
>
|
||
|
> + 感知转换
|
||
|
> + 感知模型
|
||
|
> + 提取转换加载ETL
|
||
|
> + 数据聚合、清洗
|
||
|
> + 数据服务
|
||
|
> + 数据存储
|
||
|
> + 告警服务
|
||
|
> + 其他:视频、可视化
|
||
|
|
||
|
|
||
|
|
||
|
整体平台的架构基础,即实现两个平台感知能力的整合。以太的所有功能加上安心云的部分功能组合:
|
||
|
|
||
|
![image-20210809155449209](imgs/飞尚物联/image-20210809155449209.png)
|
||
|
|
||
|
设计飞尚物联平台架构,主要分以下几个步骤:
|
||
|
|
||
|
#### 第一步:Fork以太
|
||
|
|
||
|
沿用现在以太的代码,在此基础上开发。
|
||
|
|
||
|
代码层关于以太、iota等标签不需要改动,可沿用iota作为基础命名空间或关键词前缀。
|
||
|
|
||
|
UI层可做简单处理,包括登录页定制和logo替换、copyright修改等。
|
||
|
|
||
|
以下是以太目前服务列表(第三方基础服务设施未列出),本平台需要保留。
|
||
|
|
||
|
| 服务名称 | 描述 | |
|
||
|
| ------------------- | ------------------- | ---- |
|
||
|
| iota-alert-server | 以太告警服务 | |
|
||
|
| iota-api | 以太console端WEBAPI | |
|
||
|
| iota-background | 以太admin端WEBAPI | |
|
||
|
| iota-dac | 以太采集服务 | |
|
||
|
| iota-dac-test | 以太DAC协议测试服务 | |
|
||
|
| iota-message-center | 以太消息中心 | |
|
||
|
| iota-orchestrator | 以太DAC编排器 | |
|
||
|
| iota-proxy | 以太接入网关代理 | |
|
||
|
| iota-rules-engine | 以太规则引擎 | |
|
||
|
| iota-web | 以太Console端 | |
|
||
|
| iota-web-background | 以太Admin端 | |
|
||
|
| | | |
|
||
|
|
||
|
|
||
|
|
||
|
#### 第二步:安心云服务选取/改造
|
||
|
|
||
|
安心云平台部分服务(主要是后端服务)和前端功能需要整合到新的感知平台,梳理其中应该包含的后端服务:
|
||
|
|
||
|
| 服务名称 | 描述 | |
|
||
|
| -------------- | ------------------------ | ---- |
|
||
|
| et | 数据ETL进程 | |
|
||
|
| alarm | 告警进程 | |
|
||
|
| aggregation | 聚集计算 | |
|
||
|
| config-center | 配置同步redis | |
|
||
|
| et-hdfs | HDFS数据文件转储进程 | |
|
||
|
| et-recalc | 重计算进程 | |
|
||
|
| deliver | 邮件短信推送服务 | |
|
||
|
| weather | 天气服务 | |
|
||
|
| pyrpc | 计算服务(python rpc服务) | |
|
||
|
| *report-master | 报表调度服务(暂定) | |
|
||
|
| *report-client | 报表生成服务(暂定) | |
|
||
|
| | | |
|
||
|
|
||
|
**改造:**安心云的服务端进程中,遗留部分业务逻辑代码,需在整合过程剔除。详见《[ET中业务专有代码]()》
|
||
|
|
||
|
|
||
|
|
||
|
整体的进程服务组织大致如下图:
|
||
|
|
||
|
![image-20210811110035960](imgs/飞尚物联/image-20210811110035960.png)
|
||
|
|
||
|
|
||
|
|
||
|
#### 第三步:模型定义+数据库整合 + 数据湖定义
|
||
|
|
||
|
感知模型定义,数据库表格设计。
|
||
|
|
||
|
数据湖Schema定义;
|
||
|
|
||
|
Flink结合IceBerg作入湖操做;
|
||
|
|
||
|
|
||
|
|
||
|
### 二) 扩展接口
|
||
|
|
||
|
主要包括两种方式的功能扩展方法:
|
||
|
|
||
|
1. 定义数据接口:通过rpc方式调用
|
||
|
2. 通过脚本语言交互
|
||
|
|
||
|
|
||
|
|
||
|
### 三) 功能优化
|
||
|
|
||
|
设备协议解析优化:
|
||
|
|
||
|
1. 定义平台标准通用mqtt-json格式。实现标准java-sdk库作设备上的开发套件
|
||
|
|
||
|
2. 可选标准协议(modbus)
|
||
|
|
||
|
3. 可视化协议组件(协议组成选取指定类型解析、json格式字段映射配置)
|
||
|
|
||
|
4. 扩展目前支持的脚本类型
|
||
|
|
||
|
规则引擎扩展:
|
||
|
|
||
|
1. 数据源扩展
|
||
|
2. 输出方式扩展
|
||
|
3. 扩展HTTP/MQTT输出规则的内容格式定义
|
||
|
|
||
|
场景联动:
|
||
|
|
||
|
1. 定义数据联动规则
|
||
|
|
||
|
2. 触发能力接口
|
||
|
|
||
|
3. 触发告警调用
|
||
|
|
||
|
简化设备接入:
|
||
|
|
||
|
1. 接入demo示范
|
||
|
2. 接入流程向导指引
|
||
|
|
||
|
|
||
|
|
||
|
### 系统设计原则
|
||
|
|
||
|
简+
|
||
|
|
||
|
易扩展性+
|
||
|
|