收藏 分销(赏)

基于jtt808协议的车辆监控平台架构方案.doc

上传人:人****来 文档编号:4964139 上传时间:2024-10-21 格式:DOC 页数:33 大小:1.87MB 下载积分:12 金币
下载 相关 举报
基于jtt808协议的车辆监控平台架构方案.doc_第1页
第1页 / 共33页
基于jtt808协议的车辆监控平台架构方案.doc_第2页
第2页 / 共33页


点击查看更多>>
资源描述
基于JTT808协议的车辆监控平台架构方案 密级:机密 生效日期: 状态: 总页数 正文 附录 编制: 审核: 批准: 修订记录 日期 修订版本 修改章节 功能描述 作者 目 录 基于JTT808协议的车辆监控系统架构方案 1 1. 适用范围 5 2. 引用标准 5 3. 缩略语 5 4. 系统架构图 6 5. 消息概述 8 5.1 消息定义 8 5.1.1 采用JSON+MQ/Redis方式 8 5.2 网关重启消息 9 5.2.1 消息概述 9 5.2.2 消息体定义 9 5.2.3 消息示例: 9 5.3 终端状态消息 9 5.3.1 消息概述 9 5.3.2 消息体定义 9 5.3.3 消息示例: 10 5.4 位置信息0200 10 5.4.1 消息概述 10 5.4.2 消息体定义 10 5.4.3 消息示例: 10 5.5 其他…… 11 5.5.1 消息概述 11 5.5.2 消息体定义 11 5.5.3 消息示例: 11 监控系统网关性能测试报告 12 5.6 测试环境 12 5.6.1 操作系统,如下图: 12 5.6.2 redis缓存服务器 12 5.6.3 mongoDB 12 5.6.4 mysql 13 5.6.5 activemq 13 5.7 应用配置 14 5.7.1 虚拟机堆内存配置 14 5.7.2 activemq配置 15 5.7.3 redis配置 15 5.7.4 mongoDB配置 15 5.7.5 mysql配置 16 5.8 4000终端测试结果 16 5.8.1 测试流程 16 5.8.2 连接终端 16 5.8.3 activemq后台监控 16 5.8.4 网关应用监控 17 5.8.5 消息处理应用监控 18 5.8.6 redis缓存数据 19 5.8.7 mongodb信息 19 5.9 5000终端测试结果 20 5.9.1 测试流程 20 5.9.2 连接终端 20 5.9.3 activemq后台监控 20 5.9.4 网关应用监控 21 5.9.5 消息处理应用监控 22 5.9.6 mongodb信息 22 开放平台接口 23 5.10 OAuth2.0接口 23 5.10.1 获取token 23 5.10.2 刷新token 23 5.11 元数据接口 24 5.11.1 获取元数据对象列表 24 5.11.2 获取元数据对象描述 25 5.11.3 查询对象记录 25 5.11.4 获取对象记录 27 5.11.5 新增对象记录 27 5.11.6 修改对象记录 28 5.11.7 删除对象记录 28 5.12 业务接口 29 5.12.1 获取设备状态 29 5.12.2 获取设备最新一条位置信息 30 5.12.3 发送设备控制指令 30 5.12.4 部分指令消息体对照表 31 5.12.5 获取网关ip 32 1. 适用范围 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黑白名单、接口调用权限等功能。 网关程序下载地址: 试用版程序下载地址:  1 2 3 4 5. 消息概述 5 5.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 字段名 类型 注释 exchangeId String 平台消息流水号 result String 1:处理成功; -1:失败 desc String 结果描述 (4)链路状态消息,包括终端上线、离线以及网关重启消息 5.2 网关重启消息 5.2.1 消息概述 Ø 消息名称:网关重启消息 Ø 消息描述:网关重启消息 Ø 消息方向:网关->业务系统 5.2.2 消息体定义 字段名 类型 注释 messageId String 消息id:0009 5.2.3 消息示例: {"message":{},"exchangeId":"","messageId":"0009","gatewayId":"jtt808-default-server"} 5.3 终端状态消息 5.3.1 消息概述 Ø 消息名称:链路状态变更通知 Ø 消息描述:当下级企业平台与上级政府监管平台链路状态发生变化时,网关发送通知给下级企业平台 Ø 消息方向:网关->下级企业平台 5.3.2 消息体定义 字段名 类型 注释 state Int 终端状态,0:离线;1:上线 messageId String 0002 5.3.3 消息示例: {"message":{"state":1,"deviceId":"018681892547"},"exchangeId":"","messageId":"0002","gatewayId":"jtt808-default-server"} 5.4 位置信息0200 5.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-server"} 5.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_credentials username 否 String password 否 String 返回参数(application/json): { "access_token":"2YotnFZFEjr1zCsicMWpAA", "token_type":"example", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA" } 请求例子: 请求url: POST ${host}/oauth/token 5.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_token refresh_token 是 String 返回参数(application/json): { "access_token":"2YotnFZFEjr1zCsicMWpAA", "expires_in":3600, "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA" } 请求例子: 请求url: POST ${host}/oauth/token 5.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.json 5.11.2 获取元数据对象描述 获取api对象列表。 请求路径: GET api/apiSchema/{apiName}.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 apiName 是 String 路径参数,实体名称 返回参数(application/json): 具有权限的api列表,如果没有匹配的结果,则返回空。 请求例子: 请求url: GET ${host}/api/apiSchema/user.json 5.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 页数,可为空,默认1 form 否 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":1 } 5.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.json 5.11.5 新增对象记录 新增对象记录详情。 请求路径: POST api/{apiName}.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 apiName 是 string 路径参数,实体名称 form 是 Object 实体对象记录详情,key-value值 返回参数(application/json): 添加成功后的记录详情 请求例子: 请求url: POST ${host}/api/user.json POST消息体: { "userName":"test", "type":1 } 5.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.json POST消息体: { "userName":"test", "type":1 } 5.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.json 5.12 业务接口 业务接口提供给外部系统的定制化接口,这些接口基于Http/RESTful风格提供,实现特定的逻辑,一般情况下,为了减少业务接口,如果通用接口可以实现到的数据查询,则不再提供定制化的查询接口。 5.12.1 获取设备状态 请求路径: GET api/device /{simCode}/state.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 simCode 是 string Sim卡号,12位,不足前面补0 返回参数(application/json): 设备状态,0:未注册;1:已注册;2:离线;3:在线;4:已注销;5:已停用 请求例子: 请求url: GET ${host}/api/device/013800000000/state.json.json 5.12.2 获取设备最新一条位置信息 请求路径: GET api/gps/{simCode}/last.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 simCode 是 string Sim卡号,12位,不足前面补0 返回参数(application/json): 域对象,如果没有匹配的结果,则返回空。 请求例子: 请求url: GET ${host}/api/gps/013800000000/last.json 5.12.3 发送设备控制指令 请求路径: POST api/jtt808Cmd/{simCode}/{messageId}.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 simCode 是 string Sim卡号,12位,不足前面补0 messageId 是 string 808协议定义的消息id POST消息体 是 json Json格式的消息体 simCode必须是12位,不足12位,前面补0,如013800000000 消息发送后: 消息状态:-1:未知错误;0:消息发送成功;1:终端不在线;2:消息有误;3:消息不支持;4:等待网关处理; 应用需定时检查该消息状态,待发送成功后,再去定时查询消息上行表获得终端响应消息 返回参数(application/json): 请求例子: 请求url: POST ${host}/api/jtt808Cmd/013800000000/8500.json POST消息体: { "flag": 10000000 } 注8500:车门加锁指令 5.12.4 部分指令消息体对照表 消息ID 消息体 描述 8500 {     "flag":"00000000" } flag为标志位,从左往右对应第1,2,n位 8300 {     "flag":"11100000",     "text":"测试文本" } Flag为标志位,从左往右对应第1,2,n位 8201 {} 消息体为空 8104 {} 消息体为空 8107 {} 消息体为空 8108 {         "upgradeType":0,         "mfrsId":"123456",         "version":"v11.2",         "upgradePackageData":"8A00FFFD9" } 其中 upgradePackageData为十六进制字符串 8106 {         "paramTypes":[             "0001",             "0002",             "0003",             "0004",             "0005"         ]     } paramTypes为参数id 8103 {         "paramList":{             "0082":"38",             "005A":"12C",             "0015":"test123",             "0001":"1E",             "0084":"1",             "0059":"B4",             "0057":"258",             "0055":"50"         }     } paramList为key-val键值对,其中key为参数id,val为要设置的终端参数的值,DWORD,WORD,BYTE类型的参数值要转成十六进制值 其他消息体可以参考《808消息体定义参考文档.rar》 5.12.5 获取网关ip 请求路径: GET api/gateway.json 请求参数(application/x-www-form-urlencoded): 参数名称 必须 类型 说明 返回参数(application/json): {     "code":0,     "data":{         "port":3005,         "ip":"127.0.0.1"     } } 请求例子: 请求url: GET ${host}/api/gateway.json 目 录 第一章 总论........................................................... ........................1 1、项目名称及承办单位................................................................1 2、编制依据........................................................ ...........................4 3、编制原则....................................................................................5 4、项目概况..................................................... ..............................6 5、结论............................................................................................6 第二章 项目提出的背景及必要性................................................8 1、项目提出的背景........................................................................8 2、项目建设的必要性....................................................................9 第三章 项目性质及建设规模........................................................13 1、项目性质...................................................................................13 2、建设规模...................................................................................13 第四章 项目建设地点及建设条件................................................17 1、项目建设地点............................................................................17 2、项目建设条件............................................................................17 第五章 项目建设方案..................................................................25 1、建设原则...................................................................................25 2、建设内容...................................................................................25 3、工程项目实施...........................................................................33 第六章 节水与节能措施..............................................................37 1、节水措施...................................................................................37 2、节能措施.........................
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服