本文翻译自nearform的微服务开发工作坊项目,网址如下:https://github.com/nearform/m...
文章介绍了实现IoT微服务相关模块,可以按照例子(已经提供代码)动手做一遍,对各个模块会有新的认识。当然在实际开发中,文中提到的组件均可根据实际替换,灵活运用。
简略翻译,仅供参考。
微服务开发
本系列文章将一步步指导使用node.js、fuge、docker、docker-compose搭建出微服务相关组件。
node版本: Node 4.x +
测试环境: Win7, Win10, OSX, Linux
注意: 这是一个初学者级别的研讨会。希望你接触过node.js模块和应用程序,并对docker及其原理有基本的了解,将回顾并利用这些基础知识。本系列提供了一些简单的尝试环节,可帮助您快速掌握这些技术。
应用
构建的目标应用程序是一个传感数据图表,可从实时展示虚拟传感器发送的数据。应用可被分解为多个单独的服务,每个服务都有明确的功能定义。原理如图所示
前端界面
一个简单的Web应用程序,它使用jQuery,Rickshaw charts和WebSockets来实现,显示将传感器发出的数据生成的实时图表。应用程序包含一个用于与其他微服务进行交互、获取取数据的API。
执行器
一个可以对传感器发出偏移操作指令的微服务
传感器
一个模拟的温度传感器,支持根据获得的执行器偏移指令发送数据
序列化服务
以顺序处理对数据库读取和写入操作的服务。使用websocket-stream实时更新Web应用程序和生成的图表。
代理
为基于物联网的设备构建强大的消息传递层。低耦合的方式连接执行器、序列化服务和传感器。
Influx
在容器中部署的数据库,存储着序列化服务需要处理的大量数据。
完成应用程序搭建后,可以看到如下样式的图表:
库及组件
整个系统使用下面的组件库或技术:
Rickshaw Charts
网页图表库,http://code.shutterstock.com/...
express
HTTP Web服务器库,http://expressjs.com/
websocket-stream
浏览器的web套接字和数据流实时通信的模块。https://www.npmjs.com/package...
browserify
将依赖模块打包成可供浏览器环境使用的工具。http://browserify.org/
Seneca
微服务库,http://senecajs.org/
Mosca / MQTT
MQTT代理,支持大量消息,特别适用于物联网。https://github.com/mcollina/m...
InfluxDB
时间序列数据库,特别适用于时间敏感数据。https://influxdb.com/
Fuge
微服务开发环境。https://github.com/apparatus/...
Docker
准备工作
开始前需要安装node.js及其依赖库,部署docker环境及获取InfluxDB镜像文件,按下面的步骤安装必要的组件:
node.js
访问https://nodejs.org/,下载操作系统对应的nodejs程序。
fuge
安装完node.js后,运行命令安装fuge:
npm install -g fuge
注意 在linux下,请在每步中将fuge-config.js
文件设置proxy: 'none'
。
cURL
Windows下并没有提供curl程序,如果用Windows,请在[https://curl.haxx.se/download...]()下载相应版本,设置好环境变量(在PATH中添加curl.exe所在的文件夹)。
Docker
访问https://www.docker.com/produc... 并根据操作系统选择下载最新稳定版本的docker toolbox。
安装完docker toolbox后,执行命令: docker-machine start default
在终端执行: eval "$(docker-machine env default)"
.
Windows下打开cmd.exe输入@FOR /f "tokens=*" %i IN ('docker-machine.exe env') DO @%i
设置环境变量.详细帮助查看docker环境变量.
确认上述步骤完成: docker ps
在容器环境中使用influx数据库 influx
获取influx容器镜像:
docker pull tutum/influxdb
获取node.js镜像:
docker pull node
一旦完成,就可以开始正式搭建微服务。
程序代码
复制一份程序代码到本地1:
git clone git@github.com:nearform/micro-services-tutorial-iot.git
在代码文件中安装程序依赖的node模块2:
cd micro-services-tutorial-iot
npm install
本系列文章:
- windows下如果没有安装git命令,可以直接访问https://github.com/nearform/m...。 ↩
- node的库可能访问异常,需要科学上网或者使用国内镜像,
npm install cnpm -g --registry=https://registry.npm.taobao.org
之后使用cnpm
代替下文中npm
命令。 ↩
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。