物联网架构成长之路(3)-EMQ消息服务器了解

1. 了解html

  物联网最基础的就是通讯了。通讯协议,物联网协议好像有那么几个,之前各个协议都有优劣,最近一段时间,好像各大厂商都采用MQTT协议,因此我也不例外,不搞特殊,采用MQTT协议,选定了协议,接下来就是选一个MQTT服务器(Broker),项目初期确定是使用开源的解决方案会好一点,一方面是有人为之填坑,一方面能够快速搭建原型。等之后有人、有资源、有用户,在本身定制开发一套系统。基于各类考虑(更多的是领导的要求)选择了国人开发的MQTTBroker EMQ框架 (http://emqtt.com/),目前最新版本是2.3.1 接下来大部分环境都是基于此版本的。git

2. Erlang语言github

  一开始叫我学习这个语言我仍是拒绝的,固然如今也是。其实我仍是比较倾向于Java实现的MQTTBroker - Moquette 这个的。没办法,须要就学咯。编程

  学习Erlang,我是在http://www.erlang-cn.com/这里找个快速入门的,简单了解一下语法和语言特性。没有怎么深刻理解,这个在目前不是重点,在后面开发插件时,边写边学才是最快的。总结几个与以往有所区别的特性吧:数组

  (1)非面向对象,面向函数(并发)编程服务器

  (2)无循环结构,只能经过递归实现,尽可能采用尾递归并发

  (3)变量不可变框架

  (4)无数组概念,不能经过下标访问函数

  (5Erlang消息传递机制学习

3. EMQ框架

  这个http://emqtt.com/ 是中文的官网,这个http://emqtt.io/ 是英文的官网。因为是国人本身开发的,加上我本身英文很差,其实看中文文档就能够了。文档 http://emqtt.com/docs/v2/index.html http://emqtt.com/downloads 这里下载个能够用的版本,而后跟着文档一步一步就能够搭建起来了。没有什么能够说的,我说的尚未官方文档好。里面的一些知识点和商业吹捧也能够了解一下。

4. EMQ编译、安装

  好了,这部分才是重点,因为官网提供的是二进制可运行版本,可是每一个公司对应的业务需求都不一样,全部就须要进行二次开发。EMQ提供的二次开发机制是,建议使用插件方式进行扩展。因此这里就须要下载源码了。

  安装Erlang/OTP 框架

  安装 emq-relx EMQ编译环境

1 git clone https://github.com/emqtt/emq-relx
2 cd emq-relx
3 make

  这个make过程会比较久,会下载一大堆依赖,依赖存放在 deps 目录,而后把编译结果存放在 _rel 目录下,实际生产过程当中,就是拷贝这个 _rel 目录下的全部文件就能够了。

  我在当前(2017-12-21)版本下,编译的时候遇到如下这个问题

1 src/emq_sn_gateway.erl:592: undefined macro 'SN_RC_MQTT_FAILURE'

  我临时解决的办法是./emq-relx/deps/emq_sn/include/emq_sn.hrl:56 行增长一个宏定义

1 -define(SN_RC_MQTT_FAILURE,   16#04).

  临时解决编译问题。

  这个依赖下载过程会比较久,大部分是依赖与Github,下载编译后,目录有136M大小

  

  下图就是编译好了

   

  编译后,产生一个_rel 目录,这个目录下的文件,就是咱们在官网上 http://emqtt.com/downloads 下载后解压的结果了。二者基本是同样的。

  运行

   

1 ./bin/emqttd start
2 ./bin/emqttd_ctl status
3 ./bin/emqttd stop

  控制台地址: http://127.0.0.1:18083 默认用户密码 admin/public

  更多内核调优,请参考官方文档。

  几个经常使用端口,也能够看一下

   

5. EMQ运行

  运行后,能够打开 http://host:18083 登陆到后台管理界面。没什么说的,就在上面玩一会。

  

相关文章
相关标签/搜索