概述:本文尝试从开发者角度梳理开发实时联网游戏后台服务过程中可能面临的挑战,并针对性地提供相应解决思路,期望帮助开发者依据自身游戏特点做出合理的技术选型。
维基百科关于网络游戏的定义:通过计算机网络,将专用服务器和用户的客户端设备(手机、PC、游戏主机等)相连,让多名玩家同时联机进行游戏的娱乐形式,由此可知网络游戏涉及三个角色:客户端、网络、服务器,从网络架构上来讲网络游戏可分为C/S 架构和P2P架构(特指客户端间直连通信),在实际开发中还有一种C/S和P2P架构混合:C/M架构。

P2P架构不在本文讨论范围,C/M架构和C/S架构类似,和经典的LAMP网站架构类似一般C/S架构的游戏后台也可划分为如下三
层:(1)网络接入层;(2)游戏逻辑层;(3) 数据存储层。

网络接入、游戏逻辑、数据存储层各自所面临的问题域及对应技术栈都大为不同,做此划分不仅有助于模块解耦、技术分工、组件复用,也可方便服务的运维部署。本文也着重从这三个方面来阐述游戏服务器的开发。
1、网络接入层
网络接入层的主要任务是建立客户端和后台服务以及客户端之间的信道,接收来自客户端大量并发请求,考核该层的主要性能指标是:高吞吐、低延迟。因而网络接入层开发考验的是开发者高性能网络编程的功底,即解决C10K甚至C10M的能力。
1.1协议选择
根据OSI的七层网络参考模型,我们可将网游网络也做如下7层划分:

本文探讨了实时联网游戏后台服务的开发,重点关注网络接入层的协议选择和并发模型。对于协议,讨论了TCP与UDP的优劣,以及HTTP、WebSocket、QUIC等协议在游戏开发中的应用。在并发模型部分,介绍了进程、线程、IO多路复用和协程的特性,建议在无现成组件或历史负担的情况下使用协程进行网络接入层服务开发。
最低0.47元/天 解锁文章
8402

被折叠的 条评论
为什么被折叠?



