1
This commit is contained in:
parent
60c9abeb0c
commit
75f8cc259d
150
交接.md
Normal file
150
交接.md
Normal file
@ -0,0 +1,150 @@
|
||||
# 编译
|
||||
|
||||
1、git clone git@git.kingsome.cn:server/game2006go.git
|
||||
2、cd game2006go
|
||||
3、git submodule init
|
||||
4、git submodule update
|
||||
5、cd server\wheelserver
|
||||
6、make
|
||||
|
||||
# 运行
|
||||
1、cd bin/wheelserver/bin
|
||||
2、./wheelserver -z1 -n1 -i1
|
||||
|
||||
# 给客户端的的文档
|
||||
1、外网查看路径https://doc.kingsome.cn/game2006api/apidoc/#api-AAWheel
|
||||
2、获取文档代码git clone git@git.kingsome.cn:server/game2006api.git
|
||||
3、切换到hjb分支 git checkout hjb
|
||||
4、文档文件doc/AAWheel.py
|
||||
5、修改好文档后回到项目根目录
|
||||
5、运行mydoc -p(注意这个需要再服务器上运行)
|
||||
生成给客户端的doc html文档,
|
||||
1、连接login-test.kingsome.cn
|
||||
2、cd /data/apps/game2006api_dev
|
||||
3、git pull
|
||||
4、运行命令mydoc -p
|
||||
|
||||
# 项目代码结构构成
|
||||
root
|
||||
|
|
||||
|--third_party
|
||||
|--q5(基础库相当于core)
|
||||
|--f5(基础框架相当于framework)
|
||||
|--server
|
||||
|
|
||||
|--jccommon(公司级公共代码)
|
||||
|
|
||||
|--wheelserver(转盘活动server)
|
||||
|
|
||||
|--api(控制器)
|
||||
|
|
||||
|--app(启动类)
|
||||
|
|
||||
|--common(公共数据结果定义)
|
||||
|
|
||||
|--constant(常量定义)
|
||||
|
|
||||
|--event(事件)
|
||||
|
|
||||
|--global(全局变量定义)
|
||||
|
|
||||
|--initialize(模块初始化注册)
|
||||
|
|
||||
|--middleware(中间件)
|
||||
|
|
||||
|--model(数据模型)
|
||||
|
|
||||
|--mt(mt->meta table配置表封装)
|
||||
|
|
||||
|--mtb(配置表基础,和原始json配置一一对应,有nodejs脚本根据proto/mt.proto定义生成)
|
||||
|
|
||||
|--proto(长连接protobuf定义和配置表定义)
|
||||
| |
|
||||
| |--mt.proto(配置表定义)
|
||||
|
|
||||
|--router(路由管理)
|
||||
|
|
||||
|--service(服务)
|
||||
|
|
||||
|--session(会话管理)
|
||||
|
|
||||
|--vo(view object)
|
||||
|
||||
# 配置表管理
|
||||
1、所有的配置文件统一使用json
|
||||
2、在proto/mt.proto里定义配置表结构
|
||||
3、定义好之后在server/wheelserver目录下运行node ../../tools/pbtools/app.js
|
||||
4、pbtools会在mtb目录下生成mtb.auto_gen.go
|
||||
5、在mt目录下添加对应的表封装器
|
||||
6、在mt/export.go下注册配置表
|
||||
7、表封装器的访问是线程安全的
|
||||
8、配置表的底层逻辑有f5/metatable.go里实现
|
||||
|
||||
# f5/metatable.go提供如下功能
|
||||
1、分为两种情况
|
||||
IdMetaTable: 有id构成主键(如果未定义主键则会生成自增id作为主键),提供函数GetById获取配置表记录
|
||||
NameMetaTable: 由字符串构成主键,提供函数GetByName获取配置表记录
|
||||
2、外部获取配置表里的记录
|
||||
3、加载顺序
|
||||
先把所有的json都加载进来
|
||||
调用Table的PreInit1
|
||||
对每条记录调用封装器的Init1、Init2、Init3,实现对多轮初始化
|
||||
调用Table的PostInit1
|
||||
|
||||
# 启动参数
|
||||
采用zni模式: -z1 -n1 -i1
|
||||
z:区域
|
||||
n:节点
|
||||
i:实例
|
||||
其中同一个node表示在同一个机房,可以内网通信,不同的node之间无法直接通信
|
||||
|
||||
# 存储
|
||||
1、目前只支持mysql
|
||||
|
||||
# q5
|
||||
algorithms.go: 通用排序类
|
||||
sysutils.go:文件io时间等工具函数
|
||||
convert.go:类型转换
|
||||
functional.go: 函数式编程(用到毕竟少未验证)
|
||||
httpcli.go: http client
|
||||
listhead.go: linux内核list_head.h模仿
|
||||
mysql.go: mysql访问类(实际上一般项目不会直接用这个类用f5的dbpool替代)
|
||||
password.go: 密码生成(未验证)
|
||||
queue.go: 高效的线程安全队列
|
||||
random.go: 随机字符串生成
|
||||
redis.go: redis访问(未写完)
|
||||
reflect.go: 反射
|
||||
strutils.go:字符串处理工具函数
|
||||
sync.go: 线程安全的map
|
||||
timer.go: 抽象的时间轮定时器(linux内核定时器)
|
||||
timerlist.go: 抽象的定时器数据结构
|
||||
types.go: 数据类型定义
|
||||
uuid.go: 雪花算法uuid实现
|
||||
|
||||
# f5
|
||||
app.go: 框架级app类实现
|
||||
async_task.go: 异步任务(主线程,长连接项目使用)
|
||||
constant.go: 常量定义
|
||||
constant_unix.go:常量定义(linux/unix系统)
|
||||
constant_windows.go:常量定义(windows系统)
|
||||
dataset.go: mysql数据集
|
||||
dbfilter.go: mysql查询过滤器
|
||||
dbpool.go: mysql访问层(混合了js style和gostyle,这块代码以后的混乱多个项目用到了跑着没啥问题也就没重构)
|
||||
godbpool.go: mysql访问层(因为dbpool.go的混乱,独立出了go style)
|
||||
httpclimgr.go: http client
|
||||
lock_async_task.go: 带锁的异步问题(多线程)
|
||||
metatable.go: json配置表读取
|
||||
msgqueue.go: 进程内消息队列
|
||||
prototils.go: protobuff工具函数
|
||||
strutils.go: 字符串处理工具函数
|
||||
syslog.go: 日志
|
||||
sysutils.go: 工具函数
|
||||
sysutils_unix.go: 工具函数(linux/unix)
|
||||
sysutils_windows.go: 工具函数(windows)
|
||||
tglog.go: 大数据埋点日志
|
||||
timer.go: 定时器(主线程下运行,线程不安全)
|
||||
types.go: 类型定义
|
||||
|
||||
# 注意事项
|
||||
1、f5目录下某些函数的线程安全问题(因为已开始是为长连接准备的,可能有些地方未考虑到)
|
||||
2、代码风格并未按golang官方的规范来,比如this、包的风格,假设了包都在main下
|
Loading…
x
Reference in New Issue
Block a user