基于Erlang/OTP的游戏服务器端通用模块的设计与实现
发布时间:2021-01-05 18:45
随着移动设备硬件的不断普及以及互联网技术的不断发展,加上人们日益增长的精神娱乐需求,基于移动设备的网络游戏行业逐渐成为发展极其迅速的行业之一,而服务器端则是网络游戏的重要组成部分,承载着服务诸多客户端的任务。而基于Erlang/OTP的游戏服务器端,则凭借着擅长处理高并发、可靠的网络服务、迭代迅速等特点,受到很多游戏项目的欢迎。本文立足于实际应用,结合了在实习工作内容中面临的问题以及积累的经验,论述了一种可行的基于Erlang/OTP的游戏服务器端的架构,在此基础之上尝试进行大多数游戏的服务器端中不可避免的通用技术模块的设计与实现。包括:使用本地缓存ETS内存表的参数配置表的加载方式;一个便于扩展数据库集群,以代理服务器的方式访问数据库,基于emysql与ProtoBuf的便捷、易扩展的数据存取方式;通用服务器行为模式genserver在缓写机制以及id分配上的应用;分布式缓存路由算法的改进,数据淘汰策略,以及缓存核心模块的实现。在通用技术模块实现的支持下,能够基本实现大多数游戏服务器端对于常数参数读取、永久层数据存取、缓存、功能便捷扩展等方面的需要。在此基础上,...
【文章来源】:山东大学山东省 211工程院校 985工程院校 教育部直属院校
【文章页数】:131 页
【学位级别】:硕士
【部分图文】:
图1-1第一代服务器架构??服务器
用图形界面进行人机交互。同时,计算机的逐渐普及以及游戏内容的逐步丰富,??使得原来的服务器模型变得不堪重负,于是就出现了使用多台game^vr的分区??分服模型。早起在玩家过多,服务器承载量接近上限的时候,就使用类似的方式,??增加更多的服务器,架设“平行世界”,不同服务器上的玩家处于不同空间,账??号独立,相互之间没有往来。最开始时,多台服务器同时访问访问数据库,大量??的重复访问、数据交换,使得数据库的访问效率成为服务器的新瓶颈。于是就出??现了数据库代理0)B?Proxy),如图1-2所示,作为game服务器与db的中间件,??维护连接池,对应用程序屏蔽后端数据库细节,降低访问数据库的负担。??game?svr1?????O???<——〇?■无阻塞?tJ??中關?\?/?/?/??player?(client)?^?\??,???r^l?\??game?svr2????V??O?<JH>??■?I?线程无阻塞?Proxy?db??rh消息队列?/??入?9?J?/??player?(client)??j??,丨?/??V????game_svr3????j??4-W线程无阻塞??H-j?图1-2第二代服务器架构??player?(client)????此外,在第二代游戏服务器发展的过程中,还产生了每个场景分配一个线程??的异步多线程模式,用场景数量来控制线程数量不会很多,在同一个场景中的玩??家处于同一线程,玩家跨场景时进行通知。同时,随着游戏的运行,单个服务器??的玩家数量必然会出现减少,于是就产生了后期服务器合并、迁移的一套较为成??熟的运
?山东大学硕士学位论文???互的功能从game服务中分离放到代理服务器中。有了这样的过程,就会考虑是??不是可以继续拆分。对于迭代较快的游戏服务器而言,功能模块大多是快速增长??的,拆分必然是越细化功能越好。比如如图1-3所示的模型,把跟游戏房间相关??相关的逻辑提取到r〇〇m_SVr,公共的世界逻辑、场景、聊天等分别放到w〇rld_svr??集群,scene_svr,chat_svr等服务器。在这种类型的服务器架构中,每个服务??器所负责的功能相对单一,压力分散了,性能也会有较为明显的提升。本文主要??研究的内容也是类似于该种服务器架构。??”?v??db?svr?cluster??game?svr?world?svr?rn??cluster?cluster?S?mysql??门?严—…?丨?f…、■■■.-」u??丫?—?iL?a??人—U?*「?i:??player?(client)?1?room?svr?scene?svr?货"??I—???U??图1-3第三代服务器架构?k?chat?svr?^??1.2.2?Erlang/OTP技术发展现状??Erlang问世于1987年,由瑞典电信设备制造商爱立信所辖的CS-Lab开发,??开发目的是一种能够应对大规模并发活动的语言以及运行环境,最初只是为了电??信行业的各种业务需求进行定制开发,被应用在爱立信的交换机等电信设备上。??1991年爱立信发布了?Erlang虚拟机的最初版本,并逐渐将Erlang应用到其他??项目中。1996年,爱立信又为Erlang提供了一个实用且稳定的0TP软件库,并??在1998年开
【参考文献】:
期刊论文
[1]游戏产品的策划和运营研究[J]. 邬琦涛. 卫星电视与宽带多媒体. 2019(24)
[2]论游戏出海与中国文化软实力建设[J]. 刘程悦,张宏树. 今传媒. 2019(11)
[3]具有Erlang分布供应提前期的服务—库存系统最优控制策略[J]. 狄俊珂,龚红仿,孙中宇. 长沙理工大学学报(自然科学版). 2019(03)
[4]基于数据库代理实现数据库分表、分库访问的方案研究[J]. 姬渭孟,于雪莲. 数字通信世界. 2019(09)
[5]银行核心系统分布式数据库解决方案[J]. 俞义方,吕达. 金融电子化. 2019(06)
[6]移动边缘网络中计算迁移与内容缓存研究综述[J]. 张开元,桂小林,任德旺,李敬,吴杰,任东胜. 软件学报. 2019(08)
[7]Memcached在Web缓存中的应用[J]. 阎丽欣. 电子技术与软件工程. 2019(08)
[8]Redis分布式缓存实现与解析[J]. 周智. 信息通信. 2018(06)
[9]一种分布式缓存系统的关键技术及应用[J]. 屠要峰,刘辉,张国良,刘春. 计算机科学. 2018(05)
[10]MMORPG游戏服务器端的设计与实现[J]. 刘子豪. 信息与电脑(理论版). 2018(01)
硕士论文
[1]Erlang/otp框架核心算法性能优化及应用研究[D]. 涂传威.南昌大学 2019
[2]基于Erlang的帧同步游戏服务器系统的设计与实现[D]. 褚蕴威.华中科技大学 2017
本文编号:2959114
【文章来源】:山东大学山东省 211工程院校 985工程院校 教育部直属院校
【文章页数】:131 页
【学位级别】:硕士
【部分图文】:
图1-1第一代服务器架构??服务器
用图形界面进行人机交互。同时,计算机的逐渐普及以及游戏内容的逐步丰富,??使得原来的服务器模型变得不堪重负,于是就出现了使用多台game^vr的分区??分服模型。早起在玩家过多,服务器承载量接近上限的时候,就使用类似的方式,??增加更多的服务器,架设“平行世界”,不同服务器上的玩家处于不同空间,账??号独立,相互之间没有往来。最开始时,多台服务器同时访问访问数据库,大量??的重复访问、数据交换,使得数据库的访问效率成为服务器的新瓶颈。于是就出??现了数据库代理0)B?Proxy),如图1-2所示,作为game服务器与db的中间件,??维护连接池,对应用程序屏蔽后端数据库细节,降低访问数据库的负担。??game?svr1?????O???<——〇?■无阻塞?tJ??中關?\?/?/?/??player?(client)?^?\??,???r^l?\??game?svr2????V??O?<JH>??■?I?线程无阻塞?Proxy?db??rh消息队列?/??入?9?J?/??player?(client)??j??,丨?/??V????game_svr3????j??4-W线程无阻塞??H-j?图1-2第二代服务器架构??player?(client)????此外,在第二代游戏服务器发展的过程中,还产生了每个场景分配一个线程??的异步多线程模式,用场景数量来控制线程数量不会很多,在同一个场景中的玩??家处于同一线程,玩家跨场景时进行通知。同时,随着游戏的运行,单个服务器??的玩家数量必然会出现减少,于是就产生了后期服务器合并、迁移的一套较为成??熟的运
?山东大学硕士学位论文???互的功能从game服务中分离放到代理服务器中。有了这样的过程,就会考虑是??不是可以继续拆分。对于迭代较快的游戏服务器而言,功能模块大多是快速增长??的,拆分必然是越细化功能越好。比如如图1-3所示的模型,把跟游戏房间相关??相关的逻辑提取到r〇〇m_SVr,公共的世界逻辑、场景、聊天等分别放到w〇rld_svr??集群,scene_svr,chat_svr等服务器。在这种类型的服务器架构中,每个服务??器所负责的功能相对单一,压力分散了,性能也会有较为明显的提升。本文主要??研究的内容也是类似于该种服务器架构。??”?v??db?svr?cluster??game?svr?world?svr?rn??cluster?cluster?S?mysql??门?严—…?丨?f…、■■■.-」u??丫?—?iL?a??人—U?*「?i:??player?(client)?1?room?svr?scene?svr?货"??I—???U??图1-3第三代服务器架构?k?chat?svr?^??1.2.2?Erlang/OTP技术发展现状??Erlang问世于1987年,由瑞典电信设备制造商爱立信所辖的CS-Lab开发,??开发目的是一种能够应对大规模并发活动的语言以及运行环境,最初只是为了电??信行业的各种业务需求进行定制开发,被应用在爱立信的交换机等电信设备上。??1991年爱立信发布了?Erlang虚拟机的最初版本,并逐渐将Erlang应用到其他??项目中。1996年,爱立信又为Erlang提供了一个实用且稳定的0TP软件库,并??在1998年开
【参考文献】:
期刊论文
[1]游戏产品的策划和运营研究[J]. 邬琦涛. 卫星电视与宽带多媒体. 2019(24)
[2]论游戏出海与中国文化软实力建设[J]. 刘程悦,张宏树. 今传媒. 2019(11)
[3]具有Erlang分布供应提前期的服务—库存系统最优控制策略[J]. 狄俊珂,龚红仿,孙中宇. 长沙理工大学学报(自然科学版). 2019(03)
[4]基于数据库代理实现数据库分表、分库访问的方案研究[J]. 姬渭孟,于雪莲. 数字通信世界. 2019(09)
[5]银行核心系统分布式数据库解决方案[J]. 俞义方,吕达. 金融电子化. 2019(06)
[6]移动边缘网络中计算迁移与内容缓存研究综述[J]. 张开元,桂小林,任德旺,李敬,吴杰,任东胜. 软件学报. 2019(08)
[7]Memcached在Web缓存中的应用[J]. 阎丽欣. 电子技术与软件工程. 2019(08)
[8]Redis分布式缓存实现与解析[J]. 周智. 信息通信. 2018(06)
[9]一种分布式缓存系统的关键技术及应用[J]. 屠要峰,刘辉,张国良,刘春. 计算机科学. 2018(05)
[10]MMORPG游戏服务器端的设计与实现[J]. 刘子豪. 信息与电脑(理论版). 2018(01)
硕士论文
[1]Erlang/otp框架核心算法性能优化及应用研究[D]. 涂传威.南昌大学 2019
[2]基于Erlang的帧同步游戏服务器系统的设计与实现[D]. 褚蕴威.华中科技大学 2017
本文编号:2959114
本文链接:https://www.wllwen.com/shoufeilunwen/xixikjs/2959114.html