ikkhksvu 发表于 2024-10-3 12:52:07

EMQ vs. VerneMQ


    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/57a7557be10a4b7f825ba0aa9c7f2c5f~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=MPHIb0NdgF80hl2p7BavVyY9L1g%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <h1 style="color: black; text-align: left; margin-bottom: 10px;">背景</h1>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">MQTT 是一个开放的工业标准,是一个轻量级的基于发布订阅模型的<span style="color: black;">信息</span>协议,<span style="color: black;">尤其</span>适合用于<span style="color: black;">有些</span>非<span style="color: black;">靠谱</span>网络环境下的小型和嵌入式设备<span style="color: black;">运用</span></span></span></strong><span style="color: black;">,物联网行业兴盛下可选的MQTT Broker有<span style="color: black;">非常多</span>,除了经典的Mosquitto和AWS、Azure,百度云、阿里云、IBM等几个<span style="color: black;">供给</span>物联网MQTT接入服务的<span style="color: black;">制品</span>外,可用于<span style="color: black;">商场</span>生产的MQTT Broker还有多款,</span><strong style="color: blue;"><span style="color: black;">本文将重点介绍<span style="color: black;">有些</span>EMQ与VerneMq。</span></strong></span></p>
    <h1 style="color: black; text-align: left; margin-bottom: 10px;">EMQ</h1>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">介绍</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">EMQ X (简<span style="color: black;">叫作</span> EMQ), 是一款完全开源,高度可伸缩,高可用的分布式 MQTT <span style="color: black;">信息</span>服务器,<span style="color: black;">同期</span><span style="color: black;">亦</span>支持 CoAP/LwM2M 一站式 IoT 协议接入</span></strong>。EMQ 是 <span style="color: black;">5G</span>时代万物互联的<span style="color: black;">信息</span>引擎,适用于<span style="color: black;">IoT</span>、M2M 和移动应用程序,可处理千万级别的并发客户端<span style="color: black;">,EMQ是国人出产的一个开源Broker,<span style="color: black;">已然</span>用于<span style="color: black;">非常多</span>企业生产了,文档和资料<span style="color: black;">亦</span>非常齐全,除开源版本<span style="color: black;">亦</span>有企业版。</span><strong style="color: blue;"><span style="color: black;">EMQ <span style="color: black;">做为</span>物联网应用<span style="color: black;">研发</span>和物联网平台搭建必须用到的<span style="color: black;">基本</span><span style="color: black;">设备</span>软件,<span style="color: black;">重点</span>在边缘和云端实现物联网设备互联与设备上云,<span style="color: black;">供给</span>物联网设备接入、协议处理、<span style="color: black;">信息</span>路由、数据存储、流数据处理等核心能力。</span></strong></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/0ffa5d9c388c4ea0abdcc06b4615bbf6~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=QFkm7bMOGAFXT%2BUcyrIRRkqRNGc%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">特性</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">EMQ 特性:</span></strong></span></p><span style="color: black;"><span style="color: black;">物联网设备一站式连接。3G/4G/5G&amp;</span><span style="color: black;">NB-IoT</span> 全网络支持,TLS/DTLS 多重网络安全,X.509 证书等多种身份认证;</span><span style="color: black;"><span style="color: black;">高并发低时延,大规模分布式。千万级并发连接,百万级<span style="color: black;">信息</span>吞吐,毫秒级<span style="color: black;">信息</span>时延。大规模分布式,高可用集群架构,弹性伸缩<span style="color: black;">安排</span>;</span></span><span style="color: black;"><span style="color: black;">扩展模块与插件。EMQ 内置扩展插件架构,支持以插件方式<span style="color: black;">供给</span>认证、ACL、存储接口,能非常方便的与上层物联网应用及其他 IT系统快速集成;</span></span><span style="color: black;"><span style="color: black;">多种物联网协议支持。完整支持 MQTT V5.0 协议规范,并下兼容 MQTT V3.1 和 V3.1.1,还可扩展支持 MQTT-SN、CoAP、LwM2M、WebSocket、STOMP或私有 TCP 等多种物联网协议;</span></span><span style="color: black;"><span style="color: black;">强大的规则引擎,快速应用集成。内置强大的规则引擎,一站式数据提取、过滤与转换。灵活集成 SQL、NoSQL、时序数据库,及 </span><span style="color: black;">Kafka</span> 等流处理中间件。快速应用集成与<span style="color: black;">连续</span>创新;</span><span style="color: black;"><span style="color: black;">边缘到云端,云端到跨云<span style="color: black;">安排</span>。从资源受限的边缘计算设备,到私有云、混合云和公共云之上,到跨域、跨 IDC 与跨多云,EMQ 支持<span style="color: black;">理学</span>机、VM、容器/K8S 跨平台任意<span style="color: black;">安排</span>;</span></span><span style="color: black;"><span style="color: black;">完全开放源码。EMQ 基于 Apache </span><span style="color: black;">License</span> 2.0 开源协议,无论是<span style="color: black;">制品</span>原型设计、物联网创业<span style="color: black;">机构</span>、还是大规模的<span style="color: black;">商场</span><span style="color: black;">安排</span>,EMQ 都支持开源免费<span style="color: black;">运用</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">EMQ 功能:</span></strong></span></p><span style="color: black;"><span style="color: black;">完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范支持(QoS0, QoS1, QoS2 <span style="color: black;">信息</span>支持、持久会话与离线<span style="color: black;">信息</span>、Retained <span style="color: black;">信息</span>与Last Will <span style="color: black;">信息</span>支持)</span></span><span style="color: black;"><span style="color: black;">TCP/SSL 连接支持,支持TLS/PSK 加密算法</span></span><span style="color: black;"><span style="color: black;">MQTT/WebSocket/SSL 支持</span></span><span style="color: black;"><span style="color: black;">HTTP <span style="color: black;">信息</span>发布接口支持</span></span><span style="color: black;"><span style="color: black;">支持$SYS/# 系统主题、共享订阅 ($share/:group/topic)、客户端在线状态<span style="color: black;">查找</span>与订阅支持、延时 Publish ($delay/topic)</span></span><span style="color: black;"><span style="color: black;">支持客户端 ID 或 IP <span style="color: black;">位置</span>认证,用户名<span style="color: black;">秘码</span>认证,LDAP、数据库(Redis、MySQL、PostgreSQL、MongoDB)、HTTP 认证集成,浏览器 Cookie 认证</span></span><span style="color: black;"><span style="color: black;">基于客户端 ID、IP <span style="color: black;">位置</span>、用户名的<span style="color: black;">拜访</span><span style="color: black;">掌控</span> (ACL)</span></span><span style="color: black;"><span style="color: black;">多服务器节点集群 (Cluster)、网络分区自动愈合、按分区配置节点,且集群支持 manual、mcast、dns、etcd、k8s 等多种集群<span style="color: black;">发掘</span>方式</span></span><span style="color: black;"><span style="color: black;"><span style="color: black;">信息</span>速率限制、连接速率限制</span></span><span style="color: black;"><span style="color: black;"><span style="color: black;">信息</span>桥接(开源版本支持桥接EMQ X,企业版本支持Kafka、RabbitMQ、Pulsar、RocketMQ桥接)</span></span><span style="color: black;"><span style="color: black;">支持Stomp 协议、MQTT-SN 协议、CoAP 协议、LwM2M 协议、Stomp/SockJS 支持</span></span><span style="color: black;"><span style="color: black;">Flapping 检测,规定客户端在指<span style="color: black;">按时</span>间内断开次数过大后将禁止客户端在一<span style="color: black;">按时</span>间内登录</span></span><span style="color: black;"><span style="color: black;">黑名单支持,用户<span style="color: black;">能够</span><span style="color: black;">经过</span><span style="color: black;">关联</span>的 HTTP API 将指定客户端加入黑名单以拒绝该客户端<span style="color: black;">拜访</span></span></span><span style="color: black;"><span style="color: black;">规则引擎(开源版本支持<span style="color: black;">信息</span>重新发布、桥接数据到 MQTT Broker、发送数据到 Web 服务,企业版本支持<span style="color: black;">信息</span>编解码,桥接到其它<span style="color: black;">信息</span>中间件<span style="color: black;">或</span>持久化到数据库,并可从持久化库中获取订阅关系)</span></span><span style="color: black;"><span style="color: black;">数据持久化(仅企业支持持久化到MySQL、Cassandra、InfluxDB等数据库中)</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">企业级EMQ 一站式<span style="color: black;">处理</span><span style="color: black;">方法</span>如下图所示</span></strong></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/2c370fd99e04485bbcc07e5309218854~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=w%2FYVz1tnqy4d1vyaOAJ%2B2pVrwoI%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">架构</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">技术架构</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">异步架构:EMQ X 是基于 Erlang/OTP 平台的全异步的架构,异步 TCP 连接处理、异步主题 (Topic) 订阅、异步<span style="color: black;">信息</span>发布。<span style="color: black;">仅有</span>在资源负载限制部分采用同步设计</span></strong><span style="color: black;">,比如 TCP 连接创建和 Mnesia 数据库事务执行。EMQ X 3.0 版本中,一条 MQTT <span style="color: black;">信息</span>从发布者 (Publisher) 到订阅者 (Subscriber),在 EMQ X Broker 内部异步流过一系列 Erlang 进程 Mailbox:</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/b4062effaf1f4578af440ea760e49f0d~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=IpdxUDdgxIzhXgVZoZEgYBFKmZs%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">概念模型:EMQ X 概念上更像一台网络路由器 (Router) 或交换机 (Switch),而不是传统的企业级<span style="color: black;">信息</span>队列 (MQ)</span></strong><span style="color: black;">。相比网络路由器按 IP <span style="color: black;">位置</span>或 MPLS 标签路由报文,EMQ X 按主题树 (Topic Trie) 发布订阅模式在集群节点间路由 MQTT <span style="color: black;">信息</span>:</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/99044e992add418d8995c484102c4ae5~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=yjMEa9bpdXRUyKDvUUMwdaEPR3I%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">安排</span>架构</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">EMQ X 集群可<span style="color: black;">做为</span>物联网接入服务(IoT Hub)<span style="color: black;">安排</span>,</span><strong style="color: blue;"><span style="color: black;"><span style="color: black;">日前</span> EMQ 在青云、阿里云、AWS 等云服务<span style="color: black;">供给</span>商上均<span style="color: black;">供给</span>开箱即用的免费软件镜像</span></strong><span style="color: black;">,</span><strong style="color: blue;"><span style="color: black;"><span style="color: black;">针对</span>特殊硬件平台和系统版本如树莓派、Linux ARM,可<span style="color: black;">运用</span>源码编译安装,LB (负载<span style="color: black;">平衡</span>器) 负责分发设备的 MQTT 连接与<span style="color: black;">信息</span>到 EMQ X 集群</span></strong><span style="color: black;">,LB <span style="color: black;">加强</span> EMQ X 集群可用性、实现负载平衡以及动态扩容,开源 LB有Nginx、Haproxy。</span></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">典型<span style="color: black;">安排</span>架构:</span></span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/ac75a96640ab4cd4a647e012d2bafbec~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=myxHGrTWbW0bBKD9O5mNL5TVYBs%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <h1 style="color: black; text-align: left; margin-bottom: 10px;">VerneMQ</h1>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">介绍</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">VerneMQ 基于 Erlang/OTP 平台<span style="color: black;">研发</span>,是高性能的分布式 MQTT <span style="color: black;">信息</span>代理</span></strong>。<strong style="color: blue;"><span style="color: black;">它<span style="color: black;">能够</span>在硬件上水平和垂直扩展,以支持<span style="color: black;">海量</span>并发客户端,<span style="color: black;">同期</span>保持较低的延迟和容错能力,它实现了 OASIS 行业标准MQTT 协议</span></strong>。但 VerneMQ 还旨在<span style="color: black;">经过</span><strong style="color: blue;"><span style="color: black;"><span style="color: black;">供给</span>一组与可扩展性、<span style="color: black;">靠谱</span>性和高性能以及操作简单性<span style="color: black;">关联</span>的独特功能</span></strong>,将<span style="color: black;">信息</span>传递和物联网应用程序<span style="color: black;">提高</span>到一个新的水平。</span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/817fcacc3d4e42af9ced4ac8aa210ffe~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=RYMeo1hMUhZs2Z1OW6DLOt3G6H0%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">特性</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">VerneMQ 特性:</span></strong></span></p><span style="color: black;"><span style="color: black;">完全开放源码。基于 Apache </span><span style="color: black;">License</span> 2.0 开源协议,可免费进行<span style="color: black;">商场</span>修改和重用</span><span style="color: black;"><span style="color: black;">VerneMQ 无任何形式限制、无服务节点数量限制、无时间限制、无并发限制,并可<span style="color: black;">供给</span><span style="color: black;">商场</span>支持</span></span><span style="color: black;"><span style="color: black;">可随时替换VerneMQ,功能<span style="color: black;">能够</span>在任何实现 MQTT 规范的broker上运行</span></span><span style="color: black;"><span style="color: black;">灵活,VerneMQ 支持自定义插件,<span style="color: black;">经过</span>Lua 脚本来扩充能力</span></span><span style="color: black;"><span style="color: black;">采用Erlang/OTP平台<span style="color: black;">研发</span>,支持故障隔离和容错</span></span><span style="color: black;"><span style="color: black;">内置的可扩展指标,便于与第三方系统集成</span></span>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">VerneMQ 功能:</span></strong></span></p><span style="color: black;"><span style="color: black;">完整的 MQTT V3.1/V3.1.1 及 V5.0 协议规范支持,支持QoS 0、QoS 1、QoS 2服务级别</span></span><span style="color: black;"><span style="color: black;">支持基于文、数据库(PostgreSQL、MySQL、Redis 和 MongoDB )的身份验证和授权</span></span><span style="color: black;"><span style="color: black;">支持数据桥接(桥接到MQTT Broker)</span></span><span style="color: black;"><span style="color: black;">支持系统主题( $SYS )、共享订阅</span></span><span style="color: black;"><span style="color: black;">TCP/SSL 连接支持</span></span><span style="color: black;"><span style="color: black;">MQTT/WebSocket/SSL 支持</span></span><span style="color: black;"><span style="color: black;">支持集群</span></span><span style="color: black;"><span style="color: black;">支持集成Graphite 、 Prometheus</span></span><span style="color: black;"><span style="color: black;">可扩展插件架构,支持Lua 插件脚本</span></span><span style="color: black;"><span style="color: black;">支持会话平衡、<span style="color: black;">信息</span>负载</span></span><span style="color: black;"><span style="color: black;">避免<span style="color: black;">信息</span>过载(用于系统<span style="color: black;">守护</span>),当队列中数据大于配置量,将进行<span style="color: black;">信息</span>丢弃,支持队列数据FIFO 或 LIFO 处理方式</span></span><span style="color: black;"><span style="color: black;">数据持久化(基于LevelDB)</span></span><span style="color: black;"><span style="color: black;">支持PROXY v2 协议</span></span><span style="color: black;"><span style="color: black;">支持webhook</span></span><span style="color: black;"><span style="color: black;">HTTP 管理 API</span></span>
    <div style="color: black; text-align: left; margin-bottom: 10px;"><img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/1058a9e972574a2ab69cceb5e26d7015~noop.image?_iz=58558&amp;from=article.pc_detail&amp;lk3s=953192f4&amp;x-expires=1728099170&amp;x-signature=O0S0QbxSxKFYANkJY933qWZtxRw%3D" style="width: 50%; margin-bottom: 20px;"></div>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">架构</span></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">VerneMQ采用Erlang实现,Erlang 旨在支持高并发和高可用性(容错)系统,数据副本采用Plumtree协议实现</span></strong>,MQTT 中的<span style="color: black;">保存</span><span style="color: black;">信息</span>是<span style="color: black;">运用</span>主题<span style="color: black;">做为</span>键存储在代理上的<span style="color: black;">信息</span>,每当客户端订阅该特定主题时,代理都会发送该<span style="color: black;">信息</span>的副本,<strong style="color: blue;"><span style="color: black;">设计和构建从 Basho 构建和打包 Riak 数据库的方式以及 Plumtree 中借鉴了<span style="color: black;">非常多</span>,主题 trie 路由算法完全参考RabbitMQ MQTT 插件,采用LevelDB <span style="color: black;">做为</span>数据持久化存储。</span></strong></span></p>
    <h1 style="color: black; text-align: left; margin-bottom: 10px;">总结</h1>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">EMQX <span style="color: black;">优良</span>在于高并发连接与高吞吐<span style="color: black;">信息</span>的服务能力,以及物联网协议栈支持的完整性</span></strong>;扩展能力较强,无需<span style="color: black;">太多</span><span style="color: black;">研发</span>,<strong style="color: blue;"><span style="color: black;">VerneMQ<span style="color: black;">供给</span><span style="color: black;">基本</span>的并发连接与高吞吐<span style="color: black;">信息</span>的服务能力,物联网协议栈的完整性较弱仅支持 MQTT 协议</span></strong>;扩展能力较差,<span style="color: black;">基本</span>的业务组件支持度<span style="color: black;">不足</span>,<span style="color: black;">商场</span>成熟度不足客户量较少,缺乏开箱即用的功能插件。<strong style="color: blue;"><span style="color: black;"><span style="color: black;">需求</span>数据持久化避免节点殒机数据丢失可<span style="color: black;">思虑</span>VerneMQ以及企业版EMQ X</span></strong>,开源版本EMQ X需要采用扩展方式实现数据持久化,<span style="color: black;">然则</span>EMQ X<span style="color: black;">经过</span>开放标准物联网协议 MQTT、CoAP 和 LwM2M 连接任何设备,基于 TLS/SSL 和 X.509 证书的认证机制<span style="color: black;">保证</span>通信安全。<span style="color: black;">运用</span> EMQ X 企业版本集群,<span style="color: black;">能够</span>毫不费力地弹性扩展到数千万个并发的 MQTT 连接,且<span style="color: black;">因为</span>是国产化软件支持、关注度以及功能丰富程度高于VerneMQ。</span></p>
    <div style="color: black; text-align: left; margin-bottom: 10px;">
      <div style="color: black; text-align: left; margin-bottom: 10px;">
            <div style="color: black; text-align: left; margin-bottom: 10px;">
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">对比项目</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">EMQ</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">VerneMQ</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">License</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">开源+<span style="color: black;">商场</span>版</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">开源+<span style="color: black;">商场</span>定制</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">机构</span>/社区</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">EMQ</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">VerenMQ</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">开源协议</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Apache License 2.0</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Apache License 2.0</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">研发</span>团队</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">杭州映云科技有限<span style="color: black;">机构</span></span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Octavo Labs AG,瑞士</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;"><span style="color: black;">研发</span>语言</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Erlang</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Erlang</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">集群架构</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">支持</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">支持</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">支持协议</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">MQTT、CoAP、MQTT-SN、WebSocket、TCP、UDP、LwM2M</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">MQTT WebSocket</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">系统性能</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">集群支持千万级并发,单机开源十万企业版百万并发</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">集群支持百万级并发</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">MQTT</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">v3.1,v3.1.1,v5.0</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">v3.1,v3.1.1,v5.0</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">边缘计算</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">EMQ X Edge 支持树莓派,ARM 等架构,支持数据同步到云服务 Azure IoT Hub AWS</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">不支持</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">安全与认证</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">TLS/DTLS、X.509证书、JWT、OAuth2.0、应用协议(ID/用户名/<span style="color: black;">秘码</span>)、数据库与接口形式的认证与 ACL 功能(LDAP、DB、HTTP)</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">TLS/DTLS、X.509证书、配置文件形式的认证与 ACL 功能、数据库形式的认证与 ACL 功能,但支持数据库较少</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">数据持久化</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">企业版</span></strong><span style="color: black;">支持将<span style="color: black;">信息</span>数据持久化至<span style="color: black;">外边</span>数据库如 Redis、MySQL、PostgreSQL、MongoDB、Cassandra、Dynamo 等,开源版在内存中宕机则丢失</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">支持持久化至 Google LevelDB</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">扩展方式</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Webhook、Trigger、Plugin 等,支持 Erlang 与 Lua、Java、Python 扩展<span style="color: black;">研发</span></span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">Webhook、Trigger、Plugin 等,支持 Erlang 与 Lua 扩展<span style="color: black;">研发</span></span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">数据存储</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">仅</span><strong style="color: blue;"><span style="color: black;">企业版</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">适配数据库:Redis、Mysql、PostgreSQL、MongoDB、Cassandra、OpenTSDB、TimescaleDB、InfluxDB</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">适配<span style="color: black;">信息</span>队列:Kakfa、RabbitMQ、Pulsar</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">桥接模式:支持桥接至标准 MQTT 协议<span style="color: black;">信息</span>服务</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">开源版支持 HTTP 将数据同步、存储</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">适配数据库:无,<span style="color: black;">供给</span> Erlang 和 Lua 扩展<span style="color: black;">研发</span></span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">适配<span style="color: black;">信息</span>队列:无</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">桥接模式:支持桥接至标准 MQTT 协议<span style="color: black;">信息</span>服务</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">管理监控</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">支持可视化的 Dashboard,实现集群与节点的统一集中管理 支持第三方监控工具 Prometheus ,<span style="color: black;">供给</span>可视化 Grafana 界面模板</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">内置简单状态管理可视化界面 支持第三方监控工具 Prometheus ,可<span style="color: black;">供给</span>可视化 Grafana 界面</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><span style="color: black;">规则引擎</span></strong></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">支持规则引擎,基于 SQL 的规则引擎给予 Broker 超越<span style="color: black;">通常</span><span style="color: black;">信息</span>中间件的能力。除了在接受转发<span style="color: black;">信息</span>之外,规则引擎还<span style="color: black;">能够</span>解析<span style="color: black;">信息</span>的格式(</span><strong style="color: blue;"><span style="color: black;">企业版</span></strong><span style="color: black;">)。</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">规则引擎由<span style="color: black;">信息</span>的订阅,发布,确认的事件触发,<span style="color: black;">按照</span><span style="color: black;">信息</span>的负载来执行相应的动作,降低应用<span style="color: black;">研发</span>的<span style="color: black;">繁杂</span>度。</span></span></p>
                <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><span style="color: black;">不支持</span></span></p>
            </div>
      </div>
    </div>
    <h1 style="color: black; text-align: left; margin-bottom: 10px;"><span style="color: black;">举荐</span>阅读</h1>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><a style="color: black;">MQTT vs. AMQP 协议对比</a></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><a style="color: black;">Apache Storm vs. Spark Streaming</a></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><a style="color: black;">Apache hive vs. impala 大数据生态系统中的SQL分析引擎之争</a></strong></span></p>
    <p style="font-size: 16px; color: black; line-height: 40px; text-align: left; margin-bottom: 15px;"><span style="color: black;"><strong style="color: blue;"><a style="color: black;">HTTP vs. MQTT 物联网通信协议对比</a></strong></span></p>




j8typz 发表于 2024-10-21 23:58:02

我完全同意你的观点,说得太对了。

m5k1umn 发表于 7 天前

楼主发的这篇帖子,我觉得非常有道理。
页: [1]
查看完整版本: EMQ vs. VerneMQ