计算机系统应用  2022, Vol. 31 Issue (5): 94-101   PDF    
基于分布式微服务架构的重型车污染物排放监管平台
钱枫1, 刘梦杰1, 王明达2, 王洁1, 杨栋1, 胡蝶1, 夏俊1, 程书瑾1     
1. 武汉科技大学, 武汉 430081;
2. 中国环境科学研究院, 北京 100012
摘要:随着汽车尾气污染问题日益严峻, 生态环境部要求所有国六重型车安装远程排放管理车载终端以监测其尾气排放. 本文设计了一种基于分布式微服务架构的重型车污染物排放分区监管平台, 该平台采集特定区域内所有安装车载终端的重型车实时数据, 对重型车主要尾气污染物氮氧化物、颗粒物进行定量分析, 同时提出了一种判定污染物所属具体行政区的算法, 从而实现了各行政区域内重型车污染物排放总量统计和展示. 最终该平台部署于淄博市生态环境局, 运行正常且数据可靠, 为环保部门的精准监管和治理提供了有力的数据支撑.
关键词: 重型车    尾气排放    监管平台    排放总量    微服务框架    
Monitoring Platform of Heavy-duty Vehicle Pollutant Emission Based on Distributed Micro-service Architecture
QIAN Feng1, LIU Meng-Jie1, WANG Ming-Da2, WANG Jie1, YANG Dong1, HU Die1, XIA Jun1, CHENG Shu-Jin1     
1. Wuhan University of Science and Technology, Wuhan 430081, China;
2. Chinese Research Academy of Environmental Sciences, Beijing 100012, China
Abstract: As the problem of vehicle exhaust pollution becomes increasingly serious, the Ministry of Ecology and Environment of the People’s Republic of China requires all China VI heavy-duty vehicles to install onboard remote emission management terminals to monitor their exhaust emissions. This study designs a zoning monitoring platform of heavy-duty vehicle pollutant emissions based on a distributed micro-service architecture. The platform collects real-time data of all the heavy-duty vehicles with onboard terminals in a designated area and quantifies the main exhaust pollutants of heavy-duty vehicles, namely nitrogen oxides and particulates. Meanwhile, an algorithm determining the specific administrative district to which a pollutant belongs is proposed to count and display the total pollutant emissions of heavy-duty vehicles in each administrative district. The platform is deployed in the Zibo Environmental Protection Bureau. Operating normally with reliable data, it has provided strong data support for the precise monitoring and governance of environmental protection departments.
Key words: heavy-duty vehicle     exhaust emission     monitoring platform     total emissions     microservice framework    

《中国移动源环境管理年报(2020)》显示2019年全国机动车保有量达到3.48亿辆, 重型车尾气污染物中氮氧化物、颗粒物排放占比明显高于其他车型. 国家生态环境部《重型柴油车污染物排放限值及测量方法(中国第六阶段)》对重型车氮氧化物、颗粒物排放标准要求进一步提高, 同时明确规定国六车型必须加装远程监控车载终端[1].

远程监控车载终端主要功能是采集车辆CAN总线信息, 并将信息上传至大数据平台[2]. 通过对十余个地市环保局重型车远程监控平台对比分析发现, 大部分平台只对排放数据进行简单的处理, 然后对单台车污染物排放超标进行判断, 缺乏对指定区域内污染物排放总量进行统计和分析[3].

针对当前重型车远程监控平台对各子区域内污染物排放总量统计的不足, 本文基于分布式微服务架构设计了具备污染物分区统计功能的监管平台, 并进行了实地部署验证.

1 平台功能简介 1.1 平台基础功能

本平台基础功能包括对车辆信息、用户信息、排放状况进行管理并且输出报表, 进行大屏展示, 具体技术方案如表1.

表 1 平台基础功能

1.2 污染物排放量计算

为实现定量分析, 需将车载终端上传的氮氧化物、颗粒物排放数据转化为质量浓度. 表2为部分车载CAN网络报文信息, 平台通过发动机进气量 ${Q}_{\rm{in}}$ (单位: $ \text{kg/}\text{h} $ )和燃油流量 ${Q}_{\rm{fuel}}$ (单位: $ \text{kg/}\text{h} $ )可近似计算出发动机排气流量(单位: $ \text{kg/}\text{h} $ ). 然后根据报文上报时间间隔 $ t $ (单位: $ \text{s} $ )、氮氧化物排放浓度 ${C}_{\rm{nox}}$ (单位: $ \text{ppm} $ )或颗粒物光吸收系数K(单位: $ {\text{m}}^{{-}\text{1}} $ )计算出氮氧化物排放总量 ${M}_{\rm{nox}}$ [4]或颗粒物排放量 ${M}_{\rm{pm}}$ [5]. 相关计算公式如式(1)–式(5).

表 2 车载CAN报文

计算排气流量 ${Q}_{\rm{out}}$ :

$ {Q_{{\text{out }}}} = {Q_{{\text{in }}}} + {Q_{{\text{fuel }}}} $ (1)

计算 $ t $ =30 s氮氧化物排放总量 ${M}_{\rm{nox}}$ :

$ {M_{\rm{nox}}} = {Q_{{\text{out }}}} \times {C_{{\text{nox }}}} \times {10^{ - 2}}/116 $ (2)

计算排气密度 $\;{\rho }_{\rm{out}}$ (单位: $ \mathrm{k}\mathrm{g}/{\text{m}}^{\text{3}} $ ):

$ {\rho _{{\text{out }}}} = 1.293 \times \left( {P/{P_0}} \right) \times \left( {{T_0}/\left( {T + {T_0}} \right)} \right. $ (3)

其中, P为实际大气压力, 单位 ${\rm{kPa}}$ ; $ {P}_{0} $ 为标准物理大气压, 101 ${\rm{kPa}}$ ; T为排气温度, 取SCR前、后排温平均值, 单位 $ ℃ $ ; $ {T}_{0} $ 为绝对零度绝对值, 273.15 ℃.

计算颗粒物浓度(单位: $ \mathrm{m}\mathrm{g}/{\text{m}}^{\text{3}} $ ):

$ {C_{\rm{pm}}} = (K + 0.01641){\text{ }}/{\text{ }}0.0061 $ (4)

计算 $ t $ =30 s颗粒物排放量(单位: $ \mathrm{g} $ ):

$ {M_{\rm{pm}}} = {Q_{{\text{out }}}}/{\rho _{{\text{out }}}} \times {C_{\rm{pm}}} \times {10^{ - 3}}/120 $ (5)
1.3 污染物所属行政区判断算法

为直观的展示各监管行政区内氮氧化物、颗粒物排放情况, 通过车辆实时坐标对污染物排放所属行政区进行判断, 并将排放量累加至所属行政区污染物排放总量中.

将车辆坐标点作为点 $ Q $ , 行政区作为多边形 $ S $ , 判断车辆坐标点是否在行政区内可转换为求解点 $ Q $ 是否在不规则多边形 $ S $ 内. 该问题常用 “射线法”求解, 即以点 $ Q $ 作为起点向多边形 $ S $ 内某一点 $ B $ 做射线 $ QB $ , 当射线 $ QB $ 与多边形 $ S $ 的交点个数为奇数时, 点 $ Q $ 在多边形 $ S $ [6]. “射线法”存在以下几种特殊情况需进行提前判断: 点 $ Q $ 与点 $ B $ 重合、点 $ Q $ 位与多边形 $ S $ 的某一顶点重合、射线 $ QB $ 经过多边形 $ S $ 的顶点.

由于行政区边界复杂, 在采用“射线法”求解时特殊情况和多边形 $ S $ 边的个数多, 使得计算量庞大, 不利于平台对数据进行实时处理. 为控制服务器硬件成本、提高平台性能, 本文提出如下方法对 “射线法”进行了优化, 降低其计算量.

在多边形 $ S $ 中取一点 $ O $ 作为原点, 向水平方向做射线 $ OX $ . 以射线 $ OX $ 为起点, 按固定角度 $ \alpha $ 转动做射线, 当 $ \alpha $ 足够小时, 可将相邻射线与多边形 $ S $ 所构成的图像近似看作扇形. 若扇形中心线与多边形 $ S $ 的交点为点 $ B $ , 则扇形半径取点 $ O $ 和点 $ B $ 之间的距离 $ {l}_{OB} $ . 当车辆坐标点 $ Q $ 位于某一扇形内, 则认为 $ Q $ 在多边形 $ S $ 内, 否则认为点 $ Q $ 在多边形 $ S $ 外, 其原理如图1图2所示.

图 1 “射线法”优化原理图

图 2 “射线法”优化原理图局部放大图

采用优化的“射线法”求解时, 首先将多边形 $ S $ $ \alpha $ 为圆心角分割为多个扇形区域, 以各扇形中心线与边界线交点的极坐标( $ {l}^{n} $ , $ {\mathrm{\alpha }}^{n} $ )(n∈(0, 1,…, ( $ 2\pi /\alpha $ –1))构建参照表. 若点 $ Q $ 极坐标为( $ {l}_{OQ} $ , $\; \beta $ ), 当参照表中某一极坐标( ${l}{{'}}$ , ${\mathrm{\alpha }}{{'}}$ )满足( ${\mathrm{\alpha }}{{'}}-\alpha /2)\leqslant \beta < $ $ ({\mathrm{\alpha }}{{'}}+\alpha /2$ )时, 则此坐标为点 $ Q $ 在参照表中的对应坐标. 当 $ {l}_{OQ} $ 小于或等于 ${l}{{'}}$ 时, 点 $ Q $ 在多边形 $ S $ 内, 反之在多边形外.

当多边形 $ S $ 出现如图3所示的情况时, 即扇形内部存在部分区域不在多边形 $ S $ 内的情况时. 满足 $ {l}_{OQ}\leqslant {l}_{OA} $ $ {l}_{OB} $ $ {l}_{OQ} $ $ {l}_{OQ}\leqslant {l}_{OC} $ 两条件之一则认为点 $ Q $ 在多边形 $ S $ 中.

图 3 多交点原理图

对传统的“射线法”进行优化后, 减少了大量特殊情况和边界交点的计算, 算法的空间、时间复杂度上均具有明显优势. 以淄博市临淄区为例, 其行政区边界由775个坐标点构成, 传统“射线法”在极端情况下, 需进行775次比较点与顶点重合判断、775次射线过顶点判断、775次射线与边界线交点个数判断, 共2 325次计算. 而优化“射线法”计算待比较点坐标后, 只需一次查表和一次比较即可完成. 优化“射线法”较传统“射线法”计算量大大减小. 优化“射线法”在划分扇形区域时, 其边界部位会产生一定的误差, 但误差区域在整个行政区中占比不高, 且车辆流动性强, 故在误差区域的排放量可忽略不计.

1.4 行政区分级遍历

车辆坐标所属行政区判断中, 通过遍历所有行政区边界进行逐个排除, 直至获得最终结果. 由于行政区分布和车辆行驶轨迹变化均存在空间连贯性, 故可对行政区遍历顺序按空间连贯性进行动态调整. 车辆相邻两个时间点上报坐标所属行政区大概率为同一或相邻行政区, 据此在行政区遍历顺序上, 可根据行政区相邻关系进行分级排列, 以减少计算量, 提高数据处理效率.

以山东省淄博市为例, 该市共包含淄川区、张店区、博山区、临淄区、周村区、桓台县、高青县、沂源县8个行政区. 表3为淄博市各行政区空间关系.

表 3 淄博市行政区空间关系表

当车辆上报位置信息化, 平台按任意顺序遍历各行政区, 进行所属行政区判断, 并记录所属行政区作为下次上报的第1优先级行政区, 优先进行判断, 其余行政区按表2对应优先级由高到底进行遍历. 例如当前所属行政区为淄川区, 则下一次判断时第1优先级为淄川区, 根据表2可知第2优先级为张店区、博山区、临淄区、周村区, 第3优先级为桓台县、高青县、沂源县. 按照第1优先级、第2优先级、第3优先级顺序进行遍历, 同优先级内可按任意顺序遍历, 快速锁定车辆所属行政区.

2 平台实现 2.1 通讯协议

监管平台与车载终端以TCP/IP网路控制协议作为底层通讯协议. 参考《GB17691-2018 重型柴油车污染物排放限值及测量方法(中国第六阶段)》中附录Q规定的有关“远程排放管理车载终端的技术要求及通信数据格式”进行应用层协议设计. 通讯协议数据包结构和定义如表4所示.

表 4 数据包结构和定义

上电后由车载终端主动向平台发起TCP连接, 连接成功后终端和平台遵循图4通讯流程图进行通讯. 首先, 终端通过备案请求(命令单元编码: 0x07)上传终端密钥、终端信息和车辆基础信息至平台. 平台对上传信息进行校验后核查终端信息和车辆基础信息是否已在平台提前录入. 处理结果通过备案应答(命令单元编码: 0x08)返回终端.

终端对备案响应状态进行判断, 若响应状态为“正确”(备案正常), 终端继续进行登入操作. 若备案响应状态为“错误”(备案异常)则查验、修改相关信息后重新发起备案请求. 备案流程只需在终端首次上电时进行, 非首次上电跳过备案流程, 直接进入登入流程即可.

终端完成备案后再发出登入请求(命令单元编码: 0x81). 平台核查登入信息, 若设备已完成备案流程, 则分配密钥对, 公钥通过登入应答(命令单元编码: 0x80)返回终端, 私钥存储至数据库. 平台核查登入信息有误则发出“错误”应答. 终端接收登入响应应答为“正确”(登入正常)后进入实时信息上报流程, 反之终端重新发起登入请求.

图 4 通讯流程图

实时信息上报流程中, 终端首先对车辆信息进行组包、加密(采用登入流程中平台回复公钥进行加密)、生成校验码后再上传平台(命令单元编码: 0x01). 平台对上传信息进行解密、解析, 对数据正常报文做出“正确”应答(命令单元编码: 0xF0).

终端根据平台响应状态判断是否进行补发, 响应结果为“正确”即可结束本次上报流程, 其他状态(响应失败、无响应等)则需进行信息补发(命令单元编码: 0x03).

当车辆停止运行时终端上报登出指令(命令单元编码: 0x04), 平台对设备做离线处理.

2.2 平台架构设计

平台并发量高, 采用分布式微服务[7, 8]及前后端分离技术进行架构设计, 可有效提高平台鲁棒性、扩展性. 平台共分为1个前端服务模块和5个后端微服务模块, 如表5所示. 前端主要实现人机交互、数据展示, 后端主要完成平台通讯、数据处理.

图5为平台架构图, 终端通过主服务器IP及开放端口号连接平台“platform”模块. “platform”将终端上报原始报文推送至“dataParser”进行报文解析. “dataParser”对原始报文进行解析后, 生成平台响应报文, 并将终端上报实时信息写入数据库. “area”模块将实时数据中的位置信息与数据库中预存的行政区信息进行比较, 判断所属行政区. “schedule” 模块进行污染物统计分析, 生成相关统计信息.

表 5 平台服务构成表

图 5 平台架构图

2.3 平台后端实现

后端基于SpringCloud框架[9]进行搭建. SpringCloud是一系列框架、组件的有序集合, 拥有功能完善的、轻量级的微服务实现组件, 其丰富的外部开发资源使其具备极高的开发效率. 平台采用Docker作为应用容器, Docker是一个跨平台、可移植且易用的容器解决方案[10, 11], 性能开销低, 可实现平台的快速部署. 后端不同服务之间数据传输通过Kafka (一种分布式发布订阅消息系统)实现, 将每个服务作为一个消费节点, 从而完成平台内部数据的快速交互. 基于Netty实现多线程、高并发的平台外部通讯服务[12].

数据存储采用MySQL和ElasticSearch的双数据库组合方案. ElasticSearch数据库主要具有如下特点: 分布式, 处理方式灵活, 实现了实时检索, 对百亿级的数据查询做到秒级响应, 可以线性扩展集群并且支持插件机制[13, 14]. ElasticSearch数据库比其他主流数据库(MySQL、Oracle、MongoDB等)更适合海量车辆历史数据存储、查询. MySQL数据库则用于平台少量的基础信息存储.

2.4 平台前端设计

前端网页基于VUE框架搭建, 采用蚂蚁金服推出的Ant Design和Echart前端组件库进行开发. 实时监控、电子围栏及可视化大屏地图展示采用高德地图开发者平台提供的Web端接口实现. 图6图9为部分前端网页效果图.

图 6 实时监测界面

图 7 车辆列表界面

图 8 禁行区界面

图 9 报表界面

3 平台部署验证

平台部署于山东省淄博市. 图10图11为24 h内各行政区每小时累计氮氧化物、颗粒物的排放量. 可看出两种污染物在当日上午8点至当日下午7点排放量明显高于前一日晚上9点至当日早上8点, 桓台县、临淄区排放量明显高于其他区县.

平台还可查看行政区历史排放量变化, 图12图13为一个月内临淄区氮氧化物、颗粒物每日的排放总量. 此外平台还支持污染物超标车辆统计、单车超标次数、选定区域超标次数、单车排放总量统计. 通过污染物排放情况统计, 环保部门可充分了解各行政区域内重型车氮氧化物、颗粒物排放情况, 对严重超标车辆进行精准治理.

图 10 淄博各区氮氧化物排放量对比

图 11 淄博各区颗粒物排放量对比

图 12 临淄区氮氧化物排放总量统计

图 13 临淄区颗粒物排放总量统计

4 结论

本文设计的重型车污染物排放监管平台对重型车主要污染物氮氧化物和颗粒物进行定量分析, 并按行政区域对污染物的排放总量进行统计和展示. 为快速判断车辆所属行政区, 本文对“射线法”进行了优化, 对行政区遍历顺序按空间关系进行升级, 大大降低了平台计算量, 提高了平台的运行效率.

通过对淄博市氮氧化物、颗粒物排放情况分区统计发现: 全天不同时段排放量差异较大; 在所有行政区中桓台县、临淄区排放量明显高出其他区县. 据此, 监管部门可针对排放污染严重区域及高排放时间段进行治理, 有效提高监管精准性.

参考文献
[1]
高文彪. 探究环境监测在生态环境保护中的作用及发展措施. 环境与发展, 2020, 32(11): 178, 181.
[2]
张栋才. 基于CAN和OBD-Ⅱ的车载数据采集与信息交互终端开发[硕士学位论文]. 重庆: 重庆大学, 2019.
[3]
田苗, 王军方, 黄健畅, 等. 唐山市柴油车远程监控综合管控平台的开发及应用. 环境科学研究, 2021, 34(1): 132-140.
[4]
冯淼, 阎寒冰. 燃煤电厂排烟中NOx构成及浓度换算的研究 . 山西电力, 2007(S1): 15-16, 20.
[5]
吴玉琴, 陈超, 陈紫光, 等. 室外细颗粒物(PM2.5)计算质量浓度确定方法探讨 . 暖通空调, 2019, 49(7): 83-87, 55.
[6]
章磊, 何芬, 李鸿赟. 一种基于奇异射线法检测点在多边形内的方法. 计算机应用研究, 2020, 37(S2): 133-135.
[7]
Fan P, Liu J, Yin W, et al. 2PC*: A distributed transaction concurrency control protocol of multi-microservice based on cloud computing platform. Journal of Cloud Computing, 2020, 9(1): 40. DOI:10.1186/s13677-020-00183-w
[8]
de Iasio A, Zimeo E. A framework for microservices synchronization. Software: Practice and Experience, 2021, 51(4): 25-45.
[9]
王方旭. 基于Spring Cloud实现业务系统微服务化的设计与实现. 电子技术与软件工程, 2018(8): 60-61.
[10]
黄强文, 曾丹. 基于Spring Cloud和Docker的分布式微服务架构设计. 微型电脑应用, 2019, 35(6): 98-101. DOI:10.3969/j.issn.1007-757X.2019.06.030
[11]
庞宇. Docker技术在软件开发过程中的应用研究. 信息技术, 2019, 43(5): 114-116, 120.
[12]
甄凯成, 黄河, 宋良图. 基于Netty和Kafka的物联网数据接入系统. 计算机工程与应用, 2020, 56(5): 135-140. DOI:10.3778/j.issn.1002-8331.1811-0261
[13]
杨文杰, 倪平波, 宋卫平, 等. 基于ElasticSearch服务化的探究. 科技资讯, 2020, 18(24): 64-65, 68. DOI:10.16661/j.cnki.1672-3791.2004-5010-0726
[14]
张月. 基于ElasticSearch的分布式搜索引擎的设计与实现[硕士学位论文]. 北京: 北京交通大学, 2019.