基于中间件技术的云服务端实现

2018-02-22 12:32张骋
无线互联科技 2018年23期

张骋

摘 要:互联网技术的发展,开源技术越来越活跃,也越来越成熟,产生出越来越多的优秀的中间件。文章利用开源的中间件,设计一个新能源车的动力电池管理系统的云服务,来具体地构架云服务的平台。服务器以3层结构方式搭建,由7种开源的中间件组成,Linux,RethinkD,MQTT,Node.js,GraphQL,d3.JS,Vue.js覆盖从操作系统到应用软件的全部实现。具有架构简单、功能丰富和轻量级的特点,具有很强的负荷能力,很好的可扩展性。

关键词:云服务架构;低成本高效率;中间件二次开发

互联网的发展,使得很多企业都把服务业务通过云端,延伸到远程的云服务中心。于是,只需要一个终端、一台笔记本甚至一个手机,就可以通过云服务来完成服务业务。现代化办公环境将由简单的终端组成,价格便宜且维护容易。企业数据中心的运行将与互联网更相似,将资源切换到需要的应用上,根据需求访问计算机和存储系统。

同时计算机技术和互联网技术的发展,开源技术越来越活跃,也越来越成熟。产生出越来越多的优秀的中间件。很多大厂商也跟随潮流开放了自己的源代码。利用开源的中间件技术进行二次开发,大大降低了开发成本,增强了稳定性,提高了软件运行效率。

本文对中间件的功能描述均来自开源中国社区[1]。

1 云服务的架构

本文通过利用开源的中间件,设计一个新能源车的动力电池管理系统的云服务,来具体构架云服务的平台。该平台也可以作为类似业务的架构参考。通常的服务器都是二层或3层结构的配置,本服务器以3层结构方式搭建,底层是数据源,上层是客户端应用支持,中间层为应用服务层。

本系统逻辑3层架构如图1所示。

1.1 数据源层

处于最底层的数据源层,收集储存电池动态参数的信息数据,提供对数据库的访问,接受对数据库的优化。

1.2 应用服务层

中层是应用服务层,这也是本系统的核心模块,支撑着整个系统的各个业务逻辑正常执行。对所有被监控的电池状态数据进行统计、整理和规范化,统计特征量;做大数据分析和数据挖掘;按照车载信息自动优化配置电池管理系统(Battery Management System,BMS)。支持客户层实现应用功能,支持对数据库的读写访问和优化。

1.3 客户层

最上层是客户层。移动端通过API模块下载APP访问云端,了解电池相关的实时状态,故障预测,周期预估,用电量计量以及授权范围内各种信息访问等功能;车端到云端的上、下行通道,可利用车联网或独立建立。版本远程升级、实现BMS配置热切换等功能,充电状态、行车状态、换电状态等,以及BMS软件版本升级时在权限范围内部署到车端。可以用空中下载技术(Over the Air Technology,OTA)功能下载和更新软件;分析结果显示模块,根据统计数据分析形成各种统计曲线、表格和图形等有效的实时电池信息及预警信息,实时地在监控中心人机交互和显示。所统计的数据覆盖到所有被监控范围的BMS产品,同时在线台数可达到百万数量级以上。

2 云服务的用途

本例为BMS的云端,它的作用主要体现为:(1)监控电池状态。用户通过移动端等方式了解电池的状态。车企通过BMS云得以跟踪所有动力系统的实际工况。(2)优化电池使用方案。对电池的用途和容量进行管理,给予更准确的续航里程。为用户提供应急容量或帐篷模式等使用方式。(3)动态更新配置。车企通过BMS云得以对动力系统进行实时修补和改良。用户可以获得更针对自己动力电池的BMS配置。(4)改进技术。借助更丰富的数据来源进行大数据分析,为今后的新能源电池及管理的开发提供参考数据。OTA方式升级系統。

3 云服务器的技术实现方案

根据系统的用途需求,结合客观环境的条件,按照最适合的原则选用中间件来搭建服务器云端监控,技术实现方案如图2所示。该服务器由8种开源的中间件组成,覆盖从操作系统到应用软件的全部实现。

3.1 操作系统Linux的Ubuntu

首先要选择的是操作系统,Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。Linux有多种版本,Ubuntu[2]是一个以桌面应用为主的Linux操作系统,由全球化的专业开发团队打造的,被称为最适合物联网,最适合云服务的操作系统。Ubuntu除了开源、免费之外,具有强大的网络功能和开放的平台性,运行安全、对内存和文件的管理能力、占用内存小、命令行操作高效等优势。目前Linux在服务器中的装机量还是很大的。

3.2 数据库RethinkDB

其次要选择的是数据库,由于RethinkDB目前支持几乎所有的64位Linux发行版。RethinkDB[3]支持各种底层存储,是一个完全支持Memcached协议、数据可持久化的工业级key-value存储系统。RethinkDB数据库,支持像AWS这样的云存储服务。能够处理一些要求启动快速的服务,在数据量超出内存大小后还要有高的性能,处理各种不稳定的读写压力,处理大量数据等的服务负载。因此,数据库选用RethinkDB,现有的硬件条件下,能支持更高的应用负载。

3.3 服务器MQTT的MOSCA

服务器是云服务的核心,其性能的优劣决定了用户对整个系统运行的使用体验。最重要的是必须在技术上可靠、快速和可扩展。MQTT协议是一种机器对机器(M2M)的协议,它是一种面向消息的协议。它是非常轻量级的,被物联网生态系统广泛采用。几乎所有的物联网云平台都支持通过MQTT与几种不同的智能设备发送接收数据。MQTT是一种发布/订阅、极其简单和轻量级的消息传递协议,专为受限的设备和低带宽、高延迟或不可靠的网络而设计。这正好符合远程连接车载设备,最小化网络带宽和设备资源需求,同时试图确保可靠性和一定程度的交付保证[4]。由于我们选用的开发语言是JavaScrip,因此,选用MOSCA作为本系统的后端服务器软件。

3.4 运行环境Node.js

本系统所选用的开发语言是JS,因此选用了基于ChromeV8引擎的JavaScript运行环境Node.js[5]。它的包管理器npm,是全球最大的开源库生态系统。Node.js是一套用来编写高性能网络服务器的JavaScript工具包。Node.js使用了一个事件驱动、非阻塞式I/O的模型,使其轻量又高效。因此,很方便地使用JavaScript开发出各种对数据的统计应用功能。

3.5 服务器平台

Linux+RethinkD+MQTT组合成服务器平台,实现了基础数据层。而支撑数据应用层开发平台则是由RethinkDB+Node.js组成。

3.6 数据查询服务GraphQL

云服务的服务器的应用功能最主要的是实现监控,支持BMS云服务的客户端功能,基础技术就是查询。由Facebook开发的,用于API的查询语言GraphQL[6],成为最佳选择。GraphQL每天都为Fackbook接收、处理着上百亿的请求,为Fackbook提供了强大的基础数据平台的支持。它使得客户端能够准确地获得它需要的数据,而且没有任何冗余。它既是一种用于API的查询语言,也是一种满足数据查询的运行服务。使用GraphQL,可以基于图模式定义后端,然后客户端就可以请求所需要的数据集。

3.7 其他应用程序d3.JS,Vue.js

本系统的应用程序界面,也可以用到开源的中间件进行二次开发,可以使得开发过程简单、快速且可靠。这些中间件是可视化库D3.js[7]。D3是最流行的可视化库之一,它被很多其他的表格插件所使用。它允许绑定任意数据到DOM,然后将数据驱动转换应用到Document中,创建惊人的SVG条形图。D3可帮助使用HTML,SVG和CSS将数据变为现实。D3是一个JavaScript的函数库,用它来做数据可视化。另一个是渐进式JavaScript框架Vue.js[8]。它是一套构建用户界面的渐进式框架。Vue.js采用自底向上增量开发的设计。它的主要特性是:可扩展的数据绑定;将普通的JS对象作为model;简洁明了的API;组件化UI构建;配合别的库使用。它的核心库只关注视图层,非常容易与其他库或已有项目整合。

4 结语

通过选择最适用的中间件,进行二次开发而架构的云服务的系统,达到了系统的设计目标:实时了解电池状态;动态配置电池;优化电池使用方案;通过数据挖掘改进电池及管理技术。具有架构简单、功能丰富和轻量级的特点,具有很强的负荷能力,很好的可扩展性。可实时监控万级数量以上的BMS端。可快速查询数据分析特征量并及时作出反馈。

当用户数量增加时,可以通过增加MQTT节点实现更大的同时连接数量。未来通过在 MQTT数据管道上加入更多的模块可实现更为复杂的业务需求,并保证升级的平滑性。

[参考文献]

[1]开源中国.开源中国社区[EB/OL].(2018-05-16)[2018-09-25].https://www.oschina.net/.

[2]Canonical Ltd.Ubuntu(源代码)[EB/OL].(2018-02-21)[2018-09-25].https://www.ubuntu.com/index_kylin.

[3]Linux Foundation.RethinkDB(源代码)[EB/OL].(2018-03-06)[2018-09-25].https://rethinkdb.com/.

[4]GitHub.Andy Piper(源代码)[EB/OL].(2013-12-16)[2018-09-25].https://github.com/mqtt/mqtt.github.io/wiki/mosca.

[5]RYAN D.Nodejs(源代码)[EB/OL].(2018-05-03)[2018-09-25].https://nodejs.org/en/.

[6]Facebook.GraphQL(源代碼)[EB/OL].(2018-04-15)[2018-09-25].https://graphql.org/.

[7]MIKE B.D3js(源代码)[EB/OL].(2018-07-03)[2018-09-25].https://d3js.org/.

[8]Evan You.VUEjs(源代码)[EB/OL].(2018-05-19)[2018-09-25].https://vuejs.org/.

Abstract:With the development of Internet technology, open source technology is becoming more and more active and mature. More and more excellent middleware is produced. In this paper, the open source middleware is utilized to design the cloud service of the power battery management system of a new energy vehicle to specifically construct the cloud service platform. The server is constructed in a three-layer structure consisting of seven open source middleware, including Linux, RethinkD, MQTT, Node.js, GraphQL, d3.JS and Vue. js cover all the implementations from the operating system to the application software. With simple architecture, rich functions and lightweight features, with strong load capacity and good scalability.

Key words:cloud service architecture; low cost and high efficiency; middleware secondary development