gserver

package module
v0.0.0-...-ee7ecfe Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 16, 2019 License: Apache-2.0 Imports: 10 Imported by: 0

README

gserver

This project aims to provide a solution for real-time message flow.
You can create GameServer or others, with gserver.
The communication protocol of GateWay has supported Tcp and Websocket.
DEMO is here. (tcp-gateway and mobagame-service)
LICENSE is here.

Installation

golang version 1.9.2
go get github.com/golang/protobuf/proto
go get github.com/gorilla/websocket
go get github.com/cihub/seelog
go get github.com/koding/multiconfig
go get github.com/garyburd/redigo/redis
go get github.com/HuKeping/rbtree
go get github.com/tealeg/xlsx
go get google.golang.org/grpc
go get github.com/go-sql-driver/mysql

TODO

current version is v0.8.3
next version-v0.9.0 will focus on:
1.optimize safe -- ING
2.optimize microservice
3.add inner logger -- ING
4.add tcp gateway -- DONE
5.add game util package(aoi,space,entity....) -- ING

CONF
更全的配置请查看demo工程
{
	"MaxConnNum": 2048, // 最大连接数:多余的连接将不会响应
	"PendingNum": 100,  // gateway->client异步ipc队列上限
	"MaxMsgLen": 1024,  // client<->gateway message上限:单位byte
	"MinMsgLen": 0,     // client<->gateway message下限:单位byte
	"ReadDeadline":60,  // gateway->client读超时:单位s
	"WriteDeadline":60, // gateway->client写超时:单位s
	"ServerAddress": "localhost:9527", // gateway地址
	"MaxHeader":1024,   // header上限(for websocket):单位byte
	"HttpTimeout": 10,  // http-get超时(for websocket):单位s
	"CertFile": "",     // for ssl
	"KeyFile": "",      // for ssl
	"Rpm":100,          // client->gateway流量上限:每分钟收到的报文数量上限
	"AsyncMQ":64,       // service->gateway异步ipc队列上限
	"GateWayIds":1999   // gateway本地路由id段(当前路由规则是简单的id分段规则)
}
Message
client->gateway
	----------------------------
	| len | seq | id | message |
	----------------------------
	len:seq + id + message,占用2个字节(uint16)
	seq:从1自增的序列号,占用4个字节(uint32)
	id:协议号,占用2个字节(uint16)
	message:业务数据,占用len-6字节,可以使用任意编码:pb/json等,本框架内置了pb2编码器

gateway->client
	----------------------
	| len | id | message |
	----------------------
	len:id + message的长度,占用2个字节(uint16)
	id:协议号,占用两个字节(uint16)
	message:业务数据,占用len-2字节,可以使用任意编码:pb/json等,本框架内置了pb2编码器
	
gateway<->service(base pb3)
	type Data_Frame struct {
		Type    Data_FrameType
		Message []byte
	}
dataflow

image

Documentation

Overview

开发接口

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterHandler

func RegisterHandler(list []*Services.MsgHandler)

注册消息handler 本接口注意使用提供全局容器,保存id-handler的映射关系 非线程安全 @params list:消息列表

func Run

func Run(mods ...Module.Imodule)

运行模块 @params 模块转载器...

func RunConversion

func RunConversion(src, dest string)

解析配置,自动生成类型代码 @params src : 源目录(yml文件) @params dest: 目地目录(go源文件)

func RunMysqlService

func RunMysqlService(log, path string)

启动mysql数据库 @params log:日志配置 path:数据库日志

func RunService

func RunService(log, path string, coder Network.Imessage)

启动一个通用的service服务 @params log:配置 path:服务配置 coder:消息编码器(注意消息需要开发者自行注册)

func RunTCPGateway

func RunTCPGateway(log, path, discpath string, coder Network.Imessage)

启动一个tcp网关服务 @params log:日志配置 path:网关配置文件 discpath:服务发现配置 coder:消息编码器(注意消息需要开发者自行注册)

func RunWSGateway

func RunWSGateway(log, path, discpath string, coder Network.Imessage)

启动一个websocket网关服务 @params log:日志配置 path:网关配置文件 discpath:服务发现配置 coder:消息编码器(注意消息需要开发者自行注册)

func RunXlsxService

func RunXlsxService(log, path string)

启动xlsx加载器 @params log:日志配置 path:xlsx目录

Types

This section is empty.

Directories

Path Synopsis
线程安全且管理高效 未添加连接心跳
线程安全且管理高效 未添加连接心跳
gameutil
entity
entityid->*Entity 网络对象 space统一维护aoi数据的变化 不可也没有必要并发调用space接口
entityid->*Entity 网络对象 space统一维护aoi数据的变化 不可也没有必要并发调用space接口
fight
FIXME 非线程安全
FIXME 非线程安全
** 可被管理的轻量级进程服务,作用域是进程内 进程特性: 1 通过name/id作为唯一标识[id是进程的唯一标识,name是进程别名] 2 可以方便的向指定进程发送消息 3 进程间的消息分两类:业务消息和控制消息 4 业务能力由进程自定义,控制消息目前只支持停止stop 5 进程间没有直接或者间接联系,暂未实现link/restart机制 **
** 可被管理的轻量级进程服务,作用域是进程内 进程特性: 1 通过name/id作为唯一标识[id是进程的唯一标识,name是进程别名] 2 可以方便的向指定进程发送消息 3 进程间的消息分两类:业务消息和控制消息 4 业务能力由进程自定义,控制消息目前只支持停止stop 5 进程间没有直接或者间接联系,暂未实现link/restart机制 **
封装了本地genserver,支持异步同步调用
封装了本地genserver,支持异步同步调用
加载json配置文件 no-watching
加载json配置文件 no-watching
定义了模块的接口 封装了模块拔插式的操作
定义了模块的接口 封装了模块拔插式的操作
定义了消息的接口 报文解析模块 Package network is a generated protocol buffer package.
定义了消息的接口 报文解析模块 Package network is a generated protocol buffer package.
简单的handler管理器 非线程安全 内部错误封装 base on protobuff Package services is a generated protocol buffer package.
简单的handler管理器 非线程安全 内部错误封装 base on protobuff Package services is a generated protocol buffer package.
discovery
基于本地配置的服务发现(no wathing) FIXME 可以使用第三方服务发现快速替换本服务
基于本地配置的服务发现(no wathing) FIXME 可以使用第三方服务发现快速替换本服务
gateway
通用的代理器 网关接收器 网关发送器:gateway->client 通用的tcp网关 通用的websocket网关
通用的代理器 网关接收器 网关发送器:gateway->client 通用的tcp网关 通用的websocket网关
service
通用服务
通用服务
* 通用的全局定时任务管理器 未实现任务持久化
* 通用的全局定时任务管理器 未实现任务持久化
通用的限流器(基于线程并发数)
通用的限流器(基于线程并发数)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL