EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
EMQX Enterprise 5.4.0 版本已正式发布!
新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,进一步提升了整体性能和稳定性。
OpenTelemetry 分布式追踪与日志集成
在 EMQX v5.2.0 中,EMQX 提供了 OpenTelemetry 指标(Metrics)的集成,本次发布中,EMQX 进一步提供了分布式追踪(Traces)与日志(Logs)的集成,完全实现了 OpenTelemetry 可观测性框架所需的功能。
分布式追踪(Traces)
OpenTelemetry 分布式追踪是一个用于追踪请求在分布式系统中的流动的规范,用于追踪请求在分布式系统中的流动情况,并提供可视化分析请求的性能和行为的能力。在 MQTT 场景下,这一概念可以实现跨越 MQTT 消息传输中的不同参与者(发布者-MQTT 服务器-订阅者)的请求追踪。
EMQX 遵循 W3C 的 Trace Context MQTT 规范实现了端到端的分布式追踪功能:客户端在发布时为消息添加 traceparent
用户属性,Traces 将记录消息在 EMQX 集群节点以及订阅者之间的流转情况。对于不支持设置用户属性的 MQTT v3.1/3.1.1 客户端,也可以配置 EMQX 在内部自动为消息添加追踪 ID 实现分布式追踪。
借助 OpenTelemetry 分布式追踪,EMQX 系统管理员或开发者可以实时监测和分析物联网应用的性能和行为,并在出现故障时快速定位并排除故障。
日志(Logs)
与基于文件的日志一样,OpenTelemetry 日志同样用于记录关键事件、状态信息和错误消息,帮助开发人员和运维团队理解应用程序的行为和故障排查。
不同的是,OpenTelemetry 日志使用了规范化的日志记录格式,使得日志更易于解析、分析和处理。初次之外 OpenTelemetry 日志还支持在记录中添加丰富的上下文信息,如 Trace ID、标签、属性等。
EMQX 支持同时开启 OpenTelemetry 指标、追踪与日志功能。指标用于实时状态监测,追踪数据显示请求的流程和途径,而日志数据可以提供每个流程上更多的细节和上下文信息,三者相互集成可以建立一个统一的视图和分析平台,形成一个完整的观测解决方案。通过统一的平台,用户可以更高效地管理和利用数据以获得全面的应用程序观测能力,从而准确地定位和解决问题,大大提升开发人员和运维团队的工作效率。
开放充电协议 OCPP 协议网关
OCPP (Open Charge Point Protocol) 是一个连接充电桩与中央管理系统的开放通信协议,旨在为电动汽车充电基础设施提供统一的通信规范。
本次发布新增了 OCPP 1.6-J 版本的协议网关,能够为符合 OCPP 规范的各品牌充电桩设备提供开箱即用的海量接入与上下行消息传输能力,并提供了一系列安全、管理与集成的支持,包括:
- 提供 TLS/SSL 加密连接,保障传输层安全
- 提供用户名/密码、JWT 接入认证
- 提供上下行消息权限控制能力
- 提供基于 Dashboard 与 REST API 的客户端管理能力
- 支持与 MQTT 协议异构结合,满足更加灵活和多样化的应用场景需求
- 支持通过规则引擎、数据集成以及 REST API 等方式与第三方管理系统(Central System)集成
借助以上特性,用户可以快速构建安全可靠的电动汽车充电基础设施,快速交付并实现有效充电业务管理和运营。
JT/T 808 与 GB/T 32960 协议网关
本次发布新增了 JT/808 与 GB/T 32960 两种车联网协议网关,能够提供符合标准的车辆数据接入,并通过 EMQX 的集成能力与车辆管理平台侧集成,实现互联互通。
JT/T 808 是交通部颁布的车载终端通信协议,广泛用于车辆远程监控和调度管理。该标准规定了车辆与监控中心之间的通信协议格式和数据传输方式。协议包括车辆定位、报警信息、语音通信、数据传输等功能,可以实现车辆位置追踪、实时监控、报警处理等功能。
GB/T 32960 电动汽车远程服务与管理系统技术规范的国家标准。该标准规定了电动汽车的远程服务与管理系统的技术要求、数据格式和交互方式。协议包括了电动汽车的基本信息、驱动电池信息、车辆位置信息、行驶数据、故障诊断等内容,通过这些信息可以实现电动汽车的远程监控、能源管理和安全管理等功能。
借助两种车联网专属协议以及标准 MQTT 协议支持,EMQX 能够提供多类数据一体的接入和集成能力,帮助车企与车辆平台快速构建车联网应用,提供更高效、智能化的车辆管理和运营服务。
Confluent 集成支持
Confluent 是一个全面的数据流平台,提供全托管的 Confluent Cloud 与自托管的 Confluent Platform 产品,用于处理和管理连续、实时的数据流。
Confluent 包含多项服务,例如 Kafka 服务,Schema Registry 与事件流处理工具,以及跨区域的数据复制能力和其他丰富的扩展功能。EMQX 与 Confluent 生态集成,能够为企业提供灵活的物联网实时数据采集、传输、处理和分析全套解决方案,为企业提供更多的洞察和决策支持。
安全增强
- 通过 Prometheus Pull 模式集成时,支持为用于获取指标的 REST API
GET /api/v5/prometheus/stats
启用身份验证功能。 - 配置文件现在支持将敏感配置存储为文件,并通过在配置文件中使用特殊前缀
file://
来指定文件路径进行加载。 - REST API 现在添加了 RBAC 功能,实现更精细安全管理。通过 Dashboard 或密钥初始化文件创建 API 密钥时,可以指定 API 密钥的角色,现有以下角色可供选择:
- 管理员:可以访问系统中的所有资源。
- 查看者:只能查看资源和数据,对应 REST API 中的所有 GET 请求。
- 发布者:专门用于 MQTT 消息发布,只能访问与发布相关的 API。
性能增强的新路由存储架构
本次发布设计了新的路由存储架构,在内存使用量略有增加的情况下提高订阅和路由性能,尤其是对于共享订阅下使用通配符的场景。在内部基准测试对比中,EMQX 5.4.0 版本相较于 5.3.0 版本,平均订阅速度提升了 30%。
同时由于新存储架构取消了建立单独索引操作,也因此彻底避免了极端情况下集群路由状态不一致的情况出现。
新存储架构默认启用,旧版本集群将在滚动升级后也将自动切换到新架构。如果你不想使用新架构,可以通过配置 broker.routing.storage_schema
指定使用旧架构。
其他新增与变更功能
- REST API 与 Dashboard 添加了备份与恢复功能,用户可以为集群创建多个数据备份,并在需要的时候恢复。
- Dashboard 中添加了审计日志管理页面,用户可以使用该页面查看对 EMQX 设备和数据进行的所有更改操作,例如踢出设备、创建/删除规则等。
- Dashboard 单点登录中的 SAML 协议支持与 Azure Entra ID 进行集成。
- 客户端认证使用 LDAP 作为数据源时支持通过 bind 操作进行验证,适用于已经在 LDAP 服务器上拥有账户数据或缺乏添加或修改数据权限的情况。
- 调整数据桥接设计,将其拆分为连接器与动作(Sink)。连接用于管理数据集成与外部系统的连接,可以在多个动作之间重复使用,动作仅用于配置数据操作方式。这个设计能够提供更大的灵活性和更好的可扩展性,实现更清晰的数据集成配置与管理。
- 节点重平衡操作状态 API
GET /api/v5/load_rebalance/availability_check
取消身份验证,简化了负载均衡器配置。 - 新增重置 License 功能,允许将现有的 License 设置为默认试用 License。
- 调整默认试用 License 规格,由 100 连接调整为 25 连接。
BUG 修复
以下是主要 BUG 修复列表:
- #10976 修复共享订阅中的主题过滤器重复处理问题。 在之前的实现中,订阅选项的存储方法没有充分适配共享订阅,这导致在特定的主题和流程下,”订阅-取消订阅” 期间消息路由失败并且节点之间的路由表出现泄漏问题。
- #12048 修复 COAP 网关忽略订阅选项的错误。
- #12158 修复规则引擎无法连接到 Upstash Redis 的问题。修复前,在与 Redis 服务建立 TCP 连接之后,EMQX 的 Redis 驱动程序使用 inline commands 来发送 AUTH 和 SELECT 命令。但 Upstash Redis 服务不支持 inline commands,导致 EMQX 无法连接到 Upstash Redis 服务。 修复后,EMQX 的 Redis 驱动使用 RESP (Redis Serialization Protocol) 来发送 AUTH 和 SELECT 命令。
更多功能变更和 BUG 修复请查看 EMQX Enterprise 5.4.0 更新日志。
相关文章:

EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持
EMQX Enterprise 5.4.0 版本已正式发布! 新版本提供 OpenTelemetry 分布式追踪与日志集成功能,新增了开放充电协议 OCPP 协议接入能力,并为数据集成添加了 Confluent 支持。此外,新版本还进行了多项改进以及 BUG 修复,…...

记录 | C++ cout.setf(ios::fixed)
cout.setf(ios::fixed); 是在 C 中使用的一个标准库函数,用于将流的输出格式设置为"fixed" "fixed"格式指定输出浮点数时,小数点后的位数是固定的。这意味着,无论输出的数字有多少位小数,小数点后都会保留相…...

Eclipse 创建 Hello World 工程
Eclipse 创建 Hello World 工程 1. Hello WorldReferences Download and install the Eclipse IDE. 1. Hello World Eclipse -> double click -> Launch 单击蓝色方框 (右上角) 最大化 IDE File -> New -> C Project -> Finish Project name:工程名…...

【前端工程化面试题】vite热更新原理
vite 在开发阶段,运行 vite 命令,会启动一个开发服务器,vite 在开发阶段是一个服务器 依赖 esm: vite 在开发阶段使用 esm 作为开发时的模块系统。esm 具有动态导入的能力,这使得在代码中引入模块时可以动态地加载新的…...

【leetcode】判断二叉树是否完全二叉树
递归方式判断二叉树是否完全二叉树 bool TreeComplete(TreeNode* root) {if (root ! NULL) {if (root->left NULL && root->right ! NULL) {return false; // 左子树空}else if (root->left NULL && root->right NULL) {return true; // 左右子…...

Java多线程系列——内存模型JMM
目录 核心思想 关键概念 1. 可见性 2. 原子性 3. 有序性 工作原理 并发工具类 对并发编程的影响 同步策略 JMM的实践意义 结语 Java内存模型(Java Memory Model, JMM)是Java并发编程中的核心概念,其定义了Java虚拟机(JV…...

深入理解 Vue3 中的 setup 函数
💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

【QT+QGIS跨平台编译】之三十六:【RasterLite2+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、RasterLite2介绍二、文件下载三、文件分析四、pro文件五、编译实践一、RasterLite2介绍 RasterLite2是一个开源的轻量级栅格数据库,可以用于存储和管理各种类型的栅格数据,包括卫星遥感图像、数字高程模型等。 与传统的GIS数据存储方式不同,RasterLite2采用基…...

java面试题:分布式和微服务的区别
1 分布式和微服务概念不同 微服务架构是架构设计方式,是设计层面的东西,一般考虑如何将系统从逻辑上进行拆分,也就是垂直拆分。 分布式系统是部署层面的东西,即强调物理层面的组成,即系统的各子系统部署在不同计算机…...

GO语言的变量与常量
1.变量 go是一个静态语言 变量必须先定义后使用变量必须要有类型 定义变量的方式: var 名称 类型 var 名称 值 名称 :值 例如: var num int 这样就存了一个num类型为int的变量 var num 1 上面使用简化的定义通过num自动判断后面的类型为int并…...

java面试多线程篇
文章说明 在文章中对所有的面试题都进行了难易程度和出现频率的等级说明 星数越多代表权重越大,最多五颗星(☆☆☆☆☆) 最少一颗星(☆) 1.线程的基础知识 1.1 线程和进程的区别? 难易程度:☆☆…...

Anaconda + VS Code 的安装与使用
目录 一. Anaconda 是什么二. Anaconda 的安装1. 下载安装包2. 安装3. 检查 三. Anaconda 的使用1. 创建虚拟环境2. 激活虚拟环境3. 包管理4. 列举虚拟环境5. 退出虚拟环境6. 删除虚拟环境 四. VS Code 开发1. 安装插件2. 打开工作区3. 选择解释器 五. VS Code 个性化设置1. 切…...

Python爬虫html网址实战笔记
仅供学习参考 一、获取文本和链接 import requests from lxml import htmlbase_url "https://abcdef自己的网址要改" response requests.get(base_url) response.encoding utf-8 # 指定正确的编码方式tree html.fromstring(response.content, parserhtml.HTML…...

C++ 调用js 脚本
需求: 使用Qt/C 调用js 脚本。Qt 调用lua 脚本性能应该是最快的,但是需要引入第三方库,虽然也不是特别麻烦,但是调用js脚本,确实内置的功能(C 调用lua 脚本-CSDN博客) 步骤: 1&…...

Vscode python pyside6 制作视频播放器
一、界面如下 包含控件 qcombox、qtablewidget、qpushbotton、qverticalslider 二、运行代码 media_player.py import sysfrom PySide6 import QtWidgets from PySide6.QtWidgets import * from PySide6.QtMultimedia import * from PySide6.QtMultimediaWidgets import QVi…...

纯前端低代码平台demo,vue框架,nodejs,简单的pm2纯前端部署实践
文章目录 目录结构说明本地运行项目启动后的页面demo前端部署打包pm2nginx 后话 前段时间开发了一个纯前端的低代码平台demo,vue框架,nodejs,pm2纯前端部署实践。为此记录一下开发过程以及各方面遇到的问题,并作说明。 表单用了若…...

致创新者:聚焦目标,而非问题
传统的企业创新管理方式常常导致组织内部策略不协调、流程低效、创新失败率高等问题。而创新运营作为企业管理创新的新模式,通过整合文化、实践、人员和工具,提高组织创新能力。已经采用创新运营的公司报告了一系列积极的结果,如市场推出速度…...

javaSE和javaEE区别
javaSE Java SE(Java Platform,Standard Edition) Java SE 以前称为 J2SE。 它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。 Java SE 包含了支持 Java Web服务开发的类,并为 Java Platform&#…...

安装VMware+安装Linux
以上就是VMware在安装时的每一步操作,基本上就是点击 "下一步" 一直进行安装 安装Linux VMware虚拟机安装完毕之后,我们就可以打开VMware,并在上面来安装Linux操作系统。具体步骤如下: 1). 选择创建新的虚拟机 2). 选…...

session和cookie理解
目录 1、理解无状态 2、Session和Cookie理论 3、使用session存储数据 前言,理解session与cookie对于我们做web测试、接口测试、性能测试都是非常有帮助的。 cookie是一些数据信息,存储在浏览器端。 session是存储于服务器端的特殊对象,服务器…...

Springboot医院信息管理系统源码 带电子病历和LIS Saas应用+前后端分离+B/S架构
目录 系统特点 技术架构 系统功能 1、 标准数据维护 2、 收费(门诊/住院)系统 3、 药剂管理系统 4、 医生工作站系统 5、 护士工作站系统 6、电子病历系统 系统优点 云HIS系统简介 云HIS系统功能模块 门急诊挂号管理 门诊收费管理 门诊医…...

LeetCode.589. N 叉树的前序遍历
题目 589. N 叉树的前序遍历 分析 我们之前有做过LeetCode的 144. 二叉树的前序遍历,其实对于 N 插树来说和二叉树的思路是一模一样的。 二叉树的前序遍历是【根 左 右】 N叉树的前序遍历顺序是【根 孩子】,你可以把二叉树的【根 左 右】想象成【根 孩…...

C++ Webserver从零开始:配置环境(九)——下载github的项目进行测试
前言 大家好,我又来更新Webserver的博客了。上一次更新这个专栏时2024.2.5号,离现在已经13天了。非常抱歉,中间隔了那么久。一方面是基础知识学完之后,就要开始自己写代码了。看基础知识和写代码是两回事,理论和实践的…...

2024前端面试准备之TypeScript篇(一)
全文链接 1. 什么是TypeScript TypeScript是一种开源的编程语言,是JavaScript的一个超集。它添加了静态类型、类、接口和模块等特性,使得开发者能够更好地组织和维护大型应用程序。TypeScript代码可以被编译成JavaScript,从而可以在任何支持JavaScript的环境中运行。 2. …...

kali无线渗透之蓝牙攻击与原理
原理 蓝牙网络中的“个人身份码”攻击传统的蓝牙设备,主要是指“蓝牙规范2.1版”以前的各版蓝牙设备,以及使用“安全简化配对”(Secure SimplePairing,SSP)协议的蓝牙设备。 这些传统的蓝牙设备仅仅依赖于“个人身份码”( Personalldentifi…...

【开源】基于JAVA+Vue+SpringBoot的就医保险管理系统
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…...

德国vetter krantechnik起重机安装操作和维护说明包含电路图装配图
德国vetter krantechnik起重机安装操作和维护说明包含电路图装配图...

怎样解决恢复VPS数据信息?
对于服务器来说其中的数据信息是十分重要的内容,一旦出现数据丢失或损坏,就会对企业造成巨大的损失,所以备份是非常重要的,那么在使用VPS时我们怎样能够恢复其中的数据信息呢? 一、手动备份 其中比较简单快速的备份方…...

OpenAI最新模型Sora到底有多强?眼见为实的真实世界即将成为过去!
文章目录 1. 写在前面2. 什么是Sora?3. Sora的技术原理 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作! 【作者推荐】:对JS逆向感…...

Qt的基本操作
文章目录 1. Qt Hello World 程序1.1 通过图形化界面的方式1.2 通过代码的方式实现 2. Qt 的编码问题3. 使用输入框实现hello world4. 使用按钮实现hello world5. Qt 编程注意事项6. 查询文档的方式7. 认识Qt坐标系 1. Qt Hello World 程序 1.1 通过图形化界面的方式 我们先讲…...