- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
FLuxMQ是一款基于java开发,支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发,底层采用Reactor3反应堆模型,具备低延迟,高吞吐量,千万、亿级别设备连接;方便企业快速构建其物联网平台与应用. FluxMQ官网:https://www.fluxmq.com FluxMQ演示系统:http://demo.fluxmq.com/ 。 去除Ignite通信组件,采用自研集群通信,结合分布式订阅树完成性能的大幅度提升 。 Flux1.0版本采用Ignite的message API进行数据路由,此方式主要有以下几个缺点: 基于TCP组件(后面拓展UDP组播等功能),实现集群间启动相互连接,服务端实现端口占用扫描启动:默认48880端口、如果端口占用则依次递增,最大端口号为:49000。 节点启动后,客户端根据配置文件配置的集群IP自动进行端口扫描连接(48880->49000),同时客户端维护与服务端的心跳。避免节点宕机. FluxMQ对于集群消息路由会自动计算TPS,当单节点TPS超过2000时,会自动启动批量压缩功能,以此提高集群间传输性能(对时延要求极高的可以手动关闭批量压缩功能). FluxMQ集群节点间维护一个Root级别的订阅,订阅会分为2种 2.0版本新增延迟消息跟会话消息,1.0版本也有保留消息,但是管理页面未实现可视化管理。下面我们介绍下此次改动的一些 。 提供分布式会话消息,会话期间Session消息持久化存储,集群宕机后重启,数据不丢失,重启集群后数据重新加载 。 根据Topic保留消息,每个TOPIC仅保留一条,当传输的MQTT payload为空时,则清空保留消息。数据持久化存储,重启集群后,数据重新加载 。 FluxMQ提供大批量定时下发Topic指令的能力,单机支持百万级别延迟消息指令下发,在集群模式下,FluxMQ接收到延迟指令后,会自动负载到执行节点执行,当执行节点宕机后,此节点未执行的任务会自动由其他节点继续执行,提供分布式协调任务的能力 。 延迟Topic格式: 基于Ignite的实现配置数据区持久化,目前持久化的数据内容有以下: 此项功能可以用于调试报文,并且于集群各节点生产独立的log文件,用于快速定位问题 。 数据输入: 此时我只想插入msg内容下的body结构体,以下是一个通用的插入SQL语句模板: 通过json(变量名) 方式给结构体转成json字符串替换成插入字段的值 。 目前FluxMQ内置了COAP、WEBSOCKET、I1协议的组件,可以指定端口启动,启动后,可以通过MQTT与协议组件之间交互。每个客户端必须按照FluxMQ的标准进行接入。扩展协议与FluxMQ的MQTT共享以下组件: 通过规则引擎配置选择扩展协议数据类型 。 select * from "$EVENT.EXTENSION" 。 传输的数据格式如下: SQL如下: SQL如下: 通过MQTT客户端下发FluxMQ集群指令,即可将指令写给扩展协议客户端,格式如下: FluxMQ—2.0版本更新内容
前言
改动说明
功能
说明
自研EventBus通信组件
提供大批量数据路由压缩等功能
分布式发布订阅匹配树
提供更快速度的Topic路由
会话消息
支持Web管理会话消息、数据持久化
保留消息
支持Web管理保留消息、数据持久化
延迟消息
支持Web管理延迟消息 、数据持久化
配置持久化
Web配置页面配置持久化
规则引擎
新增LOG数据源,数据写入独立LOG文件
规则引擎
新增JSON函数,用户处理嵌套的JSON数据格式
规则引擎
新增协议扩展数据格式,用户统一转发第三方扩展协议
多协议模块
基于FluxMQ MQTT协议拓展多协议模块、提供同一的连接订阅管理能力
自研EventBus通信组件
研发背景
❝
EventBus特性
集群通信
报文帧
固定头(1 byte)
Topic长度(1 byte)
Topic(n byte)
Body长度(2 byte)
Body(n byte)
消息类型 2bit
Qos 2bit
是否压缩 1bit
是否批量 1bit
保留bit 2bit
9
test/test
11
HELLO,WORLD
批量压缩
❝
分布式发布订阅匹配树
数据管理
❝
会话消息
保留消息
延迟消息
❝
$DELAY
/延迟秒指/TOPIC
配置持久化
数据区
是否开启持久化
数据源配置
✔️
规则配置
✔️
ACL配置
✔️
系统配置
✔️
保留消息
✔️
会话消息
✔️
延迟消息
✔️
规则引擎
✔️
云客户端
✔️
协议扩展
✔️
规则引擎
LOG文件打印
❝
数据库SQL模板支持Json函数'
{
"msg"
: {
"id"
:
"id"
,
"body"
:{
"state"
:1,
"no"
:2
}
},
"messageId"
: 1,
"topic"
:
"test"
,
"qos"
: 1,
"retain"
:
false
,
"time"
:
"2022 12-22 12:00:00"
,
"clientId"
:
"A1212313"
}
insert into table (clientId,topic,msg) values (
'${clientId}'
,
'${topic}'
,
'${json(msg.body)}'
)
多协议模块
上行指令
❝
{
"protocol"
:
"I1"
,
"cmd"
:
"PUBLISH"
,
"messageId"
: 0,
"time"
:
"2023-07-11 21:59:23"
,
"clientId"
:
"clientId"
,
"nodeIp"
:
"127.0.0.1"
,
"clientIp"
:
"127.0.0.1:19999"
,
"body"
:
"body"
}
字段
说明
protocol
协议名称
cmd
指令类型
- PUBLISH 推送消息
- CONNECT 连接
- CLOSE 断开
messageId
消息id
time
时间
clientIp
客户端地址
nodeIp
所在集群节点IP
body
报文,如果传输是JSON会自动转成JSON格式,否则统一UTF8字符串处理
新增一个转发WEBSOCKET协议的报文
select * from
" $EVENT .EXTENSION WHERE protocol='WEBSOCKET'"
新增一个转发WEBSOCKET 上报协议的报文
select * from
" $EVENT .EXTENSION WHERE protocol='WEBSOCKET' AND cmd ='PUBLISH'
下行指令
$PROTOCOL
/协议名称/{clientId}
连接管理
启动WEBSOCKET协议插件
WEBSOCKET客户端连接
ws://123.249.9.130:7777/
test
连接管理
最后此篇关于分布式多协议接入网关FluxMQ-2.0功能说明的文章就讲到这里了,如果你想了解更多关于分布式多协议接入网关FluxMQ-2.0功能说明的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
据我所知,标准 jQuery“切换”功能在 jQuery mobile 中不起作用 - 这是正确的吗?如果是这样,还有其他有效的方法吗?我想做的就是打开和关闭“播放”按钮。所以按钮 ID 是“play
他们要求我提供一个“切换按钮”来打开和关闭集群有人可以帮助我实现集群的打开/关闭吗? 注意:加载超过30,000点 最佳答案 创建两层,一层有标记聚类,一层没有标记聚类,并将它们添加到传单控件中。例如
所以我想让我的 Python Gtk 小窗口有 2 个开关。当一个开关打开时,另一个开关关闭,反之亦然。我不太清楚如何控制这两个开关。如果有人能引导我走向正确的方向,我将不胜感激。 #!/usr/bi
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我为我的 android 应用程序集成了推送通知,我想为任何 android 手机/标签打开/关闭推送通知,任何人都可以帮助我... protected void onPostExecute(Blog
我遇到无法更改的问题 Switch运行时的 textOn/textOff 内容。这意味着,绑定(bind)到简单按钮(用于测试目的)的以下代码不起作用: private int _counter =
我正在开发一个应用程序来测试 iPhone 屏幕是关闭还是打开,我尝试了堆栈溢出中指定的加速度计代码,它在屏幕开启状态下运行良好,但是当我关闭屏幕时,加速度计没有停用。 所以我开始怀疑当屏幕关闭时加速
我想将前置闪光灯设置为自动闪光灯,因此前置摄像头不支持闪光灯,所以我必须将一个 View 设置为白色,以便它作为闪光灯使用,现在我的问题是如果用户设置了怎么办闪光模式自动?当我必须显示 Flash V
我有一个表,其中每隔一个表行都有一个类名“hideme”。在我制作的 css 文件中 .hideme { display:none} 隐藏行包含一个密码字段和一个按钮。在任何给定时间只能显示一个隐藏行
我正在尝试使用 css 切换复选框,使用开/关图像进行切换。但是它并没有发生,fiddle . I agree input[type=checkbox] { display:non
我正在为智能手机编写一个网站。我使用 javascript: navigator.geolocation.getCurrentPosition 来获取位置。 尽管如此,在执行此功能之前,我需要检测 G
如何在我的 Android 应用程序中以编程方式设置数据漫游开/关? 最佳答案 提前为重新打开一个死帖而道歉,但我已经通过调用这个可执行文件设法实现了它: su -c settings put glo
我正在用 java 编程,但我也可以采用 C++(甚至伪)代码,没问题。这是我的意思: 我有一个类似播放列表的东西,例如 List lsMyPlaylist .现在我想给用户洗牌的机会,然后再回到有序
我正在寻找最好的、最具可扩展性的方式来跟踪大量的开/关。开/关适用于项目,编号从 1 到大约 6000 万。 (在我的例子中,开/关是成员(member)的书是否被编入索引,这是一个单独的过程。) 开
我发现下面的代码可以以被动的方式做到这一点。 context.registerReceiver(this.ScreenOffReceiver, new IntentFilter(Intent.ACTI
我有一个脚本,我定期运行以使用 Applescript 打开/关闭灰度。它在 High Sierra 上运行良好,但当我在 Mojave 使用它时抛出异常。 tell application "Sys
如果我启动一个内联 Matplotlib 的 IPython Notebook,有没有办法随后绘制一个图形,以便它以“标准”、非内联的方式显示,而无需在没有内联命令的情况下重新加载笔记本? 我希望能够
如何使用Android中的CheckBoxPreference切换整个系统的声音,振动,数据连接和wifi? 我想在我的应用程序中正在运行 Activity 时禁用这些功能。 最佳答案 我想到了。 在
我想在我的网站上创建一个维护模式,我想放置一个只有管理员才能看到的按钮来打开/关闭维护模式。 这允许管理员继续查看网络,但其他访问者则不能。 我读过有关 catchAllRequest 的内容,创建一
如何检测客户端或服务器端 (ASP.NET) 的浏览器缓存设置。基本上尝试检测用户浏览器是否打开或关闭了缓存。如果关闭,我想将他们重定向到一个包含错误消息的页面,告诉他们打开它。这可能吗? 最佳答案
我是一名优秀的程序员,十分优秀!