MQTT学习从零开始

0.起因

在这里先祝大家国庆愉快,MQTT协议第一次听说,还是一个做Java的老司机告诉我的,当时我还在实习,跟他学习了不少Spring的知识,话说新人配置Spring没有个1天估计连Hello,Word都跑不起来,现在接触了PHP、Golang的一些框架,才发现Spring 的配置真是很烦锁,也很复杂,真是浪费程序员的生命啊,在老司机的带领下,我知道了MQTT,主要了解到MQTT常用来做推送,维持心跳,当时也想跃跃一试,直到现在才真正了解MQTT。

1.MQTT介绍

MQTT是一个通信协议,可以实现机器之间通信,在物联网方面有着巨大的优势,在app推送、及时通信都有应用,云巴就是用的mqtt,详细的MQTT入门知识可以看看这篇文章,https://zhuanlan.zhihu.com/p/20888181

2.MQTT特性:

MQTT有以下几个特性

  1. 使用发布/订阅消息模式,提供一对多的消息发布
  2. 使用 TCP/IP 提供网络连接,在tcp之上,tcp和mqtt关系可以看这个链接https://www.zhihu.com/question/23373904
  3. 有三种消息发布服务质量:
    0:至多一次,“0”最不可靠,数据会丢失。
    1: 至少一次,“1"数据丢失会重发,可能接受到多次数据。
    2:只有一次,”2”数据只会发一次,最可靠,最好
  4. 小型传输,开销很小

3.Broker

Broker是什么?broker是代理,发布者发布消息到broker中,订阅都能过broker订阅消息,broker起到一个桥梁的作用,类似于tomcat、nginx,我本以为mqtt是用了tcp协议,可以像tcp一样直接写服务器端和客户端,并不需要这broker,如下图

图是偷来的.png

broker的性能也是众说纷纭,看以下链接
mqtt各种broker如何选择?https://www.zhihu.com/question/27663804/answer/37782398
我尝试过用apollo作为broker,当把limit改为5000多时,apollo就承受不了了,emq是一个中国人做的broker,文档齐全,是用erlang写的,要装erlang环境没有试过,好像还做了负载均衡,不知道性能怎么样。
http://emqtt.com/products

4. 发布订阅

发布者既可以发布也可以订阅,同样的,订订阅者也是可以订阅和发布,这就实现了双方的通信,不难发现这在编程中很常见,是一个异步模式,这也是被用来做推送的原因,举个例子,我们打电话的时候,当对方不接听我们电话也就打不通,必须双方都在才可以通话,这是同步请求/回答,而mqtt则不需要对话的响应,这类似于发邮件,我们发邮件后,对方不一定就立即看到,等他有空的时候打开邮箱才看到,这就是异步发布/订阅的场景。

5. topic

什么是topic?tipic是一个字符串,topic是对消息进行分类,也就是发布者发布消息并且给了一个topic,订阅者通过topic接受到消息,比如有一个topic为“year/month/day”,这不跟url长的差不多嘛,也太好记了吧。topic是可以过虑的,有2个操作符,分别是“+”和“#”,“+”是单层匹配符,可以过滤掉一个层级,如topic是“student/+”,"student/girl","student/boy"可以满足条件,但是"student/girl/22"就不能满足条件了,因为 它比“student/+”多一个层级,这个时候topic改为“student/#”,那么 "student/girl/22"就可以满足条件了,因为“#”是多层级匹配,再多几个层级也没有关系。
注意点:

  • topic为“#”是有效的,它匹配所有topic
  • "#"匹配符包含它的上一级,比如“topic/#”,它会匹配“topic”
  • “topic/day#”是无效的,少了“/”
  • “topic/year/#/month”是无效的,"#"只能在topic最后。

6.最后

MQTT的基础先写到这里,实践过几天再写上,这是一份MQTT协议的中文版,内容非常好,感谢他们的贡献。https://www.gitbook.com/book/mcxiaoke/mqtt-cn/details

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容