Không có mô tả

Alvin 69a200a29f update 完善查找所有管理员信息;新增角色id过滤字段 8 tháng trước cách đây
code b20bfb08e7 new 10 tháng trước cách đây
components 70db87f7ba new 9 tháng trước cách đây
const 25d2e570c9 1.0.18版本更新 9 tháng trước cách đây
error b20bfb08e7 new 10 tháng trước cách đây
extend 874ab4ba94 update 新增导出csv文件 9 tháng trước cách đây
facade a05e4bd2cf 版本更新 9 tháng trước cách đây
game 69a200a29f update 完善查找所有管理员信息;新增角色id过滤字段 8 tháng trước cách đây
logger b20bfb08e7 new 10 tháng trước cách đây
net 25d2e570c9 1.0.18版本更新 9 tháng trước cách đây
profile b20bfb08e7 new 10 tháng trước cách đây
.gitignore a05e4bd2cf 版本更新 9 tháng trước cách đây
Makefile b20bfb08e7 new 10 tháng trước cách đây
README.md b20bfb08e7 new 10 tháng trước cách đây
application.go b20bfb08e7 new 10 tháng trước cách đây
go.mod 25d2e570c9 1.0.18版本更新 9 tháng trước cách đây
go.sum 25d2e570c9 1.0.18版本更新 9 tháng trước cách đây
mhaya.go b20bfb08e7 new 10 tháng trước cách đây
mhaya_test.go b20bfb08e7 new 10 tháng trước cách đây
tag.sh b20bfb08e7 new 10 tháng trước cách đây
ver.sh b20bfb08e7 new 10 tháng trước cách đây

README.md

欢迎使用mhaya!

核心功能

组件管理

  • 基于组件的方式组合功能,方便统一管理生命周期
  • 可根据需求自定义组件,并注册到框架,灵活扩展
  • 可配置cluster modestandalone mode

环境配置

  • 可配置多个环境的参数,方便切换
  • 所有系统参数、组件参数都基于profile文件配置,方便扩展
  • 可根据业务需求自由的拆分或组装多个profile子文件,精简配置,拒绝冗余

actor模型

  • 每个Actor独立运行在一个goroutine中,所有的逻辑都是串行处理
  • Actor接收三种消息:本地消息(Local)、远程消息(Remote)、事件消息(Event)
    • 三种消息都有自己的队列(Queue),每个队列依据FIFO原则进行消费
    • 本地消息(Local),用于接收游戏客户端发送过来的本地消息
    • 远程消息(Remote),用于Actor之间调用的远程消息
    • 事件消息(Event),通过订阅/发布进行的事件消息
  • Actor可以创建多个子Actor(ChildActor),子Actor的消息由父Actor进行路由转发
  • 通过cluster集群组件、discovery发现服务组件,进行跨节点的actor通信

集群&注册发现

  • 三种发现服务实现方式:
    • 开发用,直接读取本地的节点配置文件
    • 小规模用,基于nats.io创建一个master节点,实现单节点的发现服务
    • 线上用,基于etcd封装,实现集群方式的发现服务
  • 基于nats.io实现的RPC调用,默认提供同步/异步的调用方式

连接器

  • tcp
  • websocket
  • http server
  • http client
  • kcp(未实现,以后作为组件集成)

消息&路由

  • 实现pomelo网络数据包结构 & simple网络数据包结构
  • 包解码&编码
  • 消息路由
  • 消息序列化(自带json/protobuf)
  • 事件

日志

  • 基于uber zap封装,性能良好
  • 可配置多文件进行日志输出
  • 基于rotatelogs处理切割日志

扩展组件

data-config组件

  • 策划配表读取管理组件
  • 可基于本地配置文件的方式加载
  • 可基于redis数据的方式加载
  • 可基于接口抽像自定义数据源加载
  • 支持自定义文件格式读取,目前已实现JSON格式读取
  • 支持缓存热更新
  • 可自定义类型检测
  • 可根据go-linq进行数据集合的条件查询

etcd组件

  • 基于etcd组件进行封装,节点集群和注册发现

gin组件

  • 集成gin组件,实现http server功能
  • 自定义controller,增加PreInit()Init()Stop()初始周期的管理
  • 增加几个常用的middleware组件
    • gin zap
    • recover with zap
    • cors跨域
    • max connect限流
  • 封装了GET/POST方式获取各种数据类型的函数

gorm组件

  • 集成gorm组件,实现mysql的数据库访问
  • 支持多个mysql数据库配置和管理

mongo组件

  • 集成mongo-driver驱动
  • 支持多个mongodb数据库配置和管理

cron组件

  • 基于github.com/robfig/cron/v3进行封装成组件
  • 性能良好