赞
踩
网络游戏程序分为客户端和服务端。客户端负责图形渲染、交互和一些简单校验处理,服务端负责业务逻辑处理、数据存储。
我们开发一个游戏demo,服务端程序可以是一个单线程的服务进程。它包含网络通信、业务逻辑处理、数据存储。服务端打开网络端口监听,客户端通过网络连接到服务端,服务端接入连接。客户端发包给服务端,服务端接收到包后进行解析,调用对应的处理程序进行处理,处理程序处理成功后,修改数据并保存下来,再把响应包封包发送给客户端。
简单的数据存储可以保存在文件里。当用户量逐渐增加,数据存储的性能、完整和安全要求逐渐增大,数据存储改为存储到数据库。这样服务端就分为服务进程、数据库进程两个进程。服务进程跟数据库进程通信,进行数据读写。由于游戏的实时要求比较高,如果每个请求都要读写数据库,当大量用户同时访问时,数据库读写成了服务性能的瓶颈。因此,一般游戏都做缓存,简单的缓存可以缓存在服务进程的内存里,业务处理直接操作缓存数据,每隔一段时间(例如10分钟),用个独立线程把被修改的缓存数据保存到数据库。
这样会有一个问题,就是一旦服务进程宕机,在保存间隔时间里的游戏数据就会丢失掉。特别是游戏服务进程有更新
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。