码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Mqtt服务器调研-emqx


    调研

    最近在调研mqtt服务器的实现,今天稍微记录下,给关注这方面的同学参考。

    mqtt 协议的介绍就不具体说了,可以看下上篇文章 https://gamwatcher.blog.csdn.net/article/details/121081436

    在搜索了一番之后发现市面上比较多的服务器有下面几种

    mosquitto:Eclipse Mosquitto使用 C 语言实现的 MQTT 服务器。

    EMQX:使用 Erlang 语言开发的 MQTT 服务器,内置强大的规则引擎,支持许多其他 IoT 协议比如 MQTT-SN、 CoAP、LwM2M 等。

    Mosca:使用 Node.JS 开发的 MQTT 服务器,简单易用。

    VerneMQ:使用 Erlang 开发的 MQTT 服务器。

    同类型对比

    这里比较关注的是emqx和mosquitto 两款,简单介绍下

    Mosquitto 是一个小型轻量的开源 MQTT Broker,由 C/C++ 语言编写。Mosquitto 采用单核心单线程架构,支持部署在资源有限的嵌入式设备,接入少量 MQTT 设备终端,并实现了 MQTT 5.0 和 3.1.1版本协议。

    EMQ X 与 Mosquitto 均完整支持了 MQTT 协议特性,但 EMQ X 支持更多通信协议以及私有协议接入。应用层的功能拓展方面,Mosquitto 缺乏开箱即用的如认证鉴权、规则引擎、数据持久化与高性能消息桥接(EMQ X 企业版)等业务相关功能; 监控运维与可视化管理方面, EMQ X 有完整的现有功能和拓展方案支持;基础功能上 Mosquitto 集群功能羸弱,官方和第三方实现的集群方案均难以支撑物联网大规模海量连接的性能需求。

    因此 Mosquitto 不适合用来做规模化服务的 MQTT Broker,但由于其足够轻量精简,可以运行在任何低功率单片机包括嵌入式传感器、手机设备、嵌入式微处理器上,在物联网边缘消息接入上是较好的技术选型,结合桥接功能能够实现消息的本地处理并透传至云端。

    emqx关注的特性

    通过上面的对比,基本选定了使用emqx,就没过多研究Mosquitto,所以这里重点看了下emqx的技术文档

    emqx 的常规属性就不重要了,不能成为选择的必要条件,这里只看下关注的几个特性

    1、鉴权

    因为mqtt 5.0 提供了增强授权的,所以我们比较关注emqx是否能提供更严格的授权,在查阅了文档之后发现mqtt提供了多种的鉴权机制,具体的可以参考官方的文档

    灵活多样认证授权,零开发投入保障 IoT 安全 | EMQ,

    2、扩展

    开发中总有各种奇奇怪怪的需求,所以就关注是不是方便扩展,在调研之前知道emqx是开源的,erlang 开发的,还是有点反感的,毕竟不太懂erlang,想要做点定制开发很麻烦,

    emqx比较好的就是提供了的多语言的插件机制,技术文档可以参考

    使用 Python 开发 EMQX MQTT 服务器插件 | EMQ

    使用 Java 开发 EMQX MQTT 服务器插件 | EMQ

    钩子 | EMQX 4.3 文档

    3、和其他系统的对接

    虽然emqx是开源的,但是只是基础版本,一些功能只在付费版才能看到,比如和其他中间件的桥接。

    建立 MQTT 客户端连接 | EMQX Cloud 文档

    4.部署

    emqx 部署方式还是很多样,而且给了相当多的教程。我们在开发中常用的直接部署,docker,docker-compose ,k8s这些常用的部署方式都有文档,很方便,完全不慌。

    总结

    这是在调研的时候的一些记录,仅供参考

  • 相关阅读:
    中国酶制剂市场预测与投资战略研究报告(2022版)
    Python爬取wallhaven的所有4k壁纸图片
    LCR 027. 回文链表
    vue使用tinymce(新增字数限制)
    已解决 Go Error: cannot use str (type string) as type int in assignment
    Qt第六十六章:展示数据的标签
    Linux的简单认识和云主机的使用教程
    12、字符串中连续最多的字符以及次数
    客快物流大数据项目(八十):用户标签开发
    MATLAB | 全网唯一,双变量及三变量映射图表的MATLAB绘制
  • 原文地址:https://blog.csdn.net/perfect2011/article/details/126520919
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号