前言
为什么要写这本书
2011年我在硅谷的时候,曾经参与设计和开发了一个物联网平台。这个平台的目的是为各种物联网设备提供统一的通信接口,以及提供数据存储和分析功能,降低物联网设备商的开发和运营成本。不过由于物联网设备的异构性太强,同时平台的愿景过于超前,而当时物联网应用的发展包括资本的投入都远不及现在,这个项目不得不半路中止。
2015年,我在国内和朋友联合创办了一家物联网相关的公司。为了支撑公司的硬件产品,我们开发了一个提供统一通信和数据服务的物联网平台,不过吸取了之前的教训,这个平台只限于对同一组织(公司)里的多个产品提供支持。当时各大云服务商,比如阿里云,也提供了非常成熟的物联网套件,我们将这些物联网套件中的一些功能移植到了自研的物联网平台上。这个平台从技术层面很好地支持了公司从0到1、从1到N持续盈利的全流程。
在这个过程中我遇到过一些问题,也总结了一些非常有用的经验。在此期间,我也加入了一些物联网开发者的社区。在日常的技术交流里,我发现一些开发人员对常用的物联网协议的理解是有问题的,对一些功能应该在协议层面解决还是在业务层面解决不是很清楚。我曾在互联网上搜索过相关的技术文章,发现系统性地讲解协议的规范和特性非常少,不是只对一两个功能进行介绍,就是翻译协议规范,缺乏代码示例。
在这种情况下,我在GitChat码字专栏写了我的第一篇文章《MQTT协议快速入门》,详细地对物联网应用中最常见的MQTT协议的规范和特性进行了讲解,并对每一个特性附以丰富的代码示例。
加入专栏文章的读者交流群后,我又发现读者们还有很多关于设计、业务架构上的疑问,深入理解MQTT协议并不能解决这些问题。这让我意识到,在物联网行业,并不像Web开发那样有成熟的设计模式和框架可以使用,开发者往往都是从协议级别开始往上搭,重复地造轮子。
这时,我觉得有必要把我们在开发物联网平台中遇到的困难和总结的经验分享出来,从协议开始讲起,再覆盖物联网后台开发中常见的设计模式和最佳实践,让其他的物联网开发者少走一些弯路,少造一些轮子,进而更快速、高效地上线自己的产品。
读者对象
·物联网应用开发者
·物联网架构师
·物联网平台开发者
·对物联网感兴趣的开发人员
·有一定经验的IM平台、移动推送平台开发人员
·渴望学习更多物联网实际开发经验的人员
如何阅读本书
本书涵盖物联网应用开发80%的场景,理论和实战并重。本书内容分为三大部分。
第一部分(第1~2章)为物联网基础知识介绍,涵盖物联网的概念和常用协议。
第二部分(第3~5章)为MQTT协议详解,通过详尽的示例代码对MQTT协议的规范和特性进行讲解。
第三部分(第6~12章)为物联网平台开发实战,从0开始用开源的组件搭建一个名为“Maque IotHub”的物联网平台,在这个过程中讲解物联网后台开发中常见的设计模式和最佳实践。
在最后补充有结语与附录。结语总结了本书讲到的相关系统与知识体系,附录介绍了运行Maque IotHub的方法和步骤。
如果你对MQTT协议已经非常了解,可以直接从第三部分开始看起,第二部分可用作协议规范参考。
如果你是一名初学者,请务必从第1章的基础知识开始学习。
勘误和支持
除封面署名外,参加本书编写工作的还有:赵华振、李斌锋、邓斌、戚祥、于伟、皮文星、陈育春、陆正武、虞晓东、张恒汝、高喆、刘威、刘冉、付志涛、宗杰、王大平、李振捷、李波、张鹏、管西京、闫芳、王玉芹、王秀明、杨振珂。由于作者的水平有限,编写时间仓促,书中难免会出现一些错误或者不准确的地方,恳请读者批评指正。
书中有大量的实例代码,都可以从我的GitHub站点(https://github.com/sufish)下载。你也可以关注我在GitChat的专栏(https://gitbook.cn/gitchat/author/59ed8409991df70ecd5a0f8f),并加入专栏读者群交流。如果你有更多的宝贵意见,也欢迎发邮件到yfc@hzbook.com。期待能够得到你们的真挚反馈。
致谢
首先要感谢EMQ X的开发者和贡献者们,开发和维护一款强大的开源MQTT Broker非常不易。
感谢GitChat提供的平台,你们的引荐和帮助促成了本书的出版。
感谢机械工业出版社华章公司的杨福川老师和各位编辑,在这么长的时间中始终支持我写作,你们的鼓励和引导帮助我顺利完成全部书稿。
感谢我公司的全体同仁,是你们的共同努力才给我提供一个能够实践自己想法的机会和平台。
最后感谢关心我的家人,尤其是我的妻子和女儿,你们的支持是我完成本书的原动力!
谨以此书献给我最亲爱的家人,以及广大的物联网开发者!
付强