Home
Softono
wukong

wukong

Open source Apache-2.0 C++
37
Stars
16
Forks
0
Issues
1
Watchers
5 months
Last Commit

About wukong

wukong是一个高性能c++游戏服务器框架

Platforms

Web Self-hosted

Languages

C++

Links

wukong

开源c++游戏服务器框架

* 同步风格编程模式
    * 性能与异步编程一样
    * 代码风格像同步编程一样
* 线程和协程结合
    * 传统的游戏服务器,为了提高服务器性能,会使用异步非阻塞的方式来编程,但是异步非阻塞编程方式会将使得代码分散难以维护,这是个痛点,为了解决这个痛点,引入了协程,让代码可以像同步编程方式一样开发并且性能和异步非阻塞方式一样,提高开发效率也让代码更容易维护
    * 线程数量固定(由开发者在框架的初始化接口中指定各框架模块线程池大小)
    * 协程从属于线程,同一线程中的协程之间访问公共资源不需要上锁
* 无锁实现(高性能)
    * 没有使用一个系统锁
* 服务器连接自动建立和维持
    * 通过zookeeper注册和发现
* 服务器之间以RPC为通信方式(自动协程切换--挂起和唤醒,不阻塞线程)
    * 可通过protobuf option定义RPC接口行为
    * 带返回值的RPC会有协程切换
    * 不带返回值的RPC不会产生协程切换
    * 还能指定RPC服务端开启新协程来进行处理
* 服务器与客户端之间的网络通信
    * 数据采用protobuf定义
    * 注册消息处理
    * 提供unity客户端网络接口
* 支持断线重连消息重发
    * 提升弱网玩家体验
* 安全性
    * 防消息重发攻击
    * 消息防篡改
        * 消息加密
        * CRC校验
* 消息可带user tag(客户端向服务器发消息时,若需要等待返回消息,可在消息头部带上user tag,服务器的消息处理中返回消息时也带上相同的user tag发给客户端,客户端收到带user tag的消息就能知道这是指定的应答消息了)
* 服务器负载均衡(框架中服务器都是可扩展的,并且玩家对象会负载均衡到各个服务器上)
* 登录,顶号,离线,断线重连处理(只需要实现少数指定的委派方法,如:身份验证等)
    * 防重登保护(防止重复实体对象)
    * 分布式实体心跳维护
* 场景切换
    * 提供场景切换接口,方便玩家角色对象切换场景(不用关心场景在哪个服务器中)
* 数据持久化
    * Mysql:落地库
    * Redis:缓存库
    * 定时脏数据缓存和缓存数据落地存盘
    * 通过配置描述玩家角色数据
    * 通过工具生成玩家角色数据结构及数据操纵代码(目前配置和代码格式已经定义好,工具待开发)
* 代码热更新
    * 支持lua脚本(主要用于bug热修复)
* 故障处理
    * 通过消息屏蔽(当功能出bug时可紧急屏蔽指定消息)
    * 通过lua热更新消息处理(框架会检查消息是否绑定了lua处理)
* 分区分服和合服处理(游戏区服是逻辑划分不是物理隔绝的,只需要重新设置服务器合服组,相关的区服中的玩家就能互相可见)
    * 支持大区也支持分区(滚服,合服)
    * 不同区服的玩家和场景都在同一组物理服务器中,只是逻辑分隔不是物理分隔
* 支持TCP和UDP消息服务
* 网络消息采用protobuf编解码
* 网络消息合并传输(减少网络包数量,提高网络吞吐性能)
* 提供web server可用于开发支付和GM接口(框架中的登录接口也是用web server实现的)
* 定时器实现(介绍协程和timer两种方式)