Skip to content

Ananfa/wukong

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

97 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wukong

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

各业务进程(gateway、lobby、scene、record 等)通过 Nexus 做服务注册与发现:连上 Nexus 后上报身份,Nexus 按配置把「本进程关心的其它服务」列表推回,并在服务上下线、信息变更时通知订阅方,从而 替代独立部署的 ZooKeeper。(仓库中旧的 ZooKeeper 客户端实现已默认不参与编译,配置里的 zookeeper 字段多为历史遗留命名。)

特性概览

* 同步风格编程模式
	* 性能与异步编程相当
	* 代码风格接近同步编写
* 线程和协程结合
	* 传统游戏服为提高性能多采用异步非阻塞,但逻辑易碎片化、难维护;框架用协程在保持相近性能的前提下,让代码可按同步思路组织
	* 线程数量固定(在初始化时配置各模块线程池规模)
	* 协程从属于线程,同一线程内协程共享公共资源时可避免加锁
* 无锁实现(高性能)
	* 不依赖系统互斥锁(配合无锁队列等)
* 服务器连接自动建立和维持
	* 经 **Nexus** 完成注册、发现与拓扑通知,各服长连维持
* 服务器之间以 RPC 通信(自动协程挂起/唤醒,不阻塞线程)
	* 可通过 Protobuf option 定义 RPC 行为
	* 带返回值的 RPC 会触发协程切换
	* 不带返回值的 RPC 可不产生协程切换
	* 可指定在服务端新协程中处理 RPC
* 服务器与客户端之间的网络
	* 数据采用 Protobuf 定义
	* 注册消息处理
	* 提供 Unity 客户端网络接口
* 支持断线重连与消息重发
	* 改善弱网体验
* 安全性
	* 防消息重放
	* 防篡改:加密、CRC 等
* 消息可带 user tag(客户端发请求时在头中携带 tag,服务端应答带回相同 tag,便于匹配异步应答)
* 负载均衡(进程可水平扩展,玩家对象可分散到多实例)
* 登录、顶号、离线、断线重连(实现少量委派接口即可,如身份校验)
	* 防重复实体
	* 分布式实体心跳
* 场景切换
	* 提供切换接口,角色可跨场景而不必关心具体落在哪台 scene 进程
* 数据持久化
	* MySQL:落地库
	* Redis:缓存
	* 定时脏写与缓存落盘
	* 通过配置描述角色数据,并可由工具生成结构与访问代码(格式已定义,工具可迭代)
* 代码热更新
	* 支持 Lua(多用于线上热修)
* 故障处理
	* 消息屏蔽(紧急关闭指定消息)
	* Lua 绑定消息处理(框架可优先走 Lua)
* 分区分服与合服(区服为逻辑划分)
	* 支持大区、分区、滚服、合服
	* 不同区服可共用同一组物理机器,仅逻辑隔离
* 支持 TCP 与 UDP 消息服务
* 网络消息 Protobuf 编解码
* 消息合并发送(减少小包、提高吞吐)
* 内置 Web Server,便于支付、GM 等;登录接口亦可基于 Web
* 定时器(协程与 timer 等用法)

About

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

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages