论文研究-高性能海上船舶定位服务器设计与实现 .pdf

所需积分/C币:9 2019-08-17 00:22:29 573KB .PDF

高性能海上船舶定位服务器设计与实现,岳超,潘维民,目前海上船舶定位的主流解决方案是AIS定位。AIS 全称船舶自动识别系统,是安装在船舶上的一种导航设备,这种设备可以在海事VHF 频段�
国武技论文在线 StaticData t WIlliS l length double dth: doublc shipname: char AISData StaticDat +DynamicData Ii DynamicData t e latitude: double navstatus int 数据结构 服务器模块设计 服务器包含五大模块:接收模块,缓存模块 存储模块 计算模 块,服务模块。其中缓存模块以及存储模块是两个重点模块,这两个模块与 用户需求直接相关,对性能要求较高。 接收模块主要负责接收数据,由于数据量较大,可以采用的传输方 式以保证效埊。接收模块启动吋会在指定端口进行监听,接收到数据后进行解析 供后续模块使用。 缓存模块主要用来应对引言中提出的前两个需求,该缓存保存每条船最新发送的 信息,要同时应对较大量的读写请求。一方面服务器不断接收数据,这些新 的数据要写入缓存中,另一方面用户的请求需要从缓存中提取数据,这两方面的需求 对缓存的并行性能有较高的要求。 存储模块主要负责将接收到的数据存入数据库中以应对基于数据的数据挖掘 需求。数据量较大,考虑接收全球正在航行的船舶的信息,大约需要 至 的带宽,大约每秒会收到条数据。如果需要将这些数据全部存储卜来, 般的关系型数据库很难满足性能要求。本文硏究了目前在领域比较流行的数 据库,决定采用 数据库米存储海量数据。 计算模垬主要根据数据做一些肮海行为的计算并将这些计算结果存入数据库 船知的数据会告诉我们许多有价值的信息,如结合船舢的定位信息我们可以判断船知 目前停泊在哪个港口。计算模块产生的计算结果数据量并不大,可以直接存入普通的 数据库中。本模块涉及的业务逻辑较多较复杂,不是本文关注的重点。 服务模块负责对外提供服务,提供统一的接口供夕部调用。服务模块配合中间 件可以对不同的外部服务器做岀不同的授权,并支持多种语言进行外部调用。服务模块 可以从内存缓存 以及 中提取数据 国武技论文在线 数据流式架构 在吞吐量较大的系统中,如何处理各模块之间的耦合决定了系统的效率。本文设计了流 式数据架构来将各个模块串联起来,在保证系统吞吐量的基础上尽量保持了各模块的松耦合 性以及整个系统的效率 所谓流式数据架构就是利用多个缓冲区来保证多个模块可以同吋工作,数据从接收模块 进入系统的第一个缓冲区,然后经过缓存模块处理后放入第二个缓冲区,在缓存模块处理数 据时,接收模块仍然继续工作把接收米的数据不断放入第一个数据缓冲区中,依此类推 流式数据模型的各个模块同时工作,保证了系统的并行性能。同时模块间相互独立, 个模的错误不会积累到另一个模块,耦合性较低。各个模块可以同时开发,同时测试,大 大降低了开发难度。服务器的流式架构如下 AISDaraA接收模块 A5级存卫攻一 缓冲区 AS存储模块 AS计算模块 务k外 缓冲叉 DB(Hypertable MYsql 图 服务器流式架构 缓冲区的设计可以使用生产者消费者队列模型。缓冲区两端的模块分别担任生产者和消 费者的角色,生产者向缓冲区队列中添加本模块处理过的数据,消费者从缓冲区队列 中取出经过上一个模块处理的数据。为了提升缓冲队列的效率,需要让缓冲区支持批 量添加和批量取出功能。 缓存结构设计与实现 缓存设计 缓存主要放在内存中,在系统中是十分必要的。实时数据接收的数据流量平 均为 接收到的数据写入内存,同时对外提供查询服务,数据厍很难 应付如此大量的实时请求。由于需求主要为通过指定某一范围来请求该范围内的船舶最新定 位信息以及通过船舶 编号来请求船舶最新的详细信息,因此可以采用两个索引 国武技论文在线 来实现该缓存。 第一个索引存储区域编号以及该区域内的所有船舶的 编号,区域编号是索引字 段。区域编号即对整个地球进行划分,每个划分块指定一个编号,划分方法可以自行设计。 本文所实现的服务器所采用的划分方法是:将整个世界地图分为 份,最左下角的 份编号为,第一份右边的编号为,第一份上边的编号为,最右上角的编号为 接收数据时,可以通过经纬度进行简单的计算可以盲接算出该编号,然后将数据 编号放至对应的 集合中。 第二个索引存储船舶的 编号及其对应的详细信息。 编号作为索引字 段,其直接对应一个 结构,保存这条船的最新信息。 SH MAP KEY ⅤALUE HRegionID: int HASH MAP 2 VALUE +MMSI int +AISData 图 缓存二级索引 用户请求某一范围的船舶定位信息时,需要先计算岀该范围所包含的区域编号的集合, 然后对每个区域编号查询 ,得到该区域范围内的所有船舶的 编号,通过 编号查询 即可得到船舶的定位信息。 用户根据编号请求船舶的详细信息时,直接査询第二个索引即可通过 查找到对应的 结构,取得船舶定位,速度以及航向等详绀信息后加以组织并 返回即可满足需求二。 缓存实现 设计中采用索引结构,比较方便的解决方案就是采用中的 但是由于 不提供线程安全机制,为了解决线程同步问题,需要在使用该 时设置临芥区,由 于临界区是对整个 进行锁定,而系统进行的操作是针对每条船进行信息提取或者 更新,所以这样的锁定必然会影响效率。 )即线程构建模块,是公司开发的并行编程开发工具。 该模块中包含了几种并行容器类,包括 这三个模板类 库中所有的并行容器类全由精心设计的馈实现, 无论何时调用了其中的一个方法,只有方法涉及到的数据结构部分被锁定,而结构的其他部 分则允许其他线程同时访问。 符合数据缓存的需要,当系统更新或者读取某船舶的信 息时,只有该船对应的 结构会被锁定,此时仍然能对其他船舶的信息进行读写 国武技论文在线 操作。 在并发效率上较提供的 有较大提高,下面是对两 种容器进行多线程同时读操作的测试: 测试条件 处理器,内存, 位操作系统,两个容器中已经分 别有一百万条数据,同时启动五个线程对结构进行互斥性访问。 表 性能比较 合询次数 貪询的何 食询的间 海量数据存储设计与实现 数据库在服务器中的应用 和关系型数据库一样采用表的形式存储数据,其数据查询方式也采用语 句,但不支持表的关联杏询以及 的直接查询。其查询只能是通过 这一点和 比较相似, 日前也支持按一定范围的进行查询。与 不同 的是,其 按照列族进行组织,每个列族是包含很多列的集合,他们一般只有相同的类 型属性,列数不受限制。系统在存储和访问数据表时都是以列族为单位进行组织 在数据量庞大时,查询性能良好,但在数据量较小时性能并不·定比传统关 系型数据库优越。 具有良好的可扩展性,底层支持分布式存储,只需要增加集群 中的机器就可以扩容,数据有冗余设计,任何一个节点的大效不会导致系统丢失数据,也不 会导致系统瘫痪。 的特点就是在查询海量数据时很高效。其存储数据的方式基于 键 值对,结合数据的特点,比较适合利用 存储。 加上时间可以确定唯 的一条信息,所以存储的设计为 ,为字符串,字符串包含 数据的其他内容,以竖线分隔。 存储模块与 的适配 存储模块屏蔽了底层数据库的差异,存储模块可以与多种数据库相关联 等分布式数据库的并发读性能均十分出色,但同样也存在着缺点。分布式存 储系统的写开销比较大,涉及到一系列的同步处理, 也不例外。在向 写数据时会造成读性能的人幅度衰减,因此在设计存储模块时必须与 做出适配。 考虑到 不能应付频繁的数据写入,则在存储模块需要将数据缓冲起来,定时 批量将数据插入 中 性能测试 是按照节点比例设计,以撰写,可架在 和 上。有 不错的效能:写入列的资料,各节点写入速率可达 ,读取速率可达 如下为读性能测试结果: 测试环境: 处理器,内存, 位操作系统, 数据量: 国武技论文在线 读性能测试 测试项 平均耗时 査询某船舶的单条数据 查询苿船舶天的薮据段 查询某船舶天的数据段 从查询速度来看 在査询结果数据量较大时性能递减不明显,在进行数据挖掘 需要提取大量数据时性能出色。 结论 本文完成了对海上船舶定位服务器的设计,包括服务器整体的数据流架构以及重点模块 的详细设计。并在设计之后按要求实现了本服务器,用于某航海信息平台中,向客户端提供 海上定位等服务。从日前的使用情况来看,海上定位服务器性能良好,同时升级开发比 较方便,只有良好的扩展性, 参考文献 初秀民,徐海潮,刀剑等基于多线程的船载自动识别系统报文解析中国航海,, 侯东风,陆昌辉,刘青宝等流式数据多维模型系统工程与电」技术, 亓开元,赵卓峰,房俊等针对高速数据流的大规模数据实时处理方法计算机学报, 魏海涛,于俊清,余华飞等一种面向数据流程序的软件沇水并行化方法计算机学报,, 于戈,王国仁实时数据流管理技术研究训算机应用,, 程俊,杨卓宁,费冮涛等分布式海量数据管理系统 底层存储结构分析兵工自动化,, 白敬培,潘清,冯建峰等分布式海量数据管理系统 关键技术分析网络安仝技术与应用

...展开详情
img

关注 私信 TA的资源

上传资源赚积分,得勋章
    最新推荐