使用Go 语言开发大型 MMORPG 游戏服务器怎么样

使用Go 语言开发大型 MMORPG 游戏服务器怎么样,第1张

从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方平台验证 到编写独立工具导表工具GitHub - davyxu/tabtoy: 跨平台的高性能便捷电子表格导出器 以及网络库GitHub - davyxu/cellnet: 简单,方便,高效的Go语言的游戏服务器底层 最终使用这些工具及库编写整个游戏服务器框架, 我的感受是很不错的
细节看来, 有如下的几个点:
语言, 库
Golang语言特性和C很像, 简单, 一张A4纸就能写完所有特性 你想想看, C++到了领悟阶段, 也只用那几个简单特性, 剩下的都是一大堆解决各种内存问题的技巧 而Golang一开始就简单, 何必浪费生命去研究那一大堆的奇技巧呢
Golang的坑只有2个:1 interface{}和nil配合使用, 2 for循环时, 将循环变量引入闭包(Golang, Lua, C#闭包变量捕获差异) 完全不影响正常使用, 复合语言概念, 只是看官方后面怎么有效的避免
用Golang就忘记继承那套东西, 用组合+接口
用Golang服务器如何保证解决游戏服务器存盘一致性问题 stop the world是肯定的, 但是Golang可以从语言层并发序列化玩家数据, 再通过后台存盘
channel是goroutine虽然是Golang的语言特性 但是在编写服务器时, 其实只有底层用的比较多
Golang的第三方库简直多如牛毛, 好的也很多
不要说模板了, C#的也不好用, 官方在纠结也不要加, 使用中, 没模板确实有点不方便 用interface{}/反射做泛型对于Golang这种强类型语言来说,还是有点打脸
运行期
Golang和C++比性能的话, 这是C++的优势, Golang因为没虚拟机, 只有薄薄的一层调度层 因此性能是非常高的, 用一点性能牺牲换开发效率, 妥妥的
16版后的GC优化的已经很好了, 如果你不是高性能,高并发Web应用, 非要找出一堆的优化技巧的话 只用Golang写点游戏服务器, 那点GC损耗可以忽略不计
和其他现代语言一样, 崩溃捕捉是标配功能, 我用Golang的服务器线上跑, 基本没碰到过崩溃情况
热更新: 官方已经有plugin系统的提交, 跨平台的 估计很快就可以告别手动cgo做so热更新
开发, 调试, 部署, 优化
LiteIDE是我首选的Golang的IDE, 虽然有童鞋说B格不高 但这估计实在是找不到缺点说了, 别跟我说Visual Studio, 那是宇宙级的
曾经听说有人不看好Golang, 我问为啥: 说这么新的语言, 不好招人,后面打听到他是个策划 好吧
真实情况是这样的: Golang对于有点编程基础的新人来说, 1周左右可以开始贡献代码 老司机2~3天
开发效率还是不错的, 一般大的游戏功能, 22人一周3~4个整完 这换C++时代, 大概也就1~2个还写不完 对接服务器sdk的话, 大概1天接个10多个没问题
Golang自带性能调优工具, 从内存, CPU, 阻塞点等几个方面直接出图进行分析, 非常直观, 可以参考我博客几年前的分析: 使用Golang进行性能分析(Profiling)
Golang支持交叉编译, 跨平台部署, 什么概念 linux是吧 不问你什么版本, 直接windows上编译输出一个elf, 甩到服务器上开跑不超过1分钟时间

我们都无法保证在用服务器的过程中不受到攻击,特别是云主机这类云端平台的出现,带来了便利的同时,也很容易成攻击的目标。现在科技都那么先进,黑客的攻击手段也越发高明。而高防服务器主要针对流量型DDoS而出现的服务器。 在如今的生活中游戏行业是受到网络攻击最为明显的行业,所以很多游戏的企业都以高防服务器为主。游戏是人们生活中的一大调节剂,也为我们的生活带来了很多的精彩和趣味。

游戏行业对用户的体验度比较重视,不管你的游戏页面设计的多么精彩、唯美,一旦在玩的过程中经常出现卡死、掉线的状况用户也会离开的,从而失去了潜在的用户,而服务器是影响网站与游戏正常运行的重要因素之一。

⦁普通服务器防不住攻击 流量过大,超过了服务器的基础防护能力;

个别IDC商以虚假的防御、超低的价格吸引客户。

市场竞争太大

新款游戏刚上线就被狠狠的“教训”,持续受到攻击,招架不住突增的大流量。

⦁防御先天不足

团队力量、技术实力、运营经验和安全防护等方面先天不足,无法应对突发的大流量攻击。

⦁易受攻击

棋牌游戏行业利润高,易被黑客盯上,通过流量攻击把服务器大瘫痪后进行敲诈勒索。

如何解决以上4种情况的问题呢⦁抗DDos攻击 防护海量的DDos攻击,有效的防御所有各类基于网络层、传输层以及应用层的DDos攻击,如syn flood、UDP flood、ICMP flood等攻击。

⦁无视CC攻击 专业防御CC

通过在用户业务与攻击者之间建立以到游戏业务的防火墙,根据攻击者的TCP链接行为、游戏链接后的动态信息,准确分辨出真正的玩家与攻击者,直接拦截异常的客户端。

⦁海量日志储存 根据游戏业务的时机情况,量身打造专属的防护策略,清洗服务可用性9999%

无论是游戏服务器是用在大型单机下载上,还是网络游戏,用户的体验度是非常重要的,用户在玩游戏的过程中经常出现卡死、掉线的情况,会降低游戏体验度,从而导致用户流失,因此为了不造成传输时贷款堵塞,在带宽尽量选择独享,具体独享多少带宽根据自游戏的需求,避免造成资金和资源的浪费。

任何游戏公司都不想看到自己的游戏半天打不开,严重影响玩家游戏体验,这样即便在服务器上省钱了,但是也会流失玩家,得不偿失。 所以这也是为什么越来越多的游戏公司接入高防服务器的原因。

游戏公司的服务器系统是由专业的技术团队开发的,不是由老总或员工一起开发的。一般来说,游戏公司的技术团队包括了研发部门、运维部门、系统架构部门、网络安全部门等,他们都有各自的职责和专业技能,通过协作和配合,共同开发和维护游戏服务器系统,确保游戏的正常运行。老总和员工可以提供一些需求和建议,但实际的开发工作由技术团队完成。因为游戏服务器系统开发需要大量的技术和人力资源,只有专业的技术团队才能胜任。

玩到没停服的游戏的步骤:
1、需要拿到客户端代码,游戏服务器代码,用户账户服务器代码。看游戏的服务器架构中是不是还有其他服务器(比如跨服服务器,聊天服务器,独立的登录服务器代码),如果有,其中多数也都需要拿到。
2、需要懂程序,能把这么多自己没参与编程的服务器全都开起来并且消息能联通,并且合理的搭建每个服务器对应的数据库。
3、然后,再把客户端连接服务器的地址,改成自己的服务器。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/10239118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存