游戏服务器见解

来源:互联网 发布:淘宝优惠券支付金额 编辑:程序博客网 时间:2024/06/06 15:51

文笔不好,随笔记录。

距离我进入游戏服务器开发已经快2年了,觉得应该开始把自己对服务器上的理解和想法,做下记录。

现在的游戏 普遍都是 client-->logicServer-->cacheServer(redis)-->dbServer(mysql) 这样一个流程。而有的服务器在client跟logicserver之间会加入一层gateserver 也就是网关服务器,对请求进行分发,或者起到负载均衡的作用。当然一般有gateserver,通常都是在分布式或者集群的服务器部署,而不是这种简单的1对1的服务器部署情况下使用。

在游戏开发中,通讯一般会使用目前流行的2套框架  mina  netty  这两套框架的优缺点我这里就不说了。如果是新手 建议用mina 因为目前已经没有更新了。所以网上的教程比较多。学习方便。

主要注意的有下面几点:

1.选择合适的通讯协议--》这里推荐使用protobuf协议。他是google的产品。

2.对沾包进行处理。--》百度上很多相关资料

3.请求使用队列增加吞吐量。--》服务器设计风格,就是说异步响应客户端的请求,增加吞吐。

4.尽量使用单例。--》单例好处就不说了

5.redis作为缓存服务器--》有的人喜欢用redis替代mysql,我觉得没必要~两者结合相对来说比较安全稳定。


一般做到上面这几点。服务器承载个1000+到2000人 是没有多大问题的当然 这不是rpg模式的游戏。只是类似卡牌类型的游戏

主要的学习方法在于多读游戏的源码。多去了解游戏的架构。一步一步慢慢的学习。首先理解游戏架构的思想,之后去了解游戏架构中使用到的技术,再之后是去深入技术点,最后通过自己了解与实践,对使用到的技术点进行优化。 例如一般的ioc,大部分人会选择使用spring,不过spring的jar包比较庞大,而我们一般只会使用到他的ioc部分。当你了解了他的原理之后,自己创建一个简易的ioc还是非常的方便的。

最后当上面的都搞定之后就是学习如何对自己的程序进行性能上的调忧了,比如通过修改jvm的启动参数,通过各种监控工具观察代码中的数据,对不合理的地方进行调忧。根据实际需求,拓展或使用不同的服务器架构方式。

手游用erlang 页游用java 学无止尽。 目前正在学习unity3d,应该会持续更新下自己的学习博客。之后会不定期的转摘或更新下再java游戏服务器上的见解。与分析。在近段时间可能还会去读下mina的源码,还有netty的源码。然后做下分析。

-Tim

0 0
原创粉丝点击