emq服务器,火影vs死神3.3

背景MQTT 是一个开放的工业标准,是一个轻量级的基于发布订阅模型的消息协议,特别适合用于一些非可靠网络环境下的小型和嵌入式设备使用,物联网行业兴盛下可选的MQ

57a7557be10a4b7f825ba0aa9c7f2c5f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=qO4ouOPaBrUNHbOTygJoiJjGvXI%3D

背景

MQTT 是一种基于发布/订阅模型的开放式行业标准和轻量级消息传递协议,特别适合在一些不可靠的网络环境中的小型嵌入式设备中使用。如果物联网行业蓬勃发展,可选。除了传统的Mosquitto、AWS、Azure、百度云、阿里云、IBM等为物联网提供MQTT接入服务的产品外,还有不少可用于商业用途的MQTT代理。本文将重点介绍EMQ 和VerneMq 的一些介绍。

EMQ

简介

EMQ EMQ 是5G 时代的万物互联消息引擎,可处理千万级并发客户端。它对于为许多公司创建文档和材料非常有用。除了开源版本之外,还有企业版本。 EMQ 作为物联网应用开发和物联网平台搭建所需的基础设施软件,主要实现边缘和云端的物联网设备互联和设备云迁移,支持物联网设备接入、协议处理、消息路由、数据存储,提供诸如作为:作为流数据处理。

0ffa5d9c388c4ea0abdcc06b4615bbf6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=OwLBfKu0L2AnFmz9E0Fo%2BVAuf0M%3D

特征

EMQ 特点:

一站式连接物联网设备。完整的网络支持3G/4G/5GNB-IoT、TLS/DTLS多重网络安全、X.509证书等身份认证,高并发、低延迟、大规模分布。千万级并发连接、百万级消息吞吐量、毫秒级消息延迟。海量分布式、高可用的集群架构,灵活可扩展的扩展模块和插件。 EMQ 包含可扩展的插件架构,以插件的形式支持身份验证、ACL 和存储接口,以便与多个上层物联网应用和其他IT 系统快速集成。物联网协议。全面支持MQTT V5.0协议规范,并兼容MQTT V3.1和V3.1.1。它还可以扩展以支持多种物联网协议,例如MQTT-SN、CoAP、LwM2M、WebSocket、STOMP 和私有TCP。强大的规则引擎,快速的应用集成。它包括一个强大的规则引擎,用于一站式数据提取、过滤和转换。灵活集成SQL、NoSQL、时序数据库、Kafka等流处理中间件。快速应用集成和持续创新。边缘到云和云到跨云部署。从资源受限的边缘计算设备到私有、混合、公有、跨域、跨IDC、跨多云,EMQ 支持物理机、虚拟机、容器/K8S 的任何跨平台部署。它是完全开源的。 EMQ 基于Apache License 2.0 开源协议,无论是产品原型设计、物联网初创公司,还是大规模商业部署,EMQ 都支持开源并免费使用EMQ 功能。

全面支持TCP/SSL 连接的MQTT V3.1/V3.1.1 和V5.0 协议规范(支持QoS0、QoS1、QoS2 消息,支持持久会话和离线消息,支持保留消息和Last Will 消息)。支持,TLS/PSK 支持加密算法MQTT/WebSocket/SSL 支持HTTP 消息发布接口$SYS/# 系统主题,共享订阅($share/:group/topic),客户端在线状态查询和订阅支持,延期发布($delay/支持客户端ID或IP地址认证、用户名和密码认证、LDAP、数据库(Redis、MySQL、PostgreSQL、MongoDB)、HTTP认证集成,基于客户端ID、IP地址、用户名浏览器cookie认证、访问控制(ACL)多服务器节点集群(集群),网络分区自动修复,每个分区的节点配置,集群支持手动、mcast、DNS、etcd、k8s等多种集群发现方式。消息速率限制、连接速率限制消息桥接(开源版本桥接EMQ 客户端在一段时间内禁止登录黑名单。用户可以通过关联的HTTP API 将指定客户端添加到黑名单中。客户端规则引擎(开源版本支持重新发布消息、桥接数据到MQTT 代理、发送数据到Web 服务;企业版本支持消息编码和解码到其他消息中间件)数据持久化(仅限MySQL、Cassandra、InfluxDB 和其他数据库)。

下图展示了企业级EMQ 一站式解决方案。

2c370fd99e04485bbcc07e5309218854~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=ShgIILLJOxH56tGx3qNmm2yvhNk%3D

建筑学

技术架构

异步架构:EMQ同步设计仅在限制资源负载的情况下使用,例如创建TCP 连接和执行Mnesia 数据库事务。在EMQ X 3.0 版本中,MQTT 消息通过EMQ 内的一组Erlang 进程从发布者异步流向订阅者。

b4062effaf1f4578af440ea760e49f0d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=93kLaBaZbH%2B7gwFAHdSf%2Ftq%2FXak%3D

概念模型:EMQ X 在概念上更类似于网络路由器或交换机,而不是传统的企业级消息队列(MQ)。与根据IP 地址或MPLS 标签路由消息的网络路由器相比,EMQ

99044e992add418d8995c484102c4ae5~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=jkI9BD5xQszPTWaWJnH%2FdScLzO4%3D

部署架构

EMQ Raspberry Pi 和Linux ARM 可以使用源码编译和安装。 LB(负载均衡器)负责将设备MQTT 连接和消息分发到EMQ X 集群,提高EMQ 和Haproxy 的可用性。

常见的部署架构:

ac75a96640ab4cd4a647e012d2bafbec~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=E71cy8jZInrQ3ByE5eHVxSGvdOU%3D

VerneMQ

简介

VerneMQ是基于Erlang/OTP平台开发的高性能分布式MQTT消息代理。它可以在硬件中水平和垂直扩展,以支持大量并发客户端,同时保持低延迟和容错能力,并实现OASIS 行业标准MQTT 协议。然而,VerneMQ 还旨在通过提供一组与可扩展性、可靠性、高性能和操作简单性相关的独特功能,将消息传递和物联网应用程序提升到一个新的水平。

817fcacc3d4e42af9ced4ac8aa210ffe~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=INguWIYHwLFRkOtdJ8nKb%2FlApGo%3D

特征

VerneMQ 特点:

完全开源。在Apache License 2.0开源协议下,VerneMQ可以自由修改和商业重用。没有任何形式的限制,没有服务节点数量,没有时间限制,没有并发限制,并且可以提供商业支持。 VerneMQ 可以随时更换,并且MQTT 功能可以灵活地在标准代理上运行。 VerneMQ 使用Erlang/OTP 平台开发并扩展了其功能。内置可扩展指标有助于与VerneMQ 功能集成。

完整的MQTT V3.1/V3.1.1和V5.0协议规范支持,支持QoS 0、QoS 1、QoS 2服务级别支持基于文本和数据库(PostgreSQL、MySQL、Redis、MongoDB)的数据认证和授权桥接(桥接MQTT 代理)支持系统主题($SYS)、共享订阅TCP/SSL 连接支持MQTT/WebSocket/SSL、支持集群、集成Graphite、Prometheus 可扩展插件架构支持、Lua 插件脚本支持、会话平衡支持、消息负载避免消息过载(用于系统保护)。如果队列中的数据超过配置的数量,消息将被丢弃。数据持久性基于PROXY v2 协议。支持WebhookHTTP管理API 1058a9e972574a2ab69cceb5e26d7015~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717748283&x-signature=zvQrBNvYeuULZ8EM9QaCC8TJfX8%3D

建筑学

VerneMQ 在Erlang 中实现。 Erlang 旨在支持高并发和高可用性(容错)系统。 MQTT 中保存的消息用作客户端的主题并存储在代理上。选择主题后,代理会发送消息的副本。设计和构建很大程度上借鉴了Basho构建和封装Riak数据库和Plumtree的方式,并完全参考了主题trie路由算法。它是一个MQTT插件,使用LevelDB作为数据持久存储。

总结

EMQX 受益于高并发和高吞吐量的消息服务能力,以及对IoT 协议栈的完整支持。 VerneMQ 需要基本的并发连接,无需过多开发。消息服务能力吞吐率高,物联网协议栈完整性弱,仅支持MQTT协议,扩展性差,基础业务组件支持不好,业务成熟度不够,客户数量少,缺乏功能开箱即用的插件。如果您需要数据持久化以避免节点崩溃时数据丢失,可以考虑VerneMQ 和EMQ X 企业版。基于TLS/SSL 和X.509 证书的开源EMQ 身份验证机制确保通信安全。使用EMQ

比较项目

EMQ

韦尔内特MQ

执照

开源+商业版

开源+商业定制

公司/社区

EMQ

维伦MQ

开源协议

阿帕奇许可证2.0

阿帕奇许可证2.0

开发团队

杭州市云科技有限公司

Octavo Labs AG,瑞士

开发语言

埃尔兰

埃尔兰

集群架构

支持

支持

支持合同

MQTT、CoAP、MQTT-SN、WebSocket、TCP、UDP、LwM2M

MQTT 网络套接字

系统性能

集群支持千万级并发执行,单机开源企业版支持百万级并发执行。

集群支持百万级并发。

MQTT

v3.1、v3.1.1、v5.0

v3.1、v3.1.1、v5.0

边缘计算

EMQ X Edge 支持Raspberry Pi、ARM 等架构,并支持数据同步到云服务Azure IoT Hub AWS。

不支持

安全和身份验证

TLS/DTLS、X.509 证书、JWT、OAuth2.0、应用协议(ID/用户名/密码)、数据库和接口表单身份验证以及ACL 功能(LDAP、DB、HTTP)

TLS/DTLS、X.509 证书、基于配置文件的身份验证和ACL 功能、基于数据库的身份验证和ACL 功能,但支持的数据库较少

数据持久化

企业版支持将消息数据持久化到Redis、MySQL、PostgreSQL、MongoDB、Cassandra、Dynamo等外部数据库。开源版本如果在内存中崩溃就会丢失。

支持持久化到Google LevelDB

扩展模式

支持Erlang、Lua、Java和Python扩展的开发,包括webhooks、触发器和插件

支持Erlang和Lua扩展的开发,包括webhooks、触发器和插件

数据存储

仅限企业版

兼容数据库:Redis、Mysql、PostgreSQL、MongoDB、Cassandra、OpenTSDB、TimescaleDB、InfluxDB

适配消息队列:Kakfa、RabbitMQ、Pulsar

桥接模式:支持桥接标准MQTT协议消息服务。

开源版本支持HTTP进行数据同步和存储。

适配数据库:无,提供Erlang和Lua扩展开发

消息队列适配:无

桥接模式:支持桥接标准MQTT协议消息服务。

管理监控

支持可视化仪表板,对集群和节点进行统一集中管理。支持第三方监控工具Prometheus,提供可视化Grafana界面模板。

内置简单状态管理可视化界面,支持第三方监控工具Prometheus,可提供可视化Grafana界面

规则引擎

支持规则引擎。基于SQL 的规则引擎为代理提供了典型消息传递中间件之外的功能。规则引擎除了接受转发的消息外,还可以解析消息的格式(企业版)。

规则引擎由消息订阅、发布、确认事件触发,根据消息负载采取相应的动作,降低应用开发的复杂度。

不支持

推荐阅读

MQTT 和AMQP 协议的比较

Apache Storm 与Spark Streaming

Apache hive vs. impala 大数据生态系统中的SQL 分析引擎之战

HTTP与MQTT物联网通信协议比较

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/82631.html

(0)
小条的头像小条
上一篇 2024年5月31日
下一篇 2024年5月31日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注