




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于JTT808协议的车辆监控平台架构方案密级:机密生效日期:状态:总页数正文附录编制:审核: 批准:修订记录日期修订版本修改章节功能描述作者目 录基于JTT808协议的车辆监控系统架构方案11.适用范围52.引用标准53.缩略语54.系统架构图65.消息概述85.1消息定义85.1.1采用JSON+MQ/Redis方式85.2网关重启消息95.2.1消息概述95.2.2消息体定义95.2.3消息示例:95.3终端状态消息95.3.1消息概述95.3.2消息体定义95.3.3消息示例:105.4位置信息0200105.4.1消息概述105.4.2消息体定义105.4.3消息示例:105.5其他115.5.1消息概述115.5.2消息体定义115.5.3消息示例:11监控系统网关性能测试报告125.6测试环境125.6.1操作系统,如下图:125.6.2redis缓存服务器125.6.3mongoDB125.6.4mysql135.6.5activemq135.7应用配置145.7.1虚拟机堆内存配置145.7.2activemq配置155.7.3redis配置155.7.4mongoDB配置155.7.5mysql配置165.84000终端测试结果165.8.1测试流程165.8.2连接终端165.8.3activemq后台监控165.8.4网关应用监控175.8.5消息处理应用监控185.8.6redis缓存数据195.8.7mongodb信息195.95000终端测试结果205.9.1测试流程205.9.2连接终端205.9.3activemq后台监控205.9.4网关应用监控215.9.5消息处理应用监控225.9.6mongodb信息22开放平台接口235.10OAuth2.0接口235.10.1获取token235.10.2刷新token235.11元数据接口245.11.1获取元数据对象列表245.11.2获取元数据对象描述255.11.3查询对象记录255.11.4获取对象记录275.11.5新增对象记录275.11.6修改对象记录285.11.7删除对象记录285.12业务接口295.12.1获取设备状态295.12.2获取设备最新一条位置信息305.12.3发送设备控制指令305.12.4部分指令消息体对照表315.12.5获取网关ip321. 适用范围2. 引用标准下列文件通过本文的参考而成为本规范的条款。凡是注日期的参考文件,其随后所有的修改单(不包括勘误的内容)或修订版均不适用于本文,凡是不注日期的参考文件,其最新版本适用于本文。3. 缩略语缩略语中文全名4. 系统架构图1、接入网关应用采用mina+spring架构,独立于其他应用,支持水平扩展,主要负责维护接入终端的tcp链接、上行以及下行消息的解码、编码,网关同时支持JT/T808-2011、JT/T808-2013全部协议,也支持协议扩展而不需要改动任何原有代码。接入网关采用json消息通过MQ消息队列与业务平台进行交互,支持ActiveMQ和RabbitMQ,能够无缝接入各种异构系统。 本网关应用已历经并通过多次交通部部标的检测,性能稳定,适用于物联网(车联网)领域应用,特别是基于JT/T808协议或者其扩展协议的智能终端监控平台,如车辆GPS定位监控平台。经测试在普通pc机上,单个网关应用至少可支持同时1w以上终端同时在线,具备至少600wGPS数据/小时的数据处理能力(见附件性能测试报告)。2、消息处理应用,采用spring+mysql+redis+mongoDB框架,支持水平扩展,是基于事件驱动的责任链设计模式处理终端上行消息、批量存储消息、gps纠偏、发布终端重要消息(告警,上下线等)等平台业务处理,提供消息处理扩展接口而不需要改动任何原有代码。 3、平台接口层是基于spring-boot的微服务架构,底层封装了基于元数据的几大高度抽象的restful风格接口(包括CRUD接口、复杂查询接口、下发消息接口等个性化定制接口),业务系统无需再单独开发数据库相关操作的代码(增加新的数据库表只需要建立entity映射,即可实现增上改查等功能),只需关注业务逻辑开发即可。 4、展现层web端对JQuery EasyUI进行了二次封装,提供部分js常用组件,对于普通的CRUD操作只需按照模板开发相关的界面即可完美展现,web端同时集成了WDR对终端上下线、告警等重要信息实时推送提醒消息。 5、框架集成了redis缓存,通过简单的注解就能使用缓存; 6、在业务功能目前实现了: a、支持JT/T808协议的全部指令,如拍照、文本下发、监听、点名等; b、平台告警设置:原地设防、围栏告警(圆形、矩形、多边形)、超速告警; c、车辆监控:车辆上下线提示、告警实时提示、车辆实时跟踪、历史轨迹、油耗、里程等; d、车辆管理:车辆信息维护、多媒体信息、上行消息、下行消息、告警查询等; e、账号维护:企业注册、企业信息维护、修改密码等; f、各种统计报表。7、接口层同时也提供了开放平台,开放平台遵循标准oauth2.0,提供几大基于元数据的高度抽象的restful风格的增删改查数据接口以及部分个性化定制的业务接口;开放平台支持接口调用频率控制(基于令牌桶算法),支持ip黑白名单、接口调用权限等功能。网关程序下载地址: 试用版程序下载地址:http:/670624517./blog/228139612345. 消息概述55.1 消息定义5.1.1 采用JSON+MQ/Redis方式网关接收到终端的消息后,经过解析封装成json消息发送至对应的MQ(默认配置了activeMQ)/Redis队列,消息处理中心通过监听对应的队列获得对应的json消息;业务系统需要和终端进行通信时,把对应的json消息发送至对应MQ/Redis队列中,网关监听对应的队列把消息发送至终端。交换消息格式定义:exchangeId:平台消息流水号,gatewayId:网关id,messageId:消息id(消息的类型),message:消息体定义主要包括以下四类消息:(1)普通终端消息(交换消息体)(终端向业务系统发送的消息):messageHeader:消息头,messageBody:消息体(2)普通平台消息(交换消息体)(业务系统向终端发送的消息):messageHeader:消息头,messageBody:消息体其中消息头参数是固定的,消息体参考下文的定义,消息头格式:messageHeader:messageId:0002,deviceId:018681892547,messageSeq:6 (3)网关接收到业务平台的消息处理结果的响应消息: exchangeId :平台消息流水号,result:消息处理结果,desc:消息处理结果描述处理结果包括:1,-1字段名类型注释exchangeIdString平台消息流水号resultString1:处理成功;-1:失败descString结果描述(4)链路状态消息,包括终端上线、离线以及网关重启消息5.2 网关重启消息5.2.1 消息概述 消息名称:网关重启消息 消息描述:网关重启消息 消息方向:网关-业务系统5.2.2 消息体定义字段名类型注释messageIdString消息id:00095.2.3 消息示例:message:,exchangeId:,messageId:0009,gatewayId:jtt808-default-server5.3 终端状态消息5.3.1 消息概述 消息名称:链路状态变更通知 消息描述:当下级企业平台与上级政府监管平台链路状态发生变化时,网关发送通知给下级企业平台 消息方向:网关-下级企业平台5.3.2 消息体定义字段名类型注释stateInt终端状态,0:离线;1:上线messageIdString00025.3.3 消息示例:message:state:1,deviceId:018681892547,exchangeId:,messageId:0002,gatewayId:jtt808-default-server5.4 位置信息02005.4.1 消息概述 消息名称:位置 消息Id:0200 消息描述:终端上传位置信息 消息方向:网关-业务系统5.4.2 消息体定义字段名类型注释5.4.3 消息示例:message:messageHeader:messageId:0200,deviceId:018681892547,messageSeq:5 ,messageBody:alarmFlag:10100000000000000000000000000000,statusFlag:11000000000110000000000000000000,lng:109.203745,lat:30.120334,altitude:802,speed:67.0,direction:30,gpsTime:2016-03-08 20:10:21,mileage:12500,oilmass:10,dvrSpeed:67,alarmEventId:1,createTime:2016-03-08 20:10:27,exchangeId:5,messageId:0000,gatewayId:jtt808-default-server5.5 其他5.5.1 消息概述 消息名称: 消息Id: 消息描述: 5.5.2 消息体定义字段名类型注释5.5.3 消息示例:监控系统网关性能测试报告5.6 测试环境本次测试的测试环境全部搭建在一台pc机上,具体配置如下:5.6.1 操作系统,如下图:5.6.2 redis缓存服务器安装的是Redis-Windows-x64.msi版本,使用默认配置,没经过任何优化,如下图:5.6.3 mongoDB安装的是mongodb-win32-x86_64-2008plus-ssl-3.2.7-signed.msi版本,使用默认配置,没经过任何优化,如下图:5.6.4 mysql安装的是5.1版本,使用默认配置,没经过任何优化,如下图:5.6.5 activemq安装的版本是apache-activemq-5.13.3版本,使用默认配置,没经过任何优化,如下图:5.7 应用配置5.7.1 虚拟机堆内存配置Xms512m,如下图:5.7.2 activemq配置5.7.3 redis配置5.7.4 mongoDB配置5.7.5 mysql配置5.8 4000终端测试结果5.8.1 测试流程模拟终端注册,鉴权,上报gps信息。5.8.2 连接终端4000个终端tcp长连接,每个终端大概每隔200毫秒发送1条gps数据,测试约1.5小时,一共发送约650w数据,未出现终端断开重连情况,如下图:5.8.3 activemq后台监控未出现消息堆积情况,未出现消息丢失情况,如下图:5.8.4 网关应用监控通过jconsole监控,压力测试期间虽然堆内存逐步提升,但未出现full GC,由于网关需要进行大量的解码运算,cpu略高,但相对比较平稳,结果如下:5.8.5 消息处理应用监控堆内存以及cpu都比较平稳,瞬间冲高是主要是由于批量处理消息原因,如下图:5.8.6 redis缓存数据5.8.7 mongodb信息数据量一共有700多w,是由于压力测试之前已经存在100多w数据,如下图:5.9 5000终端测试结果5.9.1 测试流程模拟终端注册,鉴权,上报gps信息。5.9.2 连接终端5000个终端tcp长连接,每个终端大概每隔200毫秒发送1条gps数据,测试约1.5小时,一共发送约1000w数据,终端出现1000多次断开重连,主要是因为单台pc上xp系统上tcp连接受限所致,如下图:5.9.3 activemq后台监控未出现消息堆积情况,未出现消息丢失情况,如下图:5.9.4 网关应用监控通过jconsole监控,压力测试期间虽然堆内存逐步提升,出现一次full GC, cpu水平跟4000时差不多,也相对比较平稳,结果如下:5.9.5 消息处理应用监控堆内存以及cpu都比较平稳,瞬间冲高是主要是由于批量处理消息原因,如下图:5.9.6 mongodb信息开放平台接口5.10 OAuth2.0接口5.10.1 获取token获取token。请求路径:POST oauth/token请求头部:Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW红色部分为client_id与client_secret的base64编码后的值,算法base64(client_id+ : + client_secret)请求参数(application/x-www-form-urlencoded):参数名称必须类型说明grant_type是String值为password或者client_credentialsusername否Stringpassword否String返回参数(application/json): access_token:2YotnFZFEjr1zCsicMWpAA, token_type:example, expires_in:3600, refresh_token:tGzv3JOkF0XG5Qx2TlKWIA 请求例子:请求url:POST $host/oauth/token5.10.2 刷新token刷新token。请求路径:POST oauth/token请求头部:Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW红色部分为client_id与client_secret的base64编码后的值,算法base64(client_id+ : + client_secret)请求参数(application/x-www-form-urlencoded):参数名称必须类型说明grant_type是String值为refresh_tokenrefresh_token是String返回参数(application/json): access_token:2YotnFZFEjr1zCsicMWpAA, expires_in:3600, refresh_token:tGzv3JOkF0XG5Qx2TlKWIA 请求例子:请求url:POST $host/oauth/token5.11 元数据接口元数据接口属于框架层面的接口,能够接受和处理基于某一类型的实体的CURD操作,为标准的RESTful风格接口。5.11.1 获取元数据对象列表获取api对象列表。请求路径:GET api/query/api.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明返回参数(application/json):具有权限的api列表,如果没有匹配的结果,则返回空。请求例子:请求url:GET $host/api/api.json5.11.2 获取元数据对象描述获取api对象列表。请求路径:GET api/apiSchema/apiName.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是String路径参数,实体名称返回参数(application/json):具有权限的api列表,如果没有匹配的结果,则返回空。请求例子:请求url:GET $host/api/apiSchema/user.json5.11.3 查询对象记录对象列表查询接口,根据给定的实体名称和可选的查询参数取回查询结果。请求路径:POST api/query/apiName.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是String路径参数,实体名称select否String需要返回的实体对象字段名称,逗号分隔countable否Boolean是否需要返回分页参数(ture or false)orderBy否String排序字段desc否Boolean是否降序(ture or false)pageSize否Integer分页大小,可为空,默认15条pageNo否Integer页数,可为空,默认1form否Object查询条件对象,支持and查询,key-value值,支持gt,gte,lt,lte,eq,neq,like操作form参数参数名称必须说明fieldName.gt否fieldName ?fieldName.gte否fieldName = ?fieldName.lt否fieldName ?fieldName.lte否fieldName = ?fieldName.eq否fieldName = ?fieldName.neq否fieldName ?fieldName.like否fieldName like %?%返回参数(application/json):对象记录列表,如果没有匹配的结果,则返回一个空的数组。请求例子:请求url:POST $host/api/query/user.json?select=id,name&orderBy=createTime&countable=true POST消息体(查询条件): userId .gt:1, userName.like:test, type.eq:15.11.4 获取对象记录获取指定ID的指定对象记录,返回对象记录详情。请求路径:GET api/apiName/id.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是String路径参数,实体名称id是string记录id 返回参数(application/json):对象记录详情,如果没有匹配的结果,则返回空。请求例子:请求url:GET $host/api/user/1.json5.11.5 新增对象记录新增对象记录详情。请求路径:POST api/apiName.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是string路径参数,实体名称form是Object实体对象记录详情,key-value值返回参数(application/json):添加成功后的记录详情请求例子:请求url:POST $host/api/user.jsonPOST消息体: userName:test, type:15.11.6 修改对象记录根据给定的ID修改指定的对象记录。请求路径:PATCH api/apiName/id.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是String路径参数,实体名称id是string实体标识form是Object实体对象记录详情,key-value值返回参数(application/json):请求例子:请求url:PATCH $host/api/user/1.jsonPOST消息体: userName:test, type:15.11.7 删除对象记录删除对象记录。请求路径:DELETE api/apiName/ids.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明apiName是String路径参数,实体名称ids是String路径参数,记录id列表,逗号分隔返回参数(application/json):注:关联的实质可能被级联删除,取决于JPA标注和数据库表的外键约束情况。请求例子:请求url:DELETE $host/api/user/1,2,3.json5.12 业务接口业务接口提供给外部系统的定制化接口,这些接口基于Http/RESTful风格提供,实现特定的逻辑,一般情况下,为了减少业务接口,如果通用接口可以实现到的数据查询,则不再提供定制化的查询接口。5.12.1 获取设备状态请求路径:GET api/device /simCode/state.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明simCode是stringSim卡号,12位,不足前面补0 返回参数(application/json):设备状态,0:未注册;1:已注册;2:离线;3:在线;4:已注销;5:已停用请求例子:请求url:GET $host/api/device/013800000000/state.json.json5.12.2 获取设备最新一条位置信息请求路径:GET api/gps/simCode/last.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明simCode是stringSim卡号,12位,不足前面补0 返回参数(application/json):域对象,如果没有匹配的结果,则返回空。请求例子:请求url:GET $host/api/gps/013800000000/last.json5.12.3 发送设备控制指令请求路径:POST api/jtt808Cmd/simCode/messageId.json请求参数(application/x-www-form-urlencoded):参数名称必须类型说明
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 模拟考试科目一卷子及答案
- 张家口一中考试试卷及答案
- 青岛初一数学考试题型及答案
- 2025零售药店医保培训试题库及答案
- 模糊场景处理策略-洞察与解读
- 五金供应链区块链应用-洞察与解读
- 2025年事业单位招聘考试电子商务类综合能力测试试卷全真模拟及答案
- 环保设备研发与销售合作项目协议
- 2025年事业单位招聘考试综合类专业知识试卷及答案
- 2025年事业单位招聘考试综合类无领导小组讨论面试真题模拟试卷(高原与盆地交通)
- 员工提成申请流程标准模板
- 景区礼仪培训课件模板图片
- 中小学学校教师日常行为规范细则 (2025秋季新版)
- 单相光伏并网反激式微逆变器:拓扑结构、控制策略与性能优化研究
- 2025-2030中国三坐标测量机行业市场发展趋势与前景展望战略研究报告
- 新版八上道法知识点 2025-2026学年统编版道德与法治八年级上册
- 学堂在线 中国传统艺术-篆刻、书法、水墨画体验与欣赏 章节测试答案
- 2025年河南省委党校在职研究生招生考试(政治理论)历年参考题库含答案详解(5卷)
- 口腔科院感知识课件
- 体育教学改革课件
- DB32∕T 4530-2023 生产经营单位安全生产培训规范
评论
0/150
提交评论