首发于微信公众号:【码农在新加坡】,欢迎关注。

个人博客网站:游戏服务器和普通服务器的区别

背景

我做过六年游戏服务端开发,后来想换个方向,转做电商后端开发,做了两年之后感悟很多,也体会到了游戏服务器和普通的服务器的区别。

我所说的游戏是大众的游戏,它要有常见游戏的一些元素,比如交互,比如场景,比如对战。举几个例子:魔兽世界,梦幻西游,王者荣耀。
当然也有很多游戏是弱交互的游戏,其实这类游戏跟普通的服务器的区别会小一点。

其实游戏说到底,最重要的几点就是保持状态、低延迟、交互。这几点就让游戏服务器和普通的服务器(比如电商后端)区分开来了。

互联网和游戏后端开发的区别

游戏特有的

保持连接

游戏一般来说需要保持一个客户端到服务端的连接,可以对客户端的玩家的行为(移动,攻击,操作,互动,聊天)进行及时的反馈以及主动推送给场景内的其他玩家。所以游戏更多的使用TCP来保持客户端和服务端的连接。少量弱交互游戏使用HTTP,对延迟要求更高的游戏会使用UDP。

保持状态

服务端会保持一份玩家的实体,当玩家进行操作时,下次通信的数据会依赖之前的通信的数据。

服务端推送

游戏服务器由于保持连接和状态,任何数据的改动可以通过服务端主动通知客户端的方式,这样就只需要推送修改的数据。不需要客户端频繁去刷新。

低延迟

很多游戏服务器,尤其是 RPG,MOBA, FPS等游戏,对延迟容忍度非常低,网络不好的情况下tcp协议由于重传机制,拥塞机制导致非常慢,就需要重新设计协议来处理。

写频繁

游戏中的每一个操作都可能是数据,场景中移动、攻击、击杀怪物、伤害量、交易、经验增长等等。通常每一帧都有可能有数据的变更。所以游戏通常来说需要定时写数据,否则可能会有DB性能瓶颈(定时存盘机制)。而且游戏的数据库的设计很多都是反范式的。如果你网上搜梦幻西游的数据库设计,他们甚至直接存到文件里面的,没有用任何主流数据库。

交互

很多游戏是多人游戏,需要玩家交互,场景中移动,聊天,组队,击杀BOSS等等,都需要反馈给场景中的所有可视玩家。这个时候需要保持任何玩家之间都能及时的互动或者沟通,对服务器架构上的设计就有一定的要求。

复杂度高

游戏的核心是玩法,更是由于多人在线的游戏的玩法可以设计的很复杂,所以做游戏后端开发的业务复杂度比互联网高的,比如实现一个多人战斗系统,一个副本玩法等等。比如梦幻西游的回合制战斗,或者王者荣耀的战斗等等。而互联网的业务就相对简单的多了。

互联网特有的

请求响应

互联网应用一般只需要支持请求响应式的通信,最常用的协议是HTTP来做客户端和服务端的通信。互联网应用一般来说只用关心自己的行为,而不太关注其他用户的行为(即使关注,也没有实时的响应需求),请求响应模式是最适合普通的互联网服务器的一种通信模式。

无状态

互联网的应用一般是无状态的,也就是下次操作不会保存上次的状态,每次进行不同的操作,都需要服务端进行完整的数据读取操作,无法利用上次请求的数据。

服务拆分

互联网是比较容易做服务拆分的,比如现在很多的微服务架构,因为业务相对独立,交互弱,做成微服务架构,通过请求响应去其他的微服务取得需要的数据。

读频繁

互联网一般是一个读频繁的场景,需要大量的读取数据,只有特定的行为才需要写入。要考虑一定的缓存机制,对数据库的设计要求更高。

延迟容忍

可以容忍一定的延迟,用户感知不明显。20毫秒还是200毫秒,用户是感觉不到的,但是如果是玩王者荣耀这类游戏,基本上你都感觉得到。

业务简单

互联网的业务说到底就是增删改查。(当然1000用户的增删改查和10亿用户的增删改查不一样)。高并发不属于业务的范畴,我现在处理百亿级数据和千万级QPS的服务,主要考虑高并发下的服务的拆分,架构的设计,微服务化,数据分库分表,缓存设计,异步存储,热点处理等等一系列高并发下的性能考虑。但是仅仅业务本身的复杂度相对游戏真的低很多。

总结

以上就是一个同时做过游戏开发和互联网开发的程序对这两个的区别的一些总结。

我做游戏的时候主要关注的是业务的玩法方面设计一个复杂的玩法需要考虑很多,需要了解的是玩法的设计。
做互联网的时候,主要关注的就是数据的操作,往往高并发最终的瓶颈会落在DB这一层,怎么优化DB就很重要,比如我说的分库分表,索引的设计,缓存的设计,预热机制,热点数据的处理等等。

<全文完>

欢迎关注我的微信公众号:【码农在新加坡】的微信公众号,有更多好的技术分享。

个人博客网站:游戏服务器和普通服务器的区别

游戏服务器和普通服务器的区别相关推荐

  1. 游戏服务器跟网页服务器的区别,网络游戏服务器与常用服务器的区别在哪

    1,首先是数据传送的量很大,玩家和游戏服务器平台之间的数据传输量大,要求是网速比较快. 2,就是稳定性要求比较高. 3,安全性,数据的安全性和可靠性. 4,可扩展性,可以满足用户数量快速增长的扩展.在 ...

  2. 魔兽游戏高防服务器和普通服务器的区别

    2004年一款名为魔兽世界的游戏横空出世,多少90后为其痴迷.当时在多个国 家地区发行反响十分热烈.据统计仅仅四年时间,08年的时候魔兽全球付费用 户超过1150万人,吉尼斯纪录也被魔兽的这个数值所打 ...

  3. 游戏服务器与普通服务器有什么区别?

    web.app服务器和游戏服务器都做过,说说我理解的区别吧. 如果是同等用户规模,相对来说,游戏服务器的复杂程度要大于普通app和web服务器.当然涉及到特殊算法的服务器另说,比如搜索引擎.头条人工智 ...

  4. 服务器与普通电脑的区别?

    服务器与普通电脑的区别? 服务器配置不怎么高,可是价格都很贵.想知道,服务器和普通电脑的区别在哪里呢? 目前使用服务器的站长和企业也比较多,也许有人会觉得二者差不多. 从表面上看,服务器和我们日常用的 ...

  5. 服务器挂游戏用什么系统,挂游戏用什么云服务器

    挂游戏用什么云服务器 内容精选 换一换 待挂载的磁盘与弹性云服务器属于同一可用分区.如果是非共享盘,待挂载的磁盘为"可用"状态.如果是共享盘,待挂载的磁盘为"正在使用&q ...

  6. 方舟生存进化服务器Linux,方舟生存进化官方服务器与私人服务器有什么区别

    1:官服私服什么区别? 答:官服为官方架设,私服为玩家个体或媒体或其他组织架设. 理论上:官方更有保证,毕竟是官方自己架设,有舆论压力,而私服则看个人意志--我今天乐意玩我架个服务器,你们都来玩,明天 ...

  7. 高防服务器与高防IP的区别和联系

    高防服务器与高防IP首先在名称上就能清楚地知道一个是服务器一个是IP,是不同的两样东西,但使用高防IP好还是使用高防服务器好呢?这是不少客户的疑问. 首先,跟着天下数据小编一起来了解高防服务器与高防I ...

  8. 饥荒为啥显示专用服务器,饥荒服务器和专用服务器有什么区别 | 手游网游页游攻略大全...

    发布时间:2016-03-16 饥荒服务器搭建视频教程 饥荒怎样搭建服务器.在饥荒游戏中,玩家可以自己搭建一个属于自己的服务器,那么怎样搭建服务器呢?下面99单机网小编给大家带来饥荒服务器搭建视频教程 ...

  9. 多人网络游戏服务器开发基础学习笔记 I:基本知识 | 游戏设计模式 | 网游服务器层次结构 | 游戏对象序列化 | 游戏 RPC 框架 | 帧同步和状态同步

    今天继续开新坑,尽管过了很多 Unix 套接字编程的坑,但是实际还是有很多不同场景和性能的需求,以及最服务器架构的内容也就接触过 preforking 和 master 带 worker 而已. 所以 ...

  10. 服务器和工作站有什么区别?

    服务器作为互联网时代企业发展必不可少的硬件设备被用户所熟知,然而了解工作站用途的用户却不多,两者作为高性能计算领域代表性产品,在性能及其适用领域方面工作站和服务器有什么区别? 一.服务器 服务器是指在 ...

最新文章

  1. python处理视频动漫化_用Python实现抖音上的“人像动漫化”特效,原来这么简单...
  2. 数据中心的“芯”竞争
  3. 网络游戏外挂核心封包揭密
  4. 图论--2-SAT--poj 3678-Katu Puzzle(模板题)
  5. abaqus单位_ANSYS和ABAQUS哪个好,一个例子告诉你
  6. 简单的ASP.NET CORE 2.2 app + Vue JS
  7. python填补缺失值数据驱动代码_python数据预处理之缺失值的各种填补方式
  8. hmcl手机版下载_hmcl启动器正版-hmcl启动器手机版下载hmclv1.0.0-七度网
  9. DBeaver mysql驱动连接问题
  10. 实验一:交换机和集线器的工作原理
  11. 详细介绍MVC与Django的MVT模式
  12. 双非南京大学计算机夏令营,一名双非生的“失败”保研经历:夏令营不确定是否有保研资格,预推免上岸理想院校!...
  13. drtek收音机使用说明_德劲1103收音机【简易操作指南】.【使用说明书】.高清版...
  14. python中的mat的操作
  15. 配置 Swagger 文档的自动生成
  16. tensorflow代码全解析 -3- seq2seq 自动生成文本
  17. vue项目更改网页标题与图标
  18. Redhat Linux 2.6.18-308.el5修改系统时间
  19. 我的世界服务器显示outofmemory,我的世界out of memory怎么办 out of memory解决办法
  20. Arduino—— 4*4按键

热门文章

  1. Linux平台下快速搭建FTP服务器
  2. 依图科技:多个人工智能应用领域达到全球领先水平 | 百万人学AI评选
  3. WordPress社交问答社区主题模板
  4. 【信息检索导论】第一章 布尔检索
  5. centos7下docker-mysql5.7实现主从复制(精简教程)
  6. 混合现实:地面高度不准确
  7. montypython买火柴_无聊图集(2017-04-01)
  8. 箱形图适用于哪种数据_python数据分布型图表箱形图系列带误差线箱形图
  9. 随机漫步python程序
  10. logstash grok mysql_日志分析logstash插件-grok详解