《从零开始搭建游戏服务器》架构和工具分析

一、前言:

        在正式开始搭建框架和编写代码之前,我们首先需要在大脑里构建游戏服务器的蓝图,主要思考几个问题:

1.一个完整的游戏需要划分为几个类型的服务器?

2.选择哪种或者哪些(可能同时结合多种数据库使用)类型的数据库?

3.使用什么网络通信框架和编解码(规则)工具?

4.其他工具。

 

二、概述:

1.服务器分类:

        对于性能要求较高、用户量较多的大型游戏类型,例如Moba或者MMO游戏,服务器通常根据功能划分为:登录服务器、游戏(逻辑)业务服务器、充值服务器和日志服务器,这种分配方式可以实现业务的分离和程序的解耦。

 

2.数据库的选择:

        对于游戏开发而已,选择MySQL作为数据存储服务器无疑是理智的选择,一方面是整体相较Orcle和SQL Server更加轻量级,另一方面是已有很多成熟的封装类库可以使用,无需编写太多数据库操作代码。

        处理这种永久性的数据存储数据库之外,还有另外一种用于内存缓冲的数据库,具备存取效率极高,但丢失几率相比前类服务器要高一些,主要用于需要快速操作数据,且不造成数据库死锁的方案,最常用的有Redis。存储过程大致如下:将需要频繁和快速操作的数据存储在redis数据库(内存缓冲),然后定时从Redis将数据回写到mysql数据库中。

 

3.网络通信框架:

        对于Java编写网络通信,当前最为常用的网络通信框架无疑就支持分布式开发服务器的Netty这种NIO(非阻塞异步网络通信)框架,而相应的编解码方式,则可以考虑Google开发的ProtoBuffer,数据量小而且跨平台特性好。

posted @ 2017-08-28 11:04  养诚  阅读(1456)  评论(0编辑  收藏  举报