1 概述
运动中的GPS数据是典型的时序数据,是由设备在一段时间内连续间隔一定时间生成GPS坐标信息。少量设备的GPS信息处理可以用简单的算法处理,但对于成千上万的设备,就需要考虑算法的执行效率。特别是针对大量用于查询的情况下,例如公交车查询、物流查询等。
时序数据库解决了大量用户更新GPS和查询GPS的性能问题,特别是在附近点查询和最近设备的查询方面能够实现非常高效的性能,并且具有高效的截面数据查询,能够瞬时恢复某一时刻的整体场景。一般时序数据库支持的大量数据的插入与高效的单点查询,本时序数据库同样具有。
对于GPS时序数据的处理选择时序数据库,能够使得普通的服务器承受住大量用户对GPS查询的需求,有效降低运营成本。
1.1性能需求
GPS处理性能的具体需求如下:
项目
要求
实时数据插入
10万个数据源间隔1秒提交
实时查询
点信息查询
10万事件每秒
附近点查询
10万事件每秒(返回20个数据)
最近的N个点a
10万事件每秒,N < 20
轨迹查询
100事件每秒
历史附件点查询
10事件每秒
插入与查询效率不能受到数据量增加的影响。
(该性能目前已经验证通过)
1.2接口要求
一条记录所包含的字段可以配置,不同字段可以选择不同的数据类型,并且可以选择不同的索引。
常见的索引如:数组索引、哈希索引、平衡二叉树索引、快速全球索引必须支持。
更新数据和查询数据支持简单的sql语句,并支持insert和delete Sql语句进行设备的增加删除。
2 程序主体结构
2.1模块关系
如下模块间的整体关系图:
图2 模块间的整体关系图
时序数据库为数据核心,支撑与之关联的所有服务器。前端设备和用户与对应的服务器交互。每个服务器都可以处理前端GPS设备和用户的请求。
2.1时序图
GPS设备、服务器与时序数据库的时序图
说明:
随机数由客户端随机生成,用于与数据的密码加密使用,生成鉴权值。具体使用参考鉴权值计算方法。
设备的登录需要告知给数据库,在数据库中插入一个设备ID;退出时告知数据删除设备ID。
用户、服务器与时序数据库的时序图
用户的登录与退出由服务器直接处理,一般用户对于数据库只有查询功能。
3 服务器设计
服务器的模块划分如下:
最底层为通讯层,负责与前端用户、设备或者后端数据库进行实际数据传输。通信层接收到数据后,放入协议解析层的队列中。
协议解析层负责解析收到的数据,组包拆包,判断数据合法性,数据加密解密都在这一层。经过协议解析层的数据,对内是明文可用的,对外是按照格式封装的。解析后的数据放入消息派发层的队列中。
消息派发将解析到数据发送到对应的模块中处理。
用户管理模块管理用户操作,权限验证等,用户的操作只有查询GPS相关信息与数据库关联。
设备管理模块主要是对设备的管理,如设备登录、退出、提交GPS数据,这些操作都需要和后台的数据库关联。
一 附录
1 命令执行结果代码
代码
说明
2xx
这类状态代码表明服务器成功地接受了客户端请求。
200
命令执行OK
4xx
发生错误,客户端似乎有问题。
401
登录失败,用户名密码错误
402
没有sessionId
403
权限受限
404
命令不存在
405
命令参数错误
5xx
服务器由于遇到错误而不能完成该请求
501
服务器忙,无法处理
2 鉴权值计算算法
鉴权值 = MD5(MD5(密码)^随机数)
首先:将用户输入的密码执行MD5算法,得到密文md5Pwd
然后:md5Pwd与随机数执行异或,具体异或方式如下:
随机数 ^ 密码代码如下:
Char rand[4];//四字节随机数
For(int i=0;strlen( md5Pwd );i++)
{
md5Pwd[i] = md5Pwd[i]^rand[i%4];
}
异或得到的值randMd5Pwd。
最后:得到的randMd5Pwd再次执行MD5,最终得到鉴权值。
相关推荐
基于时序数据库与深度学习的制丝实时数据应用研究.pdf
嘉宾介绍:黄杰,目前在饿了么框架工具部,主要负责饿了么整个监控体系,及相关基础设施(时序数据库,实时计算等)。之前携程框架部负责监控系统。对时序数据库,实时计算,大数据等方面比较感觉兴趣,专注于监控...
基于时序数据库的自动化运维技术研究.rar
基于时序数据库的自动化运维技术研究.pdf
时序数据库介绍与简单应用 Influxdb2.0-版本中概念与flux语法使用、函数简介
时序数据库技术和架构演进.pdf
本源码项目是基于C++的松果时序数据库(pinusdb)设计,包含447个文件,主要使用C++编程语言。该项目是一个时序数据库,旨在提供简单、易用、高性能的数据存储和管理功能。系统支持Linux和Windows操作系统,并采用C#、...
行业分类-设备装置-一种基于时序数据库平台的光伏电站功率预测系统.zip
背景时序数据库可以看到是起监控作用的,如果你要监控很多东西的话,可以看出数据量会很大,并且每时每刻都在写入数据,并且还有数据的查询与分析,所以用mysql加上个
InfluxDB 是一个时间序列数据库,GO 编写的,旨在处理高写入和查询负载。InfluxDB 旨在用作涉及大量时间戳数据的任何用例的后备存储,包括 DevOps 监控、应用程序指标、物联网传感器数据和实时分析。 特点: 专门为...
专注于时序数据库内核研发,分布式数据库查询优化和处理。Apache开源项目Calcite和Drill PMC成员 内容简介:本次技术分享,我们将向大家讲解阿里云时序数据库TSDB新增加的SQL查询引擎,为大家介绍如何用结构化查询...
比较好用的时序数据库。NoSql对于实时数据的存储以及数据的汇总报表计算等比较方便快捷;
HBase专场:HBase在时序数据库中的应用(悠你).pdf
基于Rbatis 的 TDengine 时序数据库驱
同时,基于时序数据库和神经网络算法提出了时间序列系统异常预测算法。通过对时序数据库中的日志数据处理和分析,从而实现系统故障的监测与预警。经测试,该系统可有效监测电力系统运行状况,实现故障监测和预警,...
influxdb时序数据库,数据处理,数据结构分析讲解
工业大数据-时序数据库的现状与未来.pdf
APACHE IOTDB:基于开放数据文件格式的 时序数据库.pdf
时序数据库TDengine白皮书