fearlessxjdx 2019-06-28
这章节我们将为系统建立一个简单的前端界面。首先安装一些依赖环境并运行起来,按照下面的步骤开始:
如果还没有准备好,可以先在获取的代码仓库 micro-services-tutorial-iot 下运行npm install
命令,完成之后运行如下命令:
cd frontend/api
node index.js
打开浏览器(推荐使用chrome、firefox),输入地址http://localhost:10001. 可以看到一张图表,简单吧。
接下来将开始建立数据库。这步将借助于Docker,如果没有镜像,可以使用一行命令获取:
docker pull tutum/influxdb
如何运行influxdb容器可以参考文档: https://hub.docker.com/r/tutu...
难点是运行起influxDB容器,一旦成功运行,可以在浏览器中查看influx的网页界面。
使用如下命令启动容器
docker run -d -p 8083:8083 -p 8086:8086 tutum/influxdb
使用命令获取容器中的IP地址
docker-machine ip default
http://<dockermachineip>:8083/
打开influx控制台-p
参数用于将容器的8083、8086端口暴露给宿主机;
-d
参数告知docker运行后台模式
当在本地运行docker容器时,特别留意每个单独的虚拟机使用各自的IP地址(尤其是Mac系统、Windows系统)
使用docker kill
命令可以随时停止容器
目前数据库已经运行,接下来将创建微服务用于读写数据库。已经编写好了序列化服务代码,位于step1/services/serializer文件夹下
当前目标是编写一个小脚本,运行后可将温度数据写进influx数据库。当服务启动后,可以使用下面的命令将数据点提交给服务程序。
curl -X POST -d '{"role": "serialize", "cmd": "write", "sensorId": "1", "temperature": 32}' http://localhost:10000/act --header "Content-Type:application/json"
提示 如果检查serializer.js
源文件 ,可以发现使用了下列环境变量:
初始化脚本应确保正确设置了上述变量数据
通过浏览器中的influx网页界面输入下列查询语句,可以检查数据点被真实写入influx中
use temperature; select * from temperature;
注意 序列化程序是一种seneca1微服务。Seneca作为独立层可实现多种传输机制,包括TCP, HTTP, RabbitMQ, Redis, NATS等。在本教程中,使用Json格式数据通过HTTP传输机制。
下一步是连接前端和序列化服务,实现在前端图表中读取传感器发送的数据。
序列化服务对应的更新后前端程序位于 step2/frontend.
面临的挑战是启动Influx数据库、前端程序、序列化服务。需要编写脚本实现启动前端服务和序列化服务。
当启动这两个服务,使用testWrite.sh脚本发送数据到influx数据库后,就可以在前端页面查看。
注意 如检查更新后的前端代码,可发现如下环境变量
在打开前端前,需要设置上述变量。
现在系统只有3个模块,但已经很难管理。在这步中,面临的挑战是让系统通过Fuge运行。Fuge是一种微服务开发环境,帮助简化应对本地进程和docker容器
在 step3/fuge 包含两个文件:
docker compose
格式指定系统所用的进程等面临的挑战是使用fuge终端运行系统,可以查看fuge相关文档https://github.com/apparatus/...。 系统启动费后,可以使用脚本step3/services/serializer/testWrite.sh (windows下用testWrite.bat)检查运行状态。前端页面图表可直观展示数据。
提示 必须先停止之前所有进程及容器
提示 确认使用 npm install -g fuge
命令安装了fuge.
提示 可以使用 fuge shell
开启fuge终端
启动fuge
fuge shell fuge/compose-dev.yml
启动所有服务
start all
注意 Fuge用于关联进程和dock 容器,使用如下机制:
本系列文章: