资讯专栏INFORMATION COLUMN

按步搭建简单IoT微服务(2)

shiyang6017 / 748人阅读

摘要:尝试目标下一步是连接前端和序列化服务,实现在前端图表中读取传感器发送的数据。序列化服务对应的更新后前端程序位于面临的挑战是启动数据库前端程序序列化服务。系统启动费后,可以使用脚本下用检查运行状态。

整体架构

这章节我们将为系统建立一个简单的前端界面。首先安装一些依赖环境并运行起来,按照下面的步骤开始:

如果还没有准备好,可以先在获取的代码仓库 micro-services-tutorial-iot 下运行npm install命令,完成之后运行如下命令:

cd frontend/api

node index.js

打开浏览器(推荐使用chrome、firefox),输入地址http://localhost:10001. 可以看到一张图表,简单吧。

尝试目标0

接下来将开始建立数据库。这步将借助于Docker,如果没有镜像,可以使用一行命令获取:

docker pull tutum/influxdb

如何运行influxdb容器可以参考文档: https://hub.docker.com/r/tutu...

难点是运行起influxDB容器,一旦成功运行,可以在浏览器中查看influx的网页界面。

目标0实现步骤

使用如下命令启动容器

docker run -d -p 8083:8083 -p 8086:8086 tutum/influxdb

在step1/services/influx/文件夹中有简便启动influx容器的命令集

使用命令获取容器中的IP地址

docker-machine ip default

在浏览器中输入http://:8083/打开influx控制台

-p 参数用于将容器的8083、8086端口暴露给宿主机;

-d 参数告知docker运行后台模式

当在本地运行docker容器时,特别留意每个多带带的虚拟机使用各自的IP地址(尤其是Mac系统、Windows系统)

使用docker kill命令可以随时停止容器

尝试目标1

目前数据库已经运行,接下来将创建微服务用于读写数据库。已经编写好了序列化服务代码,位于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_HOST

serializer_PORT

初始化脚本应确保正确设置了上述变量数据

通过浏览器中的influx网页界面输入下列查询语句,可以检查数据点被真实写入influx中

use temperature;
select * from temperature;
目标1实现步骤

在step2/services/influx文件夹包含influx容器启动脚本

在step2/services/serializer文件夹包含序列化服务源代码

使用 step2/services/serializer/run.sh (Windows用run.bat)脚本启动服务

使用 step2/services/serializer/testWrite.sh (windows用testWrite.bat)脚本发送测试数据

使用influx控制台查看数据点

注意 序列化程序是一种seneca1微服务。Seneca作为独立层可实现多种传输机制,包括TCP, HTTP, RabbitMQ, Redis, NATS等。在本教程中,使用Json格式数据通过HTTP传输机制。

尝试目标2

下一步是连接前端和序列化服务,实现在前端图表中读取传感器发送的数据。

序列化服务对应的更新后前端程序位于 step2/frontend.

面临的挑战是启动Influx数据库、前端程序、序列化服务。需要编写脚本实现启动前端服务和序列化服务。

当启动这两个服务,使用testWrite.sh脚本发送数据到influx数据库后,就可以在前端页面查看。

注意 如检查更新后的前端代码,可发现如下环境变量

PROXY_HOST

serializer_PORT

frontend_PORT

在打开前端前,需要设置上述变量。

目标2实现步骤

使用step3/services/influx下的脚本启动influx容器

运行脚本 step3/services/serializer/run.sh (windows下用 run.bat) 启动序列化服务

Start the frontend with the script 运行脚本step3/frontend/run.sh (or run.bat)启动前端界面

在浏览器中输入 http://localhost:10001/显示前端页面

使用脚本step3/services/serializer/testWrite.sh (windows下用 testWrite.bat)发送一些测试数据

前端页面中应出现数据点的表格

尝试目标3

现在系统只有3个模块,但已经很难管理。在这步中,面临的挑战是让系统通过Fuge运行。Fuge是一种微服务开发环境,帮助简化应对本地进程和docker容器

在 step3/fuge 包含两个文件:

compose-dev.yml - 使用docker compose格式指定系统所用的进程等

fuge-config.json - fuge全局配置文件

面临的挑战是使用fuge终端运行系统,可以查看fuge相关文档https://github.com/apparatus/...。 系统启动费后,可以使用脚本step3/services/serializer/testWrite.sh (windows下用testWrite.bat)检查运行状态。前端页面图表可直观展示数据。

提示 必须先停止之前所有进程及容器

提示 确认使用 npm install -g fuge命令安装了fuge.

提示 可以使用 fuge shell 开启fuge终端

目标3实现步骤

step4/fuge 文件夹包含fuge终端的配置

启动fuge

fuge shell fuge/compose-dev.yml

启动所有服务

start all

打开 http://localhost:10001 查看图表

使用脚本 step4/services/serializer/testWrite.sh 发送数据到序列化服务

注意 Fuge用于关联进程和dock 容器,使用如下机制:

注入环境变量到每一个进程

启动内部代理,在进程和容器间进行桥接


本系列文章:

按步搭建简单IoT微服务(1)

按步搭建简单IoT微服务(2)

按步搭建简单IoT微服务(3)


  • Seneca是Node.js微服务框架开发工具。它的目的在于复制架构师和开发人员的服务想法,提供方法把代码融入到由模式所触发的逻辑行为中,这是根据用例所作用的模型。一旦被定义,模式就可以轻松转为API,使用用例和模式来定义消息内容 ↩

  • 文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/27512.html

    相关文章

    • 在MAC上搭建python数据分析开发环境

      摘要:最近工作转型到数据开发领域,想在本地搭建一个数据开发环境。自己有三年开发经验,马上想到使用搭建一套数据开发环境。的环境,百度中文章比较多,搭建起来非常顺利。环境的资料比较少,百度出来的,已经不对了,那我就来补充一篇吧。 最近工作转型到数据开发领域,想在本地搭建一个数据开发环境。自己有三年python开发经验,马上想到使用numpy、scipy、sklearn、pandas搭建一套数据开...

      dendoink 评论0 收藏0
    • 2019年云业务的畅想:拨云见日

      摘要:阿里巴巴全资收购中天微年月,阿里巴巴宣布全资收购中天微,具体金额并未透露。阿里云在今年月份的深圳云栖大会上表示,阿里云的定位是物联网基础设施的搭建者,计划在未来年内连接亿台设备。回顾2018年的云计算市场,可算是风起云涌:云计算巨头们依然保持着惊人的高速增长,大刀阔斧的进行架构调整、并购重组,企图在云计算赛道上实现弯道超车;行业新进的创新公司则依然保持着十足的活力,在各大细分领域展现出无比的...

      DDreach 评论0 收藏0
    • 发现一个非常好用的RTC(实时音视频通信)方案,做直播和视频通话都很牛

      摘要:除了一些线程调度和线程模型的调整,我们还需要进行业务逻辑上的优化,比如缩减高消耗,低反馈的业务模块,降低消耗,限制业务逻辑队列内存分配增长空间,避免某些业务场景中内存持续增长导致系统奔溃。 1、HaaS RTC背景介绍 HaaS RTC是阿里云IoT联合视频云开发的IoT设备端上的实时通...

      LeviDing 评论0 收藏0
    • 2021爱智先行者—记录一次 Spirit 1 和 IoT Pi 开发板的实战经历

      摘要:安装完成后,在的左下角选择创建项目,具体操作如下图所示项目创建页面会出现很多模板库,如果只有两个或者没有模版,可以尝试点击左下角的刷新模板信息按钮。 目录 前言 正文 一、IoT Pi 开发板介绍 二、开发实战 1. 连接设备 2. 搭建开发环境 3. 开始编码 4. 编译打包 5. 安装应...

      Amos 评论0 收藏0

    发表评论

    0条评论

    shiyang6017

    |高级讲师

    TA的文章

    阅读更多
    最新活动
    阅读需要支付1元查看
    <