Geen omschrijving
欢迎使用mhaya!
核心功能
组件管理
- 基于组件的方式组合功能,方便统一管理生命周期
- 可根据需求自定义组件,并注册到框架,灵活扩展
- 可配置
cluster mode
和standalone 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
处理切割日志
扩展组件
- 策划配表读取管理组件
- 可基于本地配置文件的方式加载
- 可基于redis数据的方式加载
- 可基于接口抽像自定义数据源加载
- 支持自定义文件格式读取,目前已实现
JSON
格式读取
- 支持缓存热更新
- 可自定义类型检测
- 可根据
go-linq
进行数据集合的条件查询
- 集成
gin
组件,实现http server功能
- 自定义
controller
,增加PreInit()
、Init()
、Stop()
初始周期的管理
- 增加几个常用的
middleware
组件
- gin zap
- recover with zap
- cors跨域
- max connect限流
- 封装了GET/POST方式获取各种数据类型的函数
- 集成
gorm
组件,实现mysql的数据库访问
- 支持多个mysql数据库配置和管理
- 集成
mongo-driver
驱动
- 支持多个mongodb数据库配置和管理
- 基于
github.com/robfig/cron/v3
进行封装成组件
- 性能良好