Skip to content

walle目标是开箱即用. 灵活配置. 高性能的服务框架.开发中...

License

Notifications You must be signed in to change notification settings

walleframe/walle

Repository files navigation

walle

walle的目标是灵活配置. 高性能的服务框架.开发中…

开发阶段,API并不稳定

walle框架的核心是为了所有业务数据有一个统一的处理流程,为此封装了process包.

process包 对外暴露了 OnRead(data []byte) (err error) 接口,用于接收数据(数据来源可以是tcp网络服务器,也可以是kafka或者其他MQ等等).

实际的处理流程是统一的,并且高度可定制化的(具体请查看 process处理流程)

walle为了方便快速开发,redis,mysql,excel,rpc等重复性很高的代码都采用wctl来自动生成代码, 并且采用了引用即自动初始化的方案(通过init包自动注册对应服务).

walle的配置是解耦的,每个组件独立注册自己的配置到config centra,然后从配置文件或者etcd中读取配置. 这也是方便了外部可以自定义添加任何组件.(配置解析相关代码由 gogen cfggen生成).

walle很多组件有多个选择或者很多组件选项进行自定义配置,需要根据实际情况去做选择. 比如

  • 网络服务器: 网关建议采用gnet,而业务服务建议使用gotcp
  • 逻辑处理: 每个用户独立协程,或者一批用户一个协程并绑定系统线程,都可以通过process包的选项来进行定制.

这里不一一列举,可以根据实际业务需要进行调整.

walle中很多组件是可以替换的,并且允许使用者自己进行定制开发,比如config centra当前提供了 配置文件和etcd两种方式, 但是实际使用者可以自己定义其他数据源.

开发依赖工具

# mock接口生成
go install github.com/golang/mock/mockgen@v1.6.0
# 代码生成(option,string,struct => interface)
go install github.com/aggronmagi/gogen@latest
# walle 命令行工具(解析wproto,excel等)
go install github.com/walleframe/wctl@latest
# wctl插件 wpb 消息生成,兼容protobuf. zap接口生成. excel代码生成
go install github.com/walleframe/wplugins/cmd/wpb@latest
# wctl插件 生成rpc代码
go install github.com/walleframe/wplugins/cmd/wrpc@lates
# wctl插件 redis代码
go install github.com/walleframe/wplugins/cmd/wredis@latest
# wctl插件 mysql代码
go install github.com/walleframe/wplugins/cmd/wdb@lates
# excel代码 使用 wctl xlsx 命令

已封装服务

id范围定义
0-100基础组件
101-200内部工具组件
201-500业务组件
1000+对外接口

已封装服务组件整理

组件优先级描述代码仓库工具
configcentra-1配置中心服务(启动配置文件解析)https://github.com/walleframe/svc_cfgfilegogen cfgen
wlogger1日志文件wallewpb
etcdstore10etcd存储https://github.com/walleframe/svc_etcd
xlsxmgr20excel配置管理器https://github.com/walleframe/svc_xlsxwctl xlsx
dbmgr30数据库等链接管理https://github.com/walleframe/svc_dbwdb
redis40redis链接管理https://github.com/walleframe/svc_rediswredis
metrics100prometheus 监控告警组件walle
rpcclient180rpc客户端链接wallewrpc
rpcserver910rpc服务器wallewrpc

bootstrap.RegisterService 默认使用优先级 500 ,自定义优先级使用 bootstrap.RegisterServiceByPriority

config centra

使用配置文件: https://github.com/walleframe/svc_cfgfile

import (
	"github.com/walleframe/svc_cfgfile"
)
func main() {
	svc_cfgfile.UseConfigFile()
}

使用etcd做配置中心: https://github.com/walleframe/svc_etcd/ etcdcfg

import (
	"github.com/walleframe/svc_etcd/etcdcfg"
)

func main() {
	etcdcfg.UseEtcdConfig()
}

xlsx manager

https://github.com/walleframe/svc_xlsx

使用方式

使用 wctl xlsx 命令生成xlsx数据和xlsx加载代码. 使用init函数进行使用关系管理.

github.com/walleframe/walle/xlsxmgr 用于管理xlsx配置加载,附带2个从本地加载json数据的插件.(simple 可以通过修过加载文件函数,从embed中加载数据 local用于从本地加载文件后监听变动)

github.com/walleframe/svc_xlsx 用于服务管理,只要程序中有使用对应的xlsx配置,自动注册加载.

使用etcd读取配置

import (
	"github.com/walleframe/svc_etcd/etcdplugin"
)

func main() {
	xlsxmgr.RegisterXlsxPlugin(etcdplugin.XlsxPlugin)
}

redis

查看 https://github.com/walleframe/svc_redis 仓库

mysql

查看 https://github.com/walleframe/svc_db/ 仓库

代码约定

组件约定

所有服务组件,实现app包内的Service接口. 由bootstrap进行统一管理启动关闭流程.

redis,mysql,excel等数据组件之间的约定

生成代码引用服务定义代码,服务代码自动注册自身到 walle/app/bootstrap 内.

这样做是为了方便开发, 注册逻辑在包init时候注册,实际启动/初始化等由bootstrap控制.

所有init函数只能做注册关系操作,不能有实际逻辑处理代码.

其他,待完善

网络层

网络层详细文档

组件替换

组件类型组件名组件仓库
网络IOwebsockethttps://github.com/walleframe/net_websocket.git
网络IOgnethttps://github.com/walleframe/net_gnet.git
网络IOkcpkcp支持

About

walle目标是开箱即用. 灵活配置. 高性能的服务框架.开发中...

Resources

License

Stars

Watchers

Forks

Packages

No packages published