当前位置: 首页 > news >正文

对接多个 Neuron 实例,实现多网关协同分析与设备联动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxTiQ9Lw-1680846960656)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\对接多个 Neuron 实例,实现多网关协同分析与设备联动 图1.png)]

3 月份,eKuiper 团队主要进行了 1.9.0 版本的开发,增加了一些重要的功能,进一步提高了 eKuiper 的性能和可用性:

  1. IO Connectors 增强。新增了多 Neuron 连接的功能;在 HTTP 连接方面,我们提供了类 oAuth 的基于动态 token 的鉴权过程的支持;此外还支持了 MQTT 连接中压缩和解压,减少边云传输的带宽损耗。
  2. 分析能力增强。我们添加了许多新的转换函数,包括 JSON 字符串相关、base64 编码相关以及压缩相关的函数,方便用户更灵活地处理和转换数据流。
  3. 运营效率增强。新版本中继续优化了数据导入和导出功能,支持选择需要的规则进行导入导出,实现了规则依赖的流、配置和插件等的自动推断和导出。另外,我们优化了 eKuiper manager 中的规则管理界面,可以更准确地展示规则启动中的状态。

eKuiper 1.9.0 将在本月底发布。除此之外,eKuiper 也在 3 月份发布了 1.8.2 版本,主要修复了用户和社区反馈的问题。

多 Neuron 对接

Neuron 是运行在各类物联网边缘网关硬件上的工业协议网关软件,可以采集来自繁杂多样工业设备的不同协议类型数据,采集的数据经由 eKuiper 做流式的实时处理,获取更大的价值。eKuiper 一直在持续优化和 Neruon 的对接和整合。

*参考阅读:Neuron+eKuiper 实现工业物联网数据采集、清理与反控

eKuiper 1.5.0 版本加入了基于 NNG ipc 通信方式的 Neuron source 和 sink,使得用户无需配置即可在 eKuiper 中接入 Neuron 中采集到的数据进行计算;也可以方便地从 eKuiper 中通过 Neuron 控制设备 。NeuronEX 版本中集成了 Neuron + eKuiper ,使得用户无需任何额外部署和配置工作,即可处理采集到的工业数据。集成的方式满足了一部分用户的使用场景,但是在另一类场景中,用户需要单独部署 Neuron 和 eKuiper,而且可能需要两者分别根据数据量等情况进行部署伸缩。这种情况下,我们就需要 eKuiper 可以对接多个 Neuron 实例。

1.9.0 版本中,eKuiper 中的 Neuron source 和 sink 的配置中增加了连接 URL 的配置。基于此, eKuiper 可以配置多个不同的 Neuron 连接,采用不同的 host/IP 和 端口来识别,然后把连接应用到流和 sink 中,实现多 Neuron 连接。连接 URL 默认为 tcp,也可以配置为 ipc,用于与旧版 Neuron 连接。创建流之后,数据处理规则创建和管理的功能与原来的版本相同,详细教程请参考使用 eKuiper 对 Neuron 采集的数据进行流式处理 | eKuiper 文档。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5cM3rNQN-1680846960658)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\Neuron 北向应用配置 图2.png)]

Neuron 北向应用配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I7r3Vgb2-1680846960659)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\eKuiper 中配置 Neuron 连接 URL 图3.png)]

eKuiper 中配置 Neuron 连接 URL

实现 eKuiper 和 Neuron 多对多连接需要两个组件同时进行开发。各个版本之间的对接关系有以下几种组合:

  1. eKuiper 1.9 之后版本与 Neuron 2.4 之后版本可支持多对多对接。
  2. eKuiper 1.9 之后版本与 Neuron 2.4 之前版本对接只能通过 ipc,需要配置 SOURCES__NEURON__DEFAULT__URL: "ipc:///tmp/neuron-ekuiper.ipc",并且启用 volumes nng-ipc 的配置。Neuron 无需暴露 7081 端口。
  3. eKuiper 1.9 之前版本与 Neuron 2.4 之前版本对接只能通过 ipc,需要去除 SOURCES__NEURON__DEFAULT__URL 环境变量配置并且启用 volumes nng-ipc 的配置。Neuron 无需暴露 7081 端口。
  4. eKuiper 1.9 之前版本与 Neuron 2.4 之后版本无法直接对接,可通过 MQTT 中转。

连接动态 token 的 HTTP 服务

在本次更新中,eKuiper 新增了 HTTPPull 源以及 Rest Sink 的动态令牌鉴权的支持。这些功能使 eKuiper 更容易地连接到各种服务和数据源。

之前的版本中,我们支持通过自定义 header 的方式设置 apikey 等 header 实现基于固定 token 的认证方式。该方式可以覆盖一些安全配置要求较低的接口,例如内部的接口。还有许多接口需要动态获取和更新 token。为了接入这类 HTTP 服务,我们实现了相同的类似 OAuth 的认证流程的配置方式。在这个流程中,用户需提前获取认证码或者 API key。之后,eKuiper 中可配置该认证码,规则运行后会使用认证码来请求访问令牌,并可能在到期后通过刷新令牌来刷新令牌。

有了这个功能之后,eKuiper 可访问动态令牌的 HTTP 服务,例如 Neuron 的 REST API,从而实现对 Neuron 的自动控制。例如,可以配置 HTTPPull 监听 Neuron 的节点 API,当节点变化时自动触发规则。以下为访问 Neuron 节点 API 的 HTTPPull source 配置示例,需要配置 access token 的获取方式,用户也可以在 manager 上进行配置。

neuron_pull:# url of the request server addressurl: http://127.0.0.1:7000/api/v2/node/state# HTTP headers required for the requestheaders:Accept: application/jsonAuthorization: 'Bearer {{.token}}'# Get tokenoAuth:# Access token fetch methodaccess:# Url to fetch access token, always use POST methodurl: http://127.0.0.1:7000/api/v2/login# Body of the requestbody: '{"name": "admin","pass": "0000"}'# Expire time of the token, time unit is second, allow templateexpire: '3600'

节省传输带宽:MQTT 压缩/解压

MQTT 是云边协同最常用的数据传输方法。云边传输带宽成本昂贵,通过减小传输数据的大小,可以提高数据传输的效率并降低成本。定位在边缘端的 eKuiper 通过 MQTT sink 上报数据到云端时,支持设置压缩方式,目前支持的算法包括 zlib, gzipflate。使用方式有很简单,新版本中 MQTT sink 添加了属性 compresson,配置需要的压缩算法名字即可。

"mqtt": {"server": "{{mqtt_broker_address}}","topic": "result/sinkcompress","sendSingle": true,"compression": "zlib"}

同时,MQTT source 也支持解压缩,以接收云端下发的压缩数据或者部署在云端时接收边缘端上传的数据。MQTT source 的配置中添加了 decompression 属性,配置成所需的解压算法即可。

丰富数据转换函数

eKuiper 1.9.0 版本还增加了许多新的转换函数,例如 to_json、parse_json、decode等。这些函数使eKuiper的表达能力更加强大,可以更灵活地处理和转换数据流。例如,如果您要将数据流转换为JSON格式并进行特定字段的过滤,则可以使用以下代码:

SELECT id, compress(to_json(object_construct("recordId", newuuid(), "recordDateTime", timestamp, "groupName", group_name, "recordData", values)), \"zlib\") as trainData FROM demo

这段代码使用 object_construct 函数动态拼接出一个对象,再用 to_json 函数将对象转为字符串,最后再用 compress 函数,使用 zlib 算法将其压缩作为 trainData 字段。

这个版本中,我们新提供的函数包括:

  • compress(value, method ): 压缩字符串或二进制数据,压缩算法支持 zlib, gzip 和 flate
  • decompress(value, method): 解压缩二进制数据
  • to_json(object):数据转换为 JSON 字符串
  • parse_json(json_str):将 JSON 字符串解析为对象等数据
  • decode(str, method): 解码 base64 字符串,编码方法之前版本已支持

需要注意的是,相比 MQTT 的压缩解压功能,此处的压缩解压方法采用函数提供,可针对局部的字段而非整体的 payload 进行压缩操作。

Coalesce 函数处理缺失值

eKuiper 现在提供对 Coalesce 函数的支持。该函数返回一组值中的第一个非空值,可用于将流中的 null 值替换为指定的值。当处理包含缺失值或 null 值的数据时,这可以确保数据被正确处理。

SELECT COALESCE(email, phone) AS contact_info
FROM customer;

在此示例中,COALESCE 函数将在 emailphone 列中查找第一个非空值,并将其作为 contact_info列的值返回。如果 email 列为空,则返回 phone 列的值。

局部数据导入和导出

eKuiper 前几个版本中陆续添加了一部分导入导出功能,方便节点的迁移。之前的导出为全量导出,导入为覆盖式的全量导入,对增量管理不友好。新版本中,我们支持部分数据导入和导出。该功能使用户可以导入和导出仅部分数据,而不是整个数据集。当使用大型数据集时,这可以节省时间并减少传输的数据量,提高效率。

局部数据导入和导出 API 与全量数据相似,主要特点在于基于规则进行设计,导出时用户仅需指定要导出的规则,API 会计算规则的依赖,包括流定义、配置和插件等等相关信息,一并导出。在 eKuiper manager 中,用户可以在规则管理界面选择需要导出的规则进行导出。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I3B0gpgP-1680846960660)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\导入导出功能 图4.png)]

更易用的规则管理

由于规则的启停 API 是异步的,API 调用完成后无法立刻得知启动是否成功,所以在之前版本的 eKuiper manager 中,点击启动或重启,规则立刻变为启动状态。然而,规则有运行时错误时用户无法立刻从界面上获得反馈,从而形成一定程度的误导。新的版本中,规则启动时将即时进入启动中的状态,使得用户可以得到立即的反馈。若启动成功,规则状态会变为绿色,否则会变为红色,使得用户可以感知到启动最终的状态。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQ1ca3si-1680846960660)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\更易用的规则管理 图5.png)]

Bugfixes

3 月我们解决了一些 Python 插件热更新等问题,并发布到 1.8.2 版本中。主要的 bug fix 列表如下:

  • 修复 redis source 连接测试问题
  • 修复更新规则内容错误时不报错的问题
  • 修复窗口过滤条件不满足导致窗口不触发的问题
  • Portable 插件超时可配置以防止 AI 模型导入超时
  • 修复 Portable 插件更新到不正确的插件时无法热恢复的问题
  • 修复 Flow Editor 部分节点参数输入框,描述不正确等问题

即将到来

4 月我们将主要进行 1.10.0 版本的开发,这个版本将进行 EdgeX Minisota 版本的适配。另外,我们也会探索外部状态,如 Redis 状态的使用,实现持久化的状态。敬请期待。

版权声明: 本文为 EMQ 原创,转载请注明出处。

原文链接:https://www.emqx.com/zh/blog/ekuiper-newsletter-202303

相关文章:

对接多个 Neuron 实例,实现多网关协同分析与设备联动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dxTiQ9Lw-1680846960656)(C:\Users\DELL\Desktop\0407技术号四\0407技术号四图片\对接多个 Neuron 实例,实现多网关协同分析与设备联动 图1.png)] 3 月份,eKuiper 团队主要进行…...

windows下 Jenkins 主从节点通过SSH连接

之前已经介绍了在windows下,Jenkins通过启动agent.jar文件来进行主从节点配置(传送门:Jenkins 主从节点配置教程(windows10)_jenkins windows节点_町棠棠的博客-CSDN博客https://blog.csdn.net/naturly/article/details/129819780…...

JAVA练习101-任务调度器

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-任务调度器 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 4月7日练习…...

华为OD机试-匿名信-2022Q4 A卷-Py/Java/JS

电视剧《分界线》里面有一个片段,男主为了向警察透露案件细节,且不暴露自己,于是将报刊上的字减下来,剪拼成匿名信。 现在又一名举报人,希望借鉴这种手段,使用英文报刊完成举报操作。 但为了增加文章的混淆…...

muduo源码剖析--Inetaddress/Socket/Acceptor

InetAddress类 实际上封装了传入socket地址类,包括ip、端口以及具体的协议簇 // 封装socket地址类型 class InetAddress { public:explicit InetAddress(uint16_t port 0, std::string ip "127.0.0.1");explicit InetAddress(const sockaddr_in &…...

域名过户操作流程及常见问题

模板添加及模板过户操作流程: 一、添加模板操作流程: 1.在业务管理-域名管理-模板管理中找到“添加模板” 2.选择所有者类型(个人或是企业/组织),填写新的域名所有者资料,填写无误后点击“确定”。 目前…...

多国拟发ChatGPT禁令 关“野兽”的笼子要来了?

“人工智能想越狱“、”AI产生自我意识”、“AI终将杀死人类”、“硅基生命的进化”.......曾经只在在赛博朋克等科技幻想中出现的剧情,在今年走向现实,生成式自然语言模型正在遭受前所未有的质疑。 聚光灯下最瞩目的那个是ChatGPT,3月底到4…...

深度学习中,Params参数量和FLOPs计算量分别指什么

在深度学习中,参数量和计算量是两个重要的概念。 参数量: 参数量指的是深度神经网络中需要学习的参数数量。在深度学习中,每个神经元都有一个权重,这些权重是需要通过训练来确定的。深度神经网络中的参数量是指所有权重的数量之…...

1分钟快速制作思维导图「ChatGPT+XMind」—— 跟上时代的脚步,这辈子就起飞了 - 第5篇

历史文章(文章累计460) 《国内最全的Spring Boot系列之一》 《国内最全的Spring Boot系列之二》 《国内最全的Spring Boot系列之三》 《国内最全的Spring Boot系列之四》 《国内最全的Spring Boot系列之五》 《国内最全的Spring Boot系列之六》 S…...

生成与获取token

public class JwtUtils {// TOKEN的有效期1小时(S)private static final int TOKEN_TIME_OUT 1 * 3600;// 加密KEYprivate static final String TOKEN_SECRET "itcast";// 生成Tokenpublic static String getToken(Map params){long current…...

【人工智能】ChatGTP从入门到精通

当谈论自然语言处理和文本生成技术时,Chat GPT 是一个备受瞩目的话题。作为一种基于深度学习的语言模型,Chat GPT 在近几年里已经展现出了惊人的能力,可以生成几乎无法区分与人类写作的文本,并在自然语言处理领域的各种任务中都表…...

电脑桌面图标间距突然变大怎么恢复

1. WindowsR打开 > 输入regedit 按住WindowsR打开运行,输入regedit并点击确定。 2. 双击Control Panel 双击展开HKEY_CURRENT_USER,双击展开Control Panel,双击展开Desktop。 3. 更改间距 点击打开WindowMetrics, 双击打开…...

详解各版本Web服务器限制请求体大小的方法

前言 我们在上传大文件的时候通常会把请求体大小限制设置的很大,但平常没有这种业务需求的时候一般就会做出限制,避免异常请求的进入,我们该怎么去设置这个限制呢? 一般来说,Linux服务器没有直接限制请求参数包大小的…...

二叉树_详解

目录 1. 树型结构 1.1 概念 1.2 概念 1.3 树的表示形式 1.4 树的应用 2. 二叉树 2.1 概念 2.2 两种特殊的二叉树 2.3 二叉树的性质 2.4 二叉树的存储 2.5 二叉树的基本操作 2.5.1 前置说明 2.5.2 二叉树的遍历 2.5.3 二叉树的基本操作 1. 树型结构 1.1 概念 …...

LOTO示波器电源环路增益分析客户实测

我们在之前有文章介绍过LOTO示波器信号源扫频测电源环路增益稳定性的方法和过程,可以参考演示视频如下: https://www.ixigua.com/7135738415382790663?logTaga843d537a27090d5117b 或者阅读对应的文章:《LOTO示波器 实测 开环增益频响曲线/电…...

Netty主要组件

: 在Netty中有很多重要的组件, 每个组件职业不同, 担负不同的功能。 组件一 NioEventLoop 在它的底层封装了Selector, 实现多路复用, 由唯一绑定的一个线程去进行三大步骤循环操作: 监听事件,处理事件,执行任务。 组件二 NioServerSocketChannel NioSocketChannel 一个是服务…...

Linux系统【centos7】常用基础命令教程

今天我来介绍一下Linux系统的基础知识。 首先,我们需要了解Linux是什么。Linux是一种免费且开放源代码的操作系统,它被广泛用于服务器、移动设备和嵌入式系统。 接下来,我们需要了解基本的Linux命令。其中一些基本命令包括: 1.…...

【Redis学习】Redis入门概述

Redis是什么 Redis:REmote Dictionary Server(远程字典服务器) 官网介绍:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.(被数百万开发人员用作数据库、缓存、流…...

nodejs微服务:Consul集群

Consule集群 1 )概述 Consul是HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置Consul是分布式的、高可用的、可横向扩展的, 完成consul的安装后,必须运行agentagent可以运行为 server模式、client模式, 每个数据中心至少…...

spring事务处理

系列文章目录 Spring中事务的处理相关内容的学习 文章目录系列文章目录前言一、Spring事务简介二、案例:银行账户转账1.题目要求和思路分析2.实现步骤3.实现结构三、spring事务角色四、spring事务相关配置五、案例:转账业务追加日志1.题目要求和思路分析…...

2023 年博客之星的入围规则

目的 感谢各位博主和社区的大力支持,我们的博客之星活动成为了 IT界非常知名的博主荣誉的象征,博主在这个过程中也给大家贡献了很多优质内容。 在过去的几年中,博主们给我们博客之星活动提了很多建议,其中最强烈的一点就是&#…...

【新2023Q2押题JAVA】华为OD机试 - 查找树中的元素 or 查找二叉树节点

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:查找树中的元素 or 查找二叉树…...

MySQL 日志:undo log、redo log、binlog 有什么用?

目录一、bin log1.作用2.刷盘时机3.日志格式二、redo log1.为什么需要redo log2.基本概念3.作用3.刷盘时机三、undo log1.作用四、Mysql的时机顺序五、redo log 与 binlog 的两阶段提交六、总结一、bin log 1.作用 MySQL的bin log日志是用来记录MySQL中增删改时的记录日志。 …...

ETL 与 ELT的关键区别

ETL 和 ELT 之间的主要区别在于数据转换发生的时间和地点 — 这些变化可能看起来很小,但会产生很大的影响! ETL 和 ELT 是数据团队引入、转换并最终向利益干系人公开数据的两种主要方式。它们是与现代云数据仓库和 ETL 工具的开发并行发展的流程。 在任…...

Thinkphp 6.0模版的杂项和表单令牌

本节课我们来学习一下模版的杂项和表单令牌的功能。 一.模版的杂项 1. 有时,我们需要输出类似模版标签或语法的数据,这时会被模版解析; 2. 此时,我们就使用模版的原样输出标签{literal}; {literal} 变量标…...

linux常问

查看当前进程 ps -l 列出与本次登录有关的进程信息; ps -aux 查询内存中进程信息; ps -aux | grep * 查询 *进程的详细信息; top 查看内存中进程的动态信息; kill -9 pid 杀死进程。...

ToBeWritten之物联网MQTT、Z-Wave等协议

也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 转移发布平台通知:将不再在CSDN博客发布新文章,敬…...

C# 行为型模式之责任链模式

责任链模式:请求从链中的一个对象传递到下一个对象,直到请求被响应为止。通过这种方式在对象之间去除耦合。 用途:请假审批、采购审批等。 案例介绍:以公司采购东西为例子来实现责任链模式。公司规定,采购架构总价在…...

layui实现请求前添加一个加载 loading 的效果,并在请求成功后关闭

1.使用 layui 的 layer 组件来实现请求前添加一个加载 loading 的效果,并在请求成功后关闭。 $("#switch").click(function() {layer.confirm(确认切换至英文环境?, function(index) {var loadingIndex layer.load(1, {shade: [0.1,#fff] //0.1透明度的…...

iostat / sar 命令详解

作用 iostat主要用于监控系统设备的IO负载情况&#xff0c;根据这个可以看出当前系统的写入量和读取量&#xff0c;CPU负载和磁盘负载。 iostat属于sysstat软件包。可以用yum install sysstat 直接安装。 iostat用法 1.用法&#xff1a;iostat [选项] [<时间间隔>] […...