We're sorry but nginx-community doesn't work properly without JavaScript enabled. Please enable it to continue.
开源社区
首页
文章
问答
文档
软件下载
发现更多
三方插件
技术支持
电子书
公开课
社区贡献榜
关于我们
登录
注册
NGINX
负载均衡
JavaScript
NGINX Unit
Kubernetes
微服务
容器
NGINX系列
WAF
Node.js
Go(编程语言)
服务网格(Service Mesh)
HTTP/3_专栏
版本发布
# MQTT
消息队列遥测传输(MQTT)是一种常用的轻量级“发布-订阅”消息协议,非常适合通过互联网连接物联网(IoT)或机器对机器(M2M)设备和应用。MQTT 可在低带宽或低功耗环境中高效运行,因此是有着众多远程客户端应用的理想之选,适用于多个行业,包括消费类电子产品、汽车、运输、制造及医疗行业。
关注标签
1人关注
文章
问答
排序
热门
最新
yuefeng
发布于2020-12-19 15:17
IoT 场景-01: 通过NGNIX 实现MQTT Broker 高可用
众所周知,Nginx最常见的传统场景是Web服务器,HTTP反向代理以及负载均衡,此外,它在物联网的技术领域,也可以发挥同样可观的作用。本节我们会重点讨论使用Nginx实现物联网消息组件MQTTBroker的高可用。MQTT流量负载均衡带有健康检查的高可用实践基于MQTTClientID的会话保持0x01MQTT原理首先我们来熟悉一下MQTT协议。MQTT(MessageQueuingTelemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。MQTT协议原理1MQTT协议实现方式实现MQTT协议需要客户端和服务器端通讯完成,在通讯过程中,MQTT协议中有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(S
点赞
1
浏览
2.9k
yuefeng
发布于2020-12-19 16:22
IoT 场景-04:使用NGINX Plus对MQTT的客户端连接进行访问控制
由于NGINXPlus在MQTT客户端与Broker的交互过程中处于一个核心代理的位置,我们可以很容易的在其原生的代理功能基础之上加入安全访问控制功能。0x01为什么需要访问控制对于一些MQTT的客户端,不管是消息的发布者还是订阅者,都有可能会使用贪婪模式,频繁的与MQTTBroker进行通信,并发布或获取大量数据。此时,MQTTBroker的通信信道会被这种客户端应用占用,导致服务降级。遇到这种类型的客户端,由于MQTTBroker原生并没有很好地限制机制,从而需要借助在NginxPlus的代理上面,进行配置,识别并限制过度的数据访问。0x02如何进行访问控制使用NginxPlus进行访问控制很简单,和HTTP协议的访问控制类似。0x03访问日志处理使用NginxPlus还可以自定义日志格式,通过与告警平台和自动化平台对接,可以有效识别异常客户端的通信,可以进行自动化的IP封禁以及限连和限流操作。至此,我们4节NGINXPlus在IoT场景中的应用已经告一段段落,希望大家喜欢本次的分享。参考:https://dzone.com/articles/mq
点赞
1
浏览
1.7k
yuefeng
发布于2020-12-19 15:51
IoT 场景-02:通过Nginx JavaScript 实现会话保持
上一节我们介绍过了通过Nginx实现MQTT会话的负载均衡,那么如何解决每个MQTTBroker在消息分发的时候,只能收到一半信息的情况呢?此时,我们就需要借助NginxPlus的高级功能:NginxJavaScript,来定制基于ClientID的会话保持机制,将客户端与某个MQTTBroker进行会话保持,保障其信息的完整性,除非该MQTTBroker出现故障。"Round Robinloadbalancingisaneffectivemechanismfordistributingclientconnectionsacrossagroupofservers.However,thereareseveralreasonswhyitisnotidealforMQTTconnections."0x01NginxJavaScript会话保持代码mqtt.js提取MQTTClientId varclient_messages=1;2varclient_id_str="-";34
点赞
2
浏览
1.7k
yuefeng
发布于2020-12-19 16:08
IoT 场景-03:使用NGINX Plus 进行主动MQTT健康检查
为了使我们的NginxPlus具有对MQTTBroker的正常工作状况具有主动健康检查的能力,首先我们要了解MQTT的协议的连接。0x01MQTT协议第一节我们介绍过,MQTT是一种基于TCP建立的的一套协议,MQTT报文中也有类似于TCP三次握手的状态码。简单来讲,我们只需要构建一个合法的CONNECT连接,等待MQTT返回一个CONNACK的回应报文,就能确认MQTTBroker正在处于一个正常工作的状态。0x02NginxPlus构建CONNECT1matchmqtt_conn{12#SendCONNECTpacketwithclientID"nginxhealthcheck"13send\x10\x20\x00\x06\x4d\x51\x49\x73\x64\x70\x03\x02\x00\x3c\x00\x12\x6e\x67\x69\x6e\x78\x20\x68\x65\x61\x6c\x74\x68\x20\x63\x68\x65\x63\x6b;14expect\x2
点赞
1
浏览
1.4k
NGINX官方账号
发布于2024-01-09 15:44
概念回顾:MQTT?
了解什么是 MQTT、MQTT 与 HTTP 的区别,以及 MQTT 如何能在物联网(IoT)和其他用例中支持设备到机器之间的通信。访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
点赞
1
浏览
665
发表文章
提问
社区达人
成为达人
相关文章
概念回顾:MQTT?
了解什么是 MQTT、MQTT 与 HTTP 的区别,以及 MQTT 如何能在物联网(IoT)和其他用例中支持设备到机器之间的通信。访问 NGINX 中文官方开源社区(nginx.org.cn)了解详情。
NGINX官方账号
发布于2024-01-09 15:44
保持联系
微信公众号
加入微信群
获取商业支持
了解商业产品和专业支持服务
加入邮件列表
向开发组提交代码或反馈意见