游戏行业所需技术汇总(未完持续)

一. 网络通信:

  1. 通信模块
  2. 协议制定
  3. 协议加解密
  4. 协议处理队列
    游戏服务器开发,首先要了解的就是网络层框架,网络层负责接受处理协议(协议即为用于通知服务器玩家所做的操作的约定格式),根据情况自定义协议格式.比如{版本号:XXX,操作类型:XXX,操作参数:XXX}
    通信常用的框架有netty,mina等.
    服务器接收到协议会根据不同的协议内容进行处理,大多数游戏服务器采取的都是防御式编程,即对客户端的参数一一校验,这样可以避免因玩家篡改协议对服务器造成的危害.
    由于服务器一般为多线程环境,接收到的协议会发生同时处理的情况,因此大多会将同一个玩家的协议作为队列去顺序处理,省去了加锁的数据同步判断,但涉及到更改别的玩家数据还是要有同步判断避免出现脏数据

二. 持久层(包括redis):

  1. 持久化框架
  2. 布隆过滤器
  3. 储存过程
  4. redis封装常用命令
  5. redis发布订阅框架
    持久层负责保存玩家数据,因此数据持久化是游戏服务器众多模块中极为重要的一环,常用的数据库mysql,mariadb(mysql被收购后有闭源的风险,因此另起分支开发了mariadb).
    持久层的作用不仅仅是保存玩家数据,也要保护自身以提供持久的服务,一些恶意玩家常常会伪装协议,而协议中的数据往往是不存在的,高频的发送此类协议会造成数据库带宽占用,而查询结果当然也是不存在的,因此可以使用布隆过滤器过滤掉一定不存在的数据请求,对数据库连接起到一定的保护作用.
    了解储存过程和redis常用命令以及发布订阅即可,现成的封装上手即用,redis也可以作为持久层使用,需要了解redis的持久化机制(RDB,AOF)

三. 缓存:

  1. 玩家业务缓存
  2. 基础数据缓存
  3. 缓存击穿处理
  4. 持久化策略
    单单持久层的qps是满足不了超大并发量的访问的,通常数据库的qps不超过3000,如果瞬间请求超过处理能力,会造成数据库过多请求积压,从而处理速度变慢甚至线程阻塞,最后导致数据库服务崩溃,所以需要引入缓存模块给数据库减压,同时还可解决一些脏数据的问题,

线程模型:

  1. IO线程
  2. 逻辑线程
  3. redis线程
  4. 缓慢线程
  5. 工作轮询线程

定时JOB:

  1. 零点刷新
  2. 增删JOB框架

全局异常处理:

  1. 处理自定义异常
  2. 异常上报

业务日志:

  1. 记录日志
  2. 埋点分析

GOIS:

1.指令集

常用linux命令:

1.指令集

你可能感兴趣的:(游戏行业所需技术汇总(未完持续))