标签:COMMENT Core 12 4.1 IOT 缓存 NULL id gmt
1. 背景(应用名:Dike)
资源受限或者对网络流量有要求的设备,不适合在设备端构造JSON数据与IoT物联网平台通信,设备可将原始数据直接上报到物联网平台。物联网平台将设备原始数据转换成结构化的JSON格式,方便云上业务系统存储和使用。
2. 方案
2.1 通用数据解析
压缩/解压缩,payload协议转换
2.2 基于模型的数据解析
基于自定义数据模型
基于设备模型
3. 设计
3.1 数据流
3.2 活动图
3.3 时序图
3.3.1 创建透传topic和脚本
3.3.2 上报数据时执行通用数据解析
3.3.3 上报数据时执行脚本解析
3.3.4 数据解析后下发
4. 实现
4.1.1 脚本引擎:
Java: Rhino/Nashorn
Go: V8
4.1.2 文件存储:
远程:
本地/tmp:uri
4.1.3 识别需要解析的数据:
自定义Topic:
Product tag + Topic:
raw_up, raw_down
4.1.4 脚本规范:
rawToModel(byte[] raw)
modelToRaw(String json)
大小限制:16K
4.1.5 数据模型:
CREATE TABLE `script_meta_data` (
`id` bigint(18) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
`code` varchar(36) NOT NULL COMMENT '脚本编号',
`biz_type` varchar(36) NOT NULL COMMENT '脚本业务类型',
`lang_type` varchar(32) NOT NULL COMMENT '脚本语言类型',
`tenant_id` varchar(32) NOT NULL COMMENT '租户id',
`status` tinyint(4) unsigned NOT NULL COMMENT '脚本状态',
`is_deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否删除:1已删除 0未删除',
`version` bigint(13) NOT NULL DEFAULT '0' COMMENT '数据版本',
`gmt_create` bigint(13) unsigned NOT NULL COMMENT '创建时间',
`gmt_modified` bigint(13) unsigned NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `unq_code` (`code`),
KEY `idx_gmt_modified` (`gmt_modified`),
KEY `idx_gmt_create` (`gmt_create`)
) ENGINE=InnoDB AUTO_INCREMENT=237 DEFAULT CHARSET=utf8mb4 COMMENT='脚本元数据表';
4.1.6 性能:
本地缓存+redis
缓存脚本元数据:缓存key=(script_id);
缓存脚本内容: 缓存key=(script_id); 启动时预加载预热;
缓存计算结果:script function 确定性,缓存key=(script_id+ params);
4.1.7 API:
略
标签:COMMENT,Core,12,4.1,IOT,缓存,NULL,id,gmt 来源: https://blog.csdn.net/QQsilhonette/article/details/113832581
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。