# 框架介绍

Build Status (opens new window) goproxy.cn (opens new window) Go Reference (opens new window) License: MIT (opens new window) Go Report Card (opens new window) Coverage Awesome Go (opens new window)

Release (opens new window) Stars Forks GitHub pull requests (opens new window) GitHub closed pull requests (opens new window) GitHub issues (opens new window) GitHub closed issues (opens new window)

# 简介

due是一款基于Go语言开发的高性能分布式游戏服务器框架。其中,模块设计方面借鉴了kratos (opens new window)的模块设计思路,旨在为游戏服务器开发提供高效、完善、标准化的解决方案。

# 架构

架构图

  • Gate:网关服;主要用于接收和管理客户端的连接,并通过一定的转发策略将来自于客户端的路由消息转发至后端节点服进行处理;同时,网关服也为节点服和网格服提供了直接调用API的能力。
  • Node:节点服;主要用于接收和处理经由网关服转发过来的路由消息,并将处理后的结果通过网关服转发至对应的客户端连接;同时,节点服也具备构建RPC微服务和直接调用网关服API的能力。
  • Mesh: 网格服;主要用于构建无状态的微服务以提供给节点服或其它第三方应用调用;同时,网格服也具备直接调用网关服API的能力。

# 优势

  • 💰 免费性:框架遵循MIT协议,完全开源免费。
  • 💡 简单性:架构简单,源码简洁易理解。
  • 🚠 便捷性:仅暴露必要的调用接口,减轻开发者的心智负担。
  • 🚀 高性能:框架原生实现集群通信方案,普通机器单线程也能轻松实现20W的TPS。
  • 🧊 标准化:框架原生提供标准化的开发规范,无论多么复杂的项目也能轻松应对。
  • ✈️ 高效性:框架原生提供tcp、kcp、ws等服务器,方便开发者快速构建各种类型的网关服务器。
  • ⚖️ 稳定性:所有发布的正式版本均已通过内部真实业务的严格测试,具备较高的稳定性。
  • 🎟️ 扩展性:采用良好的接口设计,方便开发者设计实现自有功能。
  • 🔑 平滑性:引入信号量,通过控制服务注册中心来实现优雅地滚动更新。
  • 🔩 扩容性:通过优雅的路由分发机制,理论上可实现无限扩容。
  • 🔧 易调试:框架原生提供了tcp、kcp、ws等客户端,方便开发者进行独立的调试全流程调试。
  • 🧰 可管理:提供完善的后台管理接口,方便开发者快速实现自定义的后台管理功能。

# 功能

  • 网关:支持tcp、kcp、ws等协议的网关服务器。
  • 日志:支持console、file、aliyun、tencent等多种日志组件。
  • 注册:支持consul、etcd、nacos等多种服务注册中心。
  • 协议:支持json、protobuf、msgpack等多种通信协议。
  • 配置:支持consul、etcd、nacos等多种配置中心;并支持json、yaml、toml、xml等多种文件格式。
  • 通信:支持grpc、rpcx等多种高性能通信方案。
  • 重启:支持服务器的平滑重启。
  • 事件:支持redis、nats、kafka、rabbitMQ等事件总线实现方案。
  • 加密:支持rsa、ecc等多种加密方案。
  • 服务:支持grpc、rpcx等多种微服务解决方案。
  • 灵活:支持单体、分布式等多种架构方案。
  • Web:提供http协议的fiber服务器及swagger文档解决方案。
  • 工具:提供due-cli (opens new window)脚手架工具箱,可快速构建集群项目。
  • 缓存:支持redis、memcache等多种常用的缓存方案。
  • Actor:提供完善actor模型解决方案。
  • 分布式锁:支持redis、memcache等多种分布式锁解决方案。