JetLinks 物联网基础平台 1.7 RELEASE 发布
JetLinks 开源物联网平台
JetLinks 基于Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等开发, 是一个开箱即用,可二次开发的企业级物联网基础平台。平台实现了物联网相关的众多基础功能, 能帮助你快速建立物联网相关业务系统。
#核心特性
完全开源(社区版免费),基于事件驱动,拓展性强.
支持统一物模型管理,多种设备,多种厂家,多种报文,统一管理。
统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议的设备。
灵活的规则引擎,设备告警,消息通知,数据转发,场景联动.
强大的ReactorQL引擎,使用SQL来处理实时数据.可拓展自定义函数.
地理位置:统一管理地理位置信息,支持区域搜索.
灵活的非侵入多租户数据权限控制.
官方QQ群: 2021514
在线演示地址: http://demo.jetlinks.cn (opens new window)用户名:test 密码: test123456.
#技术栈
- Spring Boot 2.3.x(opens new window)
- Spring WebFlux (opens new window)响应式Web支持
- R2DBC (opens new window)响应式关系型数据库驱动
- Project Reactor (opens new window)响应式编程框架
- Netty (opens new window),Vert.x (opens new window)高性能网络编程框架
- ElasticSearch (opens new window)全文检索,日志,时序数据存储
- Redis (opens new window)Redis,设备配置,状态管理,缓存.
- PostgreSQL (opens new window)业务功能数据管理
- hsweb framework 4 (opens new window)业务功能基础框架
#架构
#设备接入流程
1.7 版本更新记录
- 优化设备配置定义,可以指定配置作用域(单独设置产品的配置或者设备的配置),见
DefaultConfigMetadata.add方法. - 设备标签查询(
id$dev-tag)支持表达式:tag1=value1 and tag2=value2(没有sql注入,放心使用). - 增加支持数据库维护产品分类.
- 优化拉取固件升级逻辑,使用
headers.force标记是否强制拉取固件,使用headers.latest标记是否拉取最新的固件信息. (Pro) - 优化设备消息转发逻辑,在
headers中增加members,标记此设备所属的用户id.(需要重新激活设备) (Pro) - 优化告警推送逻辑,解决租户添加了告警通知时,无法订阅新添加的设备告警问题.(Pro)
- 增加
Headers.mergeLatest消息头,设备属性相关消息设置此头,将合并旧的属性数据到消息中.(此操作会降低系统吞吐量)(Pro) - 修复集群下,修改物模型后其他节点不会生效问题。
- 优化设备指令下发,指令消息ID和设备id进行绑定防止重复。
- 事件总线集群通信增加RSocket支持以提升性能,通过配置
jetlinks.event-bus.roskcet.enabled开启.(Pro) - ReactorQL增加
_window_until和_window_until_change函数.(Pro) - 优化事件总线性能,在使用
TopicPayload后需要手动调用release()释放资源. - 优化
设备数据行式存储策略:取消存储propertyName,formatValue字段,influxdb下只存储numberValue,timeValue,value. - 优化物模型拓展信息配置,可在协议包中
support.setExpandsConfigMetadata来指定配置(需要升级jetlinks-core 1.1.4) - 增加内存使用检查,当内存使用剩余低于15%时,丢弃请求防止内存溢出导致系统崩溃.可通过启动参数
-Dmemory.waterline=0.15进行配置.(Pro) - 优化
elasticsearch和influxdb写入策略,丢弃无法写入的Buffer防止内存溢出.(Pro) - 优化设备网关消息处理逻辑、优化子设备上线处理逻辑、优化自注册逻辑、离线消息无论设备是否已经离线,事件总线都将会收到消息.
- 优化
influxdb查询条件的类型转换,修复如果使用数字作为设备id,无法查询到数据.(Pro) - 设备数据转发到机构topic中
/org/device/**,可通过headers.orgId获取当前设备机构ID。(需要再次激活设备). - 可通过
DeviceMessage.addHeader("ignoreLog",true)指定不记录此消息日志.

