- 消息QoS支持,可靠传输保证
应用
MQTT协议广泛应用于物联网、移动互联网、智能硬件、车联网、电力能源等领域。
-
物联网M2M通信,物联网大数据采集
-
Android消息推送,WEB消息推送
-
移动即时消息,例如Facebook Messenger
-
智能硬件、智能家具、智能电器
-
车联网通信,电动车站桩采集
-
智慧城市、远程医疗、远程教育
-
电力、石油与能源等行业市场
消息队列与消息中间件适用场景不一样。
MQTT 与消息队列有一定的区别,队列是一种先进先出的数据结构,消息队列常用于应用服务层面,实现参考如 RabbitMQ Kafka RocketMQ;
MQTT 是传输协议,绝大部分 MQTT Broker 不保证消息顺序(Queue),常用与物联网、消息传输等,MQTT Broker 的常见需求可参考:共享行业的分布式 MQTT 设计
消息队列与MQTT异同
| 场景 | 部署端 | MQTT | 消息队列 |
| :-- | :-- | :-- | :-- |
| 设备端上报状态数据、设备通信 | 移动终端 | √ | × |
| 接收并处理分析设备的上报数据 | 移动终端 | × | √ |
| 对多个设备下发控制指令 | 服务器 | × | √ |
| 直播、弹幕、聊天 App 收发消息 | 应用 | √ | × |
| 服务端接收并分析聊天消息 | 服务器 | × | √ |
| 客户端连接数 | | 客户端规模庞大,百万甚至千万级 | 一般服务器规模较小,极少数万级 |
| 单客户端消息量 | | 单个客户端需要处理的消息少,一般定时收发消息 | 单个客户端处理消息量大,注重吞吐量 |
感觉就是面向端的用MQTT好些,面向服务内部的用MQ
MQTT Broker选型
看了一圈,需求是Java语言,开源的,成熟的 奈何没有。。。
-
EMQ X
-
优点:功能强大,成熟,国人开发,文档中文且齐全
-
缺点:Erlang语言开发,扩展难,消息存储功能只有企业版才有,也可以通过webhook免费扩展但性能肯定没有内置的强
选用:https://www.emqx.com/zh
EMQ X是一个基于Erlang语言的开源mqtt服务器,目前来看是开源的最好的mqtt服务器,也是国内开源的mqtt服务器,优点是功能全面,文档齐全,社区活跃,有很好的支持,缺点是因为erlang语言,对于其他语言的开发者自己扩展有一定难度。官方文档是:EMQ(开源)
- 其他Java未测试
==============================================================
https://docs.emqx.cn/broker/v4.3/
EMQ X (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。
Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。
MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。
EMQ X 设计目标是实现高可靠,并支持承载海量物联网终端的MQTT连接,支持在海量物联网设备间低延时消息路由:
-
稳定承载大规模的 MQTT 客户端连接,单服务器节点支持50万到100万连接。
-
分布式节点集群,快速低延时的消息路由,单集群支持1000万规模的路由。
-
消息服务器内扩展,支持定制多种认证方式、高效存储消息到后端数据库。
-
完整物联网协议支持,MQTT、MQTT-SN、CoAP、LwM2M、WebSocket 或私有协议支持。
EMQ X 目前支持的操作系统:
-
CentOS 6
-
CentOS 7
-
CentOS 8
-
OpenSUSE tumbleweed
-
Debian 9
-
Debian 10
-
Ubuntu 16.04
-
Ubuntu 18.04
-
Ubuntu 20.04
-
macOS 10.13
-
macOS 10.14
-
macOS 10.15
-
Windows Server 2019
WARNING
产品部署建议 Linux 服务器,不推荐 Windows 服务器。
地址:https://docs.emqx.cn/broker/v4.3/getting-started/install.html
多种方式,按需选择
后台启动 EMQ X
$ emqx start
EMQ X v4.0.0 is started successfully!
查看EMQ X状态
$ emqx_ctl status
Node ‘emqx@127.0.0.1’ is started
emqx 4.0.0 is running
EMQ X 提供了 Dashboard 以方便用户管理设备与监控相关指标。通过 Dashboard,你可以查看服务器基本信息、负载情况和统计数据,可以查看某个客户端的连接状态等信息甚至断开其连接,也可以动态加载和卸载指定插件。除此之外,EMQ X Dashboard 还提供了规则引擎的可视化操作界面,同时集成了一个简易的 MQTT 客户端工具供用户测试使用。
访问 http://localhost:18083 来查看你的 Dashboard,默认用户名是 admin
,密码是 public
可以在setting菜单选择中文语言。
为什么选择EMQ X?
EMQ X 与别的 MQTT 服务器相比,有以下的优点:
-
经过100+版本的迭代,EMQ X 目前为开源社区中最流行的 MQTT 消息中间件,在各种客户严格的生产环境上经受了严苛的考验;
-
EMQ X 支持丰富的物联网协议,包括 MQTT、MQTT-SN、CoAP、 LwM2M、LoRaWAN 和 WebSocket 等;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。
《Java高级面试》
《Java高级架构知识》
《算法知识》
,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中…(img-71I9KC36-1711708637701)]
最后
分享一些资料给大家,我觉得这些都是很有用的东西,大家也可以跟着来学习,查漏补缺。
《Java高级面试》
[外链图片转存中…(img-eAV48lQB-1711708637702)]
《Java高级架构知识》
[外链图片转存中…(img-lyaecyUV-1711708637702)]
《算法知识》
[外链图片转存中…(img-u7mOm9c4-1711708637703)]