登录

  • 登录
  • 忘记密码?点击找回

注册

  • 获取手机验证码 60
  • 注册

找回密码

  • 获取手机验证码60
  • 找回
毕业论文网 > 毕业论文 > 计算机类 > 软件工程 > 正文

基于实时数据推送的分布式船舶避碰系统(后台)毕业论文

 2020-02-23 18:20:46  

摘 要

随着世界航运业的发展和国际贸易需求的增加,世界各大海域的船只数量随之急剧增加,由此也导致船舶碰撞事故越来越多。于是,一些早期的船舶避碰系统应运而生,由于年代较久和技术约束,系统在实时性、可拓展性等方面差强人意,这使得这些船舶避碰系统的用户体验大打折扣。本文旨在利用基于web的多层架构来实现实时分布式船舶避碰系统(后台)。

实现一个实时分布式服务端是一项复杂庞大的工程,为了方便开发工作的进展,我们需要借助一个简洁的分布式实时框架。论文比较了多种较为主流的服务端框架,如Pomelo、Dubbo、SmartFoxServer和Bigworld,通过在实时性、分布式和可拓展性等方面的对比,最终决定使用网易开源的Pomelo游戏服务端框架来进行系统的开发和实现。此外,本文还着重分析了如何利用Pomelo框架实现高实时性和分布式。最后为了更好地呈现船舶避碰决策系统(后台)的运行效果,本文还引入了openlayers3(用于加载电子地图)来进行前端界面渲染。

由于单纯的Pomelo框架并不能完全满足船舶避碰系统的要求,本文创新性地对Pomelo框架进行了一些补充,使得后台服务器集群能够调用远程http服务器上暴露的封装了船舶避碰算法的Restful接口。因此这种设计能够很好地实现避碰算法代码分离的低耦合目标。

关键词:Pomelo框架;实时;分布式;低耦合;船舶避碰

Abstract

With the development of the world shipping industry and the increase in the demand for international trade, the number of ships in the world's various sea areas has increased rapidly. As a result, more and more collision accidents have occurred. As a result, some early ship collision avoidance systems came into being. Due to the relatively old age and technical constraints, the system was far from satisfactory in terms of real-time and scalability, which greatly reduced the user experience of these ship collision avoidance systems. This article aims to use a web-based multi-tier architecture to implement a real-time distributed ship collision avoidance system (background).

Realizing a real-time distributed server is a complex and large project. To facilitate the development of the development work, we need a simple distributed real-time framework. The paper compares a variety of more mainstream server-side frameworks, such as Pomelo, Dubbo, SmartFoxServer, and Bigworld. Through comparisons in real-time, distributed, and scalability, the paper finally decided to use NetEase’s open-source Pomelo game server framework. System development and implementation. In addition, this article also focuses on how to use Pomelo framework to achieve high real-time and distributed. Finally, in order to better present the operational effect of the ship collision avoidance decision system (background), this article also introduced openlayers3 (for loading electronic maps) for front-end interface rendering.

Since the pure Pomelo framework does not fully meet the requirements of the ship collision avoidance system, this article innovatively complements the Pomelo framework, enabling the background server cluster to call the Restful interface that encapsulates the ship collision avoidance algorithm exposed on the remote http server. Therefore, this design can well achieve the low coupling objectives of code separation of collision avoidance algorithms.

Key Words: Pomelo framework; real-time; distributed; low coupling; ship collision avoidance

目录

摘 要 I

Abstract II

第1章 绪论 3

1.1 课题背景及意义 3

1.2 本文的研究内容和组织结构 3

1.3 本章小结 4

第2章 系统实现方案的选择 5

2.1 常用的分布式实时框架 5

2.1.1 Alibaba开源Dubbo分布式服务框架 5

2.1.2 SmartFoxServer实时游戏开发工具包 6

2.1.3 BigWorld游戏服务架构 6

2.1.4 网易开源Pomelo游戏框架 7

2.2 框架的选择 8

2.3 Windows下Pomelo的安装 9

2.4 本章小结 12

第3章 基于Pomelo的性能实现 13

3.1 系统架构目标分析 13

3.2 实时数据推送 13

3.2.1 基于websocket协议的请求/响应 14

3.2.2 服务器间的RPC 15

3.2.3 基于channel的广播推送 16

3.2.4 消息压缩 17

3.3 分布式部署 18

3.4 基于RESTful的避碰算法代码分离 20

3.5 本章小结 21

第4章 系统设计 22

4.1 概要设计 22

4.1.1 功能模块划分 22

4.1.2 数据库设计 23

4.1.3 系统框架设计 27

4.2 详细设计 28

4.2.1 类图设计 28

4.2.2 功能时序图 31

4.3 本章小结 35

第5章 系统实现 36

5.1 web-server的实现 36

5.1.1 openlayers3电子海图的加载 36

5.1.2 矢量船舶图标的移动和旋转 37

5.1.3 船舶移动动作的规划执行 40

5.1.4 web-server与game-server的通信 42

5.2 game-server的实现 44

5.2.1 服务端路由 44

5.2.2 广播通信的实现 45

5.2.3 game-server与远程http服务器的通信 46

5.2.4 数据库连接池的实现 47

5.3 本章小结 48

第6章 系统测试 49

6.1 基于Jmeter的性能测试 49

6.2 对web-server与game-server的配合测试 51

6.3 本章小结 51

第7章 总结与展望 52

7.1 总结 52

7.2 展望 52

参考文献 53

致谢 54

第1章 绪论

1.1 课题背景及意义

随着世界航运业的发展和国际贸易需求的增加,世界各大海域的船只数量随之急剧增加,也因此船舶碰撞事故越来越多。 如:在2002年,一艘载货7.7万吨燃油的巨型油轮在西班牙加利西亚省附近海域发生碰撞,事故造成船体破裂,数千吨燃油泄漏,由此带来了严重的海域污染和财产损失。据统计,1995到1996年共有367艘船舶完全损失,这些船舶的总吨位达到180万吨,其中33%的船舶损坏是由于碰撞和搁浅而导致的, 这些船舶占损失总吨位的46%。根据分析80%以上的海上碰撞事故是由操纵不当、嘹望疏忽和操作不当等人为因素引起的[1]

自20世纪70年代,各国尤其是欧美日等发达国家就开始了对船舶避碰智能决策系统的研究,起初各国家只是进行了相关方面的基础研究工作,到20世纪90年代,这些研究工作取得了飞速的发展,与此同时也越来越成为航运界的前沿研究课题。船舶的避碰按情况可分为: 正向相遇,左侧相遇,右侧相遇,追尾[1],具体区分可以根据两艘船相遇角度[2]。根据船舶避碰的原理,各国主要是将专家系统运用于船舶避碰决策的实现,取得这方面工作进展的主要是日本和英国,随后是德国和美国。

我国对船舶智能避碰决策系统的研究起步较晚,而且主要是将经典数学建模运用于智能避碰系统,并没有实现具体可用的船舶避碰系统,因此很多的问题并没有得到很好的解决。关于船舶避碰系统的进程间通信和后台部分,国内有许多相关研究,例如邓绯的关于多用户多任务并发的海量数据异步网络通信的研究[3];朱建兵的基于Node.JS高并发网络应用架构的研究与实现[4];靳辉等人基于并发服务器的网络通信的设计和实现[5];王伟平等人基于NIO的高并发网络服务器模型的研究[6]

本次毕设旨在利用基于web的多层架构来实现高实时的分布式船舶避碰决策系统。其特点就是高实时性而且可以分布式部署。

1.2 本文的研究内容和组织结构

本文主要研究的是利用网易开源的Pomelo游戏框架实现船舶避碰系统。针对系统的功能和性能需求,本文论述了如何利用Pomelo框架实现系统的实时广播通信和避碰算法代码分离,另外还论述了在开发实现该系统过程中遇到的难题以及解决这些难题的方法。

同时为了更加直观的了解实现的功能效果,我们需要一个简单的界面来展示。通过前端界面的操作,例如改变船舶航向和航速,可以判断这些船舶的状态信息是否及时发送到后台服务器,后台服务器是否及时地将这些信息广播通知其他客户端。

为了实现这种前端效果,本文额外对web前端服务器进行了补充和拓展,包括引入openlayers3来加载电子海图,同时利用openlayers3中的vectorLayer添加代表船只的矢量图标。当用户点击屏幕改变船舶航向或航速时,这些船舶矢量图标会同时改变旋转角度和移动速度,这样可以让用户更加直观地了解其实时性的效果。尽管本次毕设只是完成后台部分,但还是需要借助网页客户端来验证后台的功能是否成功地实现了。

通过以上分析,本文的组织结构可以这样划分:在第2章综合比较当前比较流行的分布式实时框架,通过它们性能和开发使用难度等方面的对比论述为何选择Pomelo框架作为解决方案;在第3章着重讨论如何利用Pomelo框架来实现系统的高实时性、分布式和避碰算法代码分离;在第4章介绍系统设计,包括概要设计中的功能模块划分、数据持久化设计和界面设计等内容,还包括详细设计中的系统类图和各个功能时序图;在第5章介绍系统实现,包括web-server和game-server的实现;在第6章介绍对整个系统的性能测试;最后第7章则是对本文的总结和展望。

1.3 本章小结

本章主要介绍了船舶避碰系统的国内外研究背景、研究现状和研究的意义, 同时初步介绍了本文的核心内容和组织结构安排。

第2章 系统实现方案的选择

2.1 常用的分布式实时框架

实现一个分布式实时服务端涉及到许多技术难点,尤其是很多与通信有关的底层业务,为方便开发工作的进展,我们需要借助一个简洁的分布式实时框架来实现船舶避碰系统。就船舶避碰系统的用户使用来看与MMORPG(大型多人在线角色扮演游戏)十分类似,用户对船只的操作相当于一个玩家对游戏中角色的操作,因此一些游戏服务端框架可能十分适合本系统的开发。以下就列举了一些较为流行的分布式服务框架。

2.1.1 Alibaba开源Dubbo分布式服务框架

Dubbo是阿里巴巴旗下的高性能分布式服务器框架,脱胎于于电商系统,旨在提供一个高性能RPC方案和SOA方案,通过基于接口的透明RPC方案以更好实现面向服务的架构(SOA)。其架构如图2.1所示:

图2.1 Dubbo框架图

框架说明:

  • Consumer:RPC的服务消费方;
  • Provider:RPC的服务提供方;
  • Register:注册中心,Provider将暴露的服务在注册中心注册,Consumer可以查询注册中心中暴露的服务并调用,注册中心通常用zookeeper实现。
  • Monitor:服务器集群的监控中心;
  • Container:服务运行的容器;

在Dubbo框架中,服务者与消费者之间通过基于长连接的非阻塞式框架来进行远程通讯,信息交换方式为“请求-响应”模式。由于使用了注册中心的服务,可以使服务消费者动态查询服务提供者暴露的服务。

Dubbo在远程通讯、负载均衡、容错机制和可拓展性等方面兼顾得比较到位,不过其核心的优势在于服务自动注册和发现。由于其设计之初是为电商平台服务,其侧重点是尽可能提高系统的吞吐量,例如对每秒百万级、千万级访问量的支撑,在实时性方面要求并不严格。除此之外,目前Dubbo框架已经被弃用,也停止了维护和更新。

2.1.2 SmartFoxServer实时游戏开发工具包

SmartFoxServer是意大利gotoAndPlay游戏公司推出的基于java的游戏服务器,是一个多平台客户端/服务器开发工具箱,旨在利用Web技术和移动技术集成,使开发人员能够快速创建各种规模的多用户系统。其服务端是在考虑到多人同时在线的情况下设计的,并针对此情况进行了高度优化。其中的客户端/服务器API能够使开发者快速设置虚拟世界的体系结构,例如区域、房间和房间组。

由于SmartFoxServer并不是一个具体的框架,而是进行分布式开发的客户端/服务器开发工具包,并没有具体的架构图,通常都是一些相对独立的功能组件。例如可以利用Netty框架工具包用于高性能RPC通信[8]

SmartFoxServer的接口封装比较简单,基本上通过接口名就能得知其具体功能是什么,以及接口参数的意义是什么,而且其开发文档比较详细,对于非服务器开发专业人员也比较方便,适用于初学者。

如果是想做一个比较简单的多人实时应用,利用SmartFoxServer是比较方便的,因为省去了前期构造服务器网络,实现数据库接口,数据同步等等一些基础功能的开发工作,开发人员可以直奔主题,开发与系统直接相关的功能。

2.1.3 BigWorld游戏服务架构

BigWorld是由澳大利亚BigWorld公司发布的一款C 游戏引擎,致力于快速有效地开发MMOFPS(大型多人在线第一人称射击游戏)的高性能服务端、高级3D客户端和应用接口。通过实时负载均衡系统,BigWorld架构可以消除传统网络游戏服务器中的任意地域限制,同时通过不断监视负载,可以根据反馈回的服务器运行状态以及时调整服务器群的资源分配,从而将服务器端的软硬件资源动态分配给各个分区的用户。

BigWorld作为游戏架构的核心亮点就是动态负载均衡,这使得系统能够最大化地利用服务器的软硬件资源,也使得服务器具有良好的负载能力和较高的容错性。

BigWorld的另一个亮点就是支持无缝世界。与普通的游戏服务架构相比,BigWorld并没有将区域单元交由独立的进程管理,而是根据用户数量进行划分。这种支持无缝世界的特性对于本论文的船舶避碰系统在海图区域的实现上意义重大。

很遗憾,BigWorld是一款商业游戏服务架构,并不是开源的,如果一次性购买需花费200万美元。如果本文的船舶避碰系统是一个实际的商业开发项目,选择BigWorld架构无疑可以大大减小开发难度,降低系统研发失败的风险。

2.1.4 网易开源Pomelo游戏框架

作为被网易公司在实际运营中用来进行消息广播推送的工具, Pomelo框架在性能、可扩展性、分布式等方面能力是比较突出的,并且它的使用非常简单。它本身包含了基础开发框架和一系列有助于开发和测试的工具和库,可以让开发者直接去实现具体的业务逻辑而不需要花费过多精力在与硬件相关的底层编码上。由于其本身强大的可伸缩性和灵活性,Pomelo也可以作为通用的分布式实时应用开发框架,这一点对于本文的船舶避碰系统的开发实现具有重大意义。Pomelo的架构组成,如图2.2:

图2.2 Pomelo架构组成图

下面是对Pomelo架构图的一些说明:

  • server management:用于维护、监控和管理各个服务器的运行状态;
  • network:负责Pomelo框架中的通信,既包括服务器与客户端的通信,也包括服务器集群中各个服务器进程之间的通信(即服务器间的rpc调用)。
  • application: 用于全局定义、组件管理和上下文配置。

2.2 框架的选择

从使用的方便程度来看,SmartFoxServer作为一套实时游戏开发工具箱,需要开发者选择合适的组件自行搭建框架,另外在搭建过程中,各个组件之间还需要各种配置,如果对SmartFoxServer开发不熟悉是很容易出现错误的。其他三种框架比起SmartFoxServer拥有完整的框架,开发者只需要安装即可。

从开发角度来看,Dubbo框架有个致命缺陷,其jar包依赖繁多而且这些jar包在版本方面不一定兼容,这种问题看似容易解决实则令人头疼。这可能就是Dubbo社区停止维护Dubbo框架的原因之一。使用一个已经停止更新维护的Dubbo框架,很可能使开发工作在遇到一个棘手的问题时难以得到解决。

以上是毕业论文大纲或资料介绍,该课题完整毕业论文、开题报告、任务书、程序设计、图纸设计等资料请添加微信获取,微信号:bysjorg。

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

企业微信

Copyright © 2010-2022 毕业论文网 站点地图