软考架构师论文范文(游戏后端)

摘要

2022年1月,笔者参与了公司“Gossip”MMORPG游戏的后端开发项目,并担任系统架构师职务,负责系统的架构设计。该游戏是一款2.5D的大型多人在线角色扮演游戏,旨在为玩家提供一个沉浸式的幻想世界。本文以“Gossip”为例,论述了基于架构的软件设计方法在项目中的具体应用。着重从架构需求、架构设计、架构实现三个阶段展开介绍。在架构需求阶段,通过用户访谈、问卷调查、现场观摩、构造原型的方式全面获取了需求;在架构设计阶段通过UML模型中的4+1视图来对系统的架构进行建模;在架构实现阶段,对系统构件进行了获取、开发和组装。该项目于2024年3月完成验收后正式上线,交付至今运行稳定,得到了公司的嘉奖和用户的一致好评。

正文

随着网络游戏市场的快速发展,MMORPG游戏以其丰富的游戏内容和社交特性,吸引了大量玩家。为了满足玩家对游戏性能和稳定性的高要求,后端系统的开发和部署变得尤为重要。公司一方面看到了MMORPG游戏的市场潜力,一方面也因为公司业务的不断扩展,需要更加高效的游戏后端系统来支撑。

如何实现对大量用户的同时在线支持,保证游戏数据的实时性和一致性,同时实现数据的容灾备份,成了公司亟待解决的问题。笔者所在公司多年从事游戏开发,有着丰富的相关经验,经公司所有部门领导商讨后决定由开发部门负责开发一套MMORPG游戏后端系统。公司组建了20人的开发团队和5名系统实施人员,并任命笔者为该项目的系统架构师,负责软件架构设计和开发工作。

系统经过仔细梳理之后,拆分为六个主要模块。账号管理模块负责玩家账号的注册、登录和权限验证;角色状态管理模块负责玩家角色的状态信息和属性数据;战斗逻辑处理模块负责游戏内战斗相关的逻辑和计算;社交互动模块负责玩家之间的聊天、组队和交易等功能;经济系统模块负责游戏内货币和物品的流通和管理;数据备份模块负责游戏数据的备份和恢复。

ABSD是架构驱动的,强调由商业,质量和功能需求的组合驱动软件架构设计。强调用视角与视图描述软件架构,用用例与质量场景描述需求。ABSD有三个基础,即功能分解,架构风格的选择,以及软件模板的使用。本文首先介绍ABSD开发阶段以及每个阶段包括哪些活动,并结合项目论述ABSD的具体应用,最后讨论一下笔者在本次项目开发过程中遇到的问题和解决方案以及个人感悟。

基于架构的软件设计方法(ABSD)包括架构需求、架构设计、架构文档化、架构复审、架构实现和架构演化六个阶段。架构需求阶段明确用户对系统在功能、行为、性能、设计约束等方面的期望,包括需求获取、标识构件和架构评审;架构设计阶段根据需求生成并调整架构决策,包括提出架构模型、映射构件、分析构件相互作用、产生架构和评审;架构文档化阶段对架构设计分析与整理,产生架构规格说明书和架构质量说明书;架构复审阶段评价架构能否满足需求与实现质量属性、层次构件划分是否合理,标识潜在的风险,及早发现设计中的缺陷错误;架构实现阶段对架构进行实现,包括架构分析与设计、构件实现、组装和系统测试;架构演化阶段主要解决开发中用户需求变更问题,包括架构演化计划、构件变动、更新构件相互作用、构件组装测试与技术评审。

在架构需求阶段,主要问题是MMORPG游戏需要支撑大规模用户的同时在线,这就需要有效、快速地全面获取需求。在需求的前期阶段,采用了用户访谈和调查问卷结合的方式,把需求调研团队分成了几组,分别进行需求收集。通过与游戏设计师的详细沟通,对游戏的主要业务功能、用户角色等有了整体、全面的了解。之后又制作了调查问卷表格,下发给各位测试玩家,经过统计整理后,获悉了玩家对游戏性能和稳定性的期望。在需求的中期阶段,在游戏设计师的协助和安排下,跟随测试玩家,前往公司的测试中心,对目前游戏的测试过程进行了观摩,了解了在游戏测试中,玩家的具体操作流程。在需求的后期阶段,基本上已经完成了大部分业务需求的收集,通过快速原型法构造出了一个仿真的游戏后端系统,供用户试用与反馈,让用户也参与到设计中,提供了工作流程方面、业务领域方面不可或缺的经验,也为以后项目通过验收提供了有力支持。

在架构设计阶段,主要问题是如何合理设计与描述软件架构。以UML模型中的4+1视图来对架构建模。场景视图使用UML模型中的用例图来进行建模,结合用户需求,在系统中划定了玩家、游戏管理员、系统运维三类用户角色,并分别为这些角色标识了相应用例。逻辑视图使用UML模型中的包图来进行建模,经过分析,决定采用微服务架构风格开发,将系统分为账号管理、角色状态管理、战斗逻辑处理、社交互动、经济系统、数据备份六部分。物理视图使用UML模型中的部署图来进行建模,系统微服务采用分布式的部署方法,每个微服务根据实际情况可在同一台物理机器或多台物理机器上同时部署多个实例。集群通过负载均衡做统一访问,部署为路由模式,系统内部网络与外部网络分属于不同的逻辑网络。在负载均衡算法的选择上,使用了最小连接法。

在架构实现阶段,主要问题是系统构件如何实现和组装。构件实现分为两种方式:获取现有构件、开发新构件。游戏后端系统需要与第三方支付系统对接,使用开发商提供的SDK实现;微服务架构的基础框架,如Spring Cloud、Eureka,以及数据库调用的ORM框架等,直接集成第三方软件实现。对于常见游戏后端系统共同具备的用户管理、角色权限管理、日志记录、内容维护、消息中心等基本功能,通过取用单位过往项目开发中所积累的相应构件来实现。对于游戏专属功能构件,需要专门开发,使用了多种设计模式,例如通过工厂模式来实现不同角色的创建和管理,通过策略模式来实现不同战斗逻辑的策略选择。构件实现完成后,根据不同业务类型,采用了不同的构件组装方式。例如战斗逻辑处理服务从角色状态管理服务获取角色状态信息,采用同步消息方式;社交互动服务属于高并发操作,采用异步消息方式;涉及数据备份的业务,采用基于分布式数据库的组装方式。

从本次项目开发整体来看,良好的架构风格选择使模块间耦合度降低,提高了系统的性能,可用性和可修改性等多项指标,满足公司的预期要求,保证系统后期的快速二次开发和数据接入。但在系统开发过程中也遇到一些问题,第一,由于用户数量较多,使用单一的数据库会导致数据访问瓶颈,为此采用分布式数据库和数据分片技术,使用Cassandra作为数据库,以提高数据访问速率。第二,大量的实时消息需要快速处理,为提高效率,增加Kafka作为消息队列和Redis作为缓存,虽然增加了系统的复杂性,但消息处理速率得到了极大的提高。

此次项目的顺利完成为笔者在项目的架构风格选择等方面积累了更多的经验,同时也暴露出自身在架构风格选择方面的还存在一些不足,笔者应当总结本次项目经验,力争在下个项目中做到更好。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/458367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于SpringBoot的中药材进存销管理系统设计与实现

摘要 中药材进存销管理系统是为了满足中药材生产和销售企业的高效管理需求,涵盖了药材采购、库存管理和销售跟踪等主要功能。本系统采用Spring Boot框架进行开发,结合了前端和数据库设计,构建了一个实用的中药材管理平台,为企业提…

游戏服务器被攻击有办法防护吗

游戏服务器受到攻击时比较常见的。就算是刚上线的游戏,都会有被攻击的时候。游戏服务器受到攻击的原因以及解决方案有哪些呢? 游戏服务器被攻击的原因有哪些呢? 1、常见的攻击,大部分来自于同行之间的恶意竞争,你的游…

【QT】Qt窗口(上)

个人主页~ Qt窗口 一、菜单栏二、工具栏三、状态栏四、浮动窗口 Qt窗口是通过QMainWindow类来实现的,我们之前的学习是通过QWidget类实现的 QMainWindow包含一个菜单栏Menu Bar②,多个工具栏Tool Bars③,多个浮动窗口Dock Widgets&#xff0c…

OpenRTP 传输增加OpenRTPServer

开源地址 最近增加了OpenRTPServer, 已经修改完成一版放在了目录下,window和linux下编译都成功了,不过由于修改代码CMakefile 需要修改,先放放 OpenRTP开源地址 vlc得纠错传输方式 我发现我代码写错以后,vlc 依然能…

大数据Azkaban(二):Azkaban简单介绍

文章目录 Azkaban简单介绍 一、Azkaban特点 二、Azkaban组成结构 三、Azkaban部署模式 1、solo-server ode(独立服务器模式) 2、two server mode(双服务器模式) 3、distributed multiple-executor mode(分布式多…

【Rust】环境搭建

▒ 目录 ▒ 🛫 导读需求 1️⃣ 安装Chocolatey安装依赖 2️⃣ 安装RustRover安装toolchain(rustup、VS)重启配置生效设置安装插件 📖 参考资料 🛫 导读 需求 重装系统,记录下环境搭建遇到的问题。 1️⃣ …

【最全基础知识2】机器视觉系统硬件组成之工业相机镜头篇--51camera

机器视觉系统中,工业镜头作为必备的器件之一,须和工业相机搭配。工业镜头是机器视觉系统中不可或缺的重要组成部分,其质量和性能直接影响到整个系统的成像质量和检测精度。 目录 一、基本功能和作用 二、分类 1、按成像方式分 2、按焦距分 3、按接口类型分 4、按应用…

如何制定有效的学习计划

文章目录 第一章:目标设定1.1 目标的重要性1.2 SMART原则1.3 目标设定公式 第二章:时间管理2.1 时间的重要性2.2 制定时间表2.3 时间管理公式2.4 番茄工作法2.5 时间分配公式 第三章:学习策略3.1 学习方法3.2 学习材料的选择3.3 学习效果公式…

量子计算突破:下一个科技革命的风口浪尖在哪里?

内容概要 在当今科技飞速发展的时代,量子计算如同一颗璀璨的明珠,正闪烁着无尽的可能性。它不仅是解决科学难题的钥匙,更是即将引领科技革命的先锋。如今,随着技术的不断突破,量子计算已经步入了一个崭新的阶段。想象…

【ZZULI】数据库第二次实验

【ZZULI】数据库第二次实验 创建学生信息管理系统的数据库通过T-SQL语句创建学生表、课程表、选课表创建学生表创建课程表创建选课表 修改表结构。为SC表添加写的列,列名为备注修改备注列的数据长度。删除SC表的备注列。 通过T-SQL语句对表的列添加约束,…

iOS静态库(.a)及资源文件的生成与使用详解(OC版本)

引言 iOS静态库(.a)及资源文件的生成与使用详解(Swift版本)_xcode 合并 .a文件-CSDN博客 在前面的博客中我们已经介绍了关于iOS静态库的生成步骤以及关于资源文件的处理,在本篇博客中我们将会以Objective-C为基础语言…

实验:使用Oxygen发布大型手册到Word格式

此前,我曾发表过一篇文章《结构化文档发布的故事和性能调优》,文中讨论了在将大型DITA手册转换为PDF格式时可能遇到的性能挑战及相应的优化策略。 近日,有朋友咨询,若将同样的大型手册输出为MS Word格式,是否也会面临…

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…

Python应用指南:利用高德地图API实现路径规划

高德路径规划API是一套基于HTTP协议的接口服务,旨在为开发者提供便捷的路径规划解决方案。该API支持多种出行方式,包括步行、公交和驾车,能够满足不同场景下的路径查询需求。通过调用这些API,用户可以获得从起点到终点的最优路径建…

【Web.路由】——路由原理

这篇文章,我们来讲一讲什么是路由。 路由是 将用户请求地址映射为一个请求委托的过程,负责匹配传入的Http请求,然后将这些请求发送到应用的可执行终结点。 这里需要注意一个内容,发送到应用的可执行终结点。 路由的分类&#x…

大模型落地,要追求极致的务实主义

图源:AI生成 ▎****更快用上最新的大模型,是不是就赢定了? “能够像人类一样操作电脑。”这一堪称革命性的新技能来自10月23日Anthropic最新推出的升级版Claude 3.5 Sonnet模型,据介绍该模型不仅各项性能指标上取得显著提升&…

MobileNetV2实现实时口罩检测tensorflow

项目源码获取方式见文章末尾! 回复暗号:13,免费获取600多个深度学习项目资料,快来加入社群一起学习吧。 **《------往期经典推荐------》**项目名称 1.【Informer模型复现项目实战】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【…

机器学习 - 概述、数据集、Scikit-learn

目录 一、人工智能概述1、概念2、应用领域 二、机器学习1、概念2、数据集的构成3、算法分类a、监督学习b、无监督学习 4、开发流程5、可用数据集总结 三、Scikit-learn1、介绍2、安装3、数据集API介绍4、数据集返回值介绍5、数据集的划分6、数据集划分的API介绍7、案例a、获取鸢…

sass软件数据架构思路——未来之窗行业应用跨平台架构

一、SAAS多商户数据库 1.1 SaaS 多商户数据库的全部商户数据放在一个服务器上 1. 成本效益:集中管理和维护一个服务器通常比维护多个独立服务器更经济,降低硬件、运维和管理成本。 2. 数据集中管理:便于进行统一的数据备份、恢复和数据治理…

高清 MV 无字幕视频素材

在当下的短视频和自媒体时代,高清无字幕的视频素材无疑是创作者们的“得力助手”。不管是用于剪辑情感励志视频、制作搞笑段子,还是创作风景航拍视频,优质的素材库都能让你的创作如虎添翼。今天,我就为大家介绍几个海外的高质量素…