今日推荐文章:Go 语言实现 AES 算法的加解密操作-腾讯云开发者社区-腾讯云
点评:这篇文章主要介绍了AES算法及其在Go语言中的实现,包括了ESB模式、CBC模式和CFB模式的工作原理、优缺点以及应用场景,并提供了相应的代码示例,文章结构清晰,内容详实,对理解AES加密算法及其应用有很好的指导作用。
MQTT
是一种基于发布/订阅范式的轻量级即时通讯协议,专为低带宽和不可靠网络环境设计。
最早由IBM
提出,并已经成为OASIS
(组织互操作性开放式标准Organization for the Advancement of Structured Information Standards)规范的一部分。
由于其设计简洁,MQTT
非常适合低功耗和网络带宽有限的1oT(物联网)场景。作为一种机器对机器的通信协议,MQTT
采用了发布/订阅模式而非请求/响应模式。
对于MQTT
来说,就相当于一种模式一种规则。一种天上飞着的理念,要想使用,还得要有具体的技术落地实现。
就像是W3C
组织定义了html
,各大浏览器厂商,开发浏览器对这些标准进行实现。
我们只有使用浏览器,才能感受到html
。同理,MQTT
就是这样的
对于MQTT
,协议中包含了三类角色
MQTT client publisher
,生产者,一般指的是各种发送消息的智能设备MQTT Broker
,中间代理,消息的中转者MQTT client subscriber
,订阅者,一般指的是获取消息的终端设备主要有下面的特点
MQTT
协议对消息的数据格式也非常简单,分为4
块内容
Qos
ID
、标识、主题之类的。当然这一块也可以没有发布/订阅模式解耦了发布消息的客户端与订阅消息的客户端之间的关系,这意味着发布者和订阅者之间不需要直接建立联系。在这一模式中,只需要一个消息中间件(通常是MQTT
代理),发布者和订阅者无需了解彼此。
那听着就像是MQ
啊,MQTT
和消息队列到底有什么区别?
是这样的,刚刚也提到过,MQTT
是基于发布/订阅模式的协议。
MQ
是具体的实现,针对的是应用服务,与应用服务之间的通信问题的具体实现。
MQ
它可以对MQTT
进行实现,也可以不对MQTT
进行实现。MQ
这种应用级产品,完成相对应的功能不就行了,没必要非得按照MQTT
协议来进行开发。
下面看看我们Java
程序员,常见的MQ
是否实现了MQTT
RabbitMq
:基于AMQP
协议,但也可以通过插件的形式支持MQTT
ActiveMQ
:支持MQTT
Kafka
:不支持RocketMq
:不支持再列举一下基于MQTT
实现的技术
Mosquitto
:开源EMQX
:开源,正在学习这个那讲讲如何去选择这些技术产品实现呢?
那也非常简单:看你是做什么的
当所开发的产品处于弱网环境下,且对消息的实时性,没那么高,就选EMQX
即可
为啥不选RabbitMq
呢,主要还是这个是针对应用服务级的,比如说有大量订单需要配送,调用到外送平台
这种业务场景,首先对网络环境要求很高,不能丢失消息,其次还能扛得住压力
所以EMQX
这种小型的实现,主要还是针对于机器到机器的通信
我也正在学习EMQX
,使用感受后面分享给大家
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。