a7458969 47b72da442 | ||
---|---|---|
config | ||
handler | ||
logger | ||
model | ||
network | ||
protocol | ||
test | ||
tools/mq | ||
util | ||
vendor | ||
zk | ||
.gitignore | ||
Dockerfile | ||
README.md | ||
TcpServConfig.json | ||
deploy.bat | ||
go.mod | ||
go.sum | ||
k8s.deploy.yaml | ||
main.go | ||
restart.sh |
README.md
go-tcpFramework-rudy
介绍
基于golang的tcp长连接框架--rudy。
软件架构
功能:
提供连接数管理,支持熔断,热重启
提供路由管理,支持context化timeout和cancel
支持分布式,和主节点选举
支持apolo配置
心跳包支持
服务端推送支持
How to use
package main
import (
"flag"
"go-tcpFramework-rudy/config"
"go-tcpFramework-rudy/logger"
"go-tcpFramework-rudy/network"
"log"
)
func main() {
var confPath string
flag.StringVar(&confPath,"conf_path","TcpServConfig.json","the path of configuration file")
flag.Parse()
config.InitConfig(confPath)
//network.SetHandler(handler.HandlePack)
server := network.ServerFactory(config.Configs().Ipadress)
server.SetHandler(nil)
log.Print("start " + config.Configs().Type + " server " + "at address " + config.Configs().Ipadress)
e := server.Run()
if nil != e {
logger.LogDebugError(e.Error())
}
}
server 服务实例
server.SetHandler 设置处理句柄
server.Run() 服务启动
包头格式文档(Package format)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 0x40 | 0x41 | length[3] | length[2]
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| length[1] | length[0] | verify |
包头格式7个字节,首个字节标识符40 41 ,然后包长度,最后是verify是包头长度的校验和
secure tcp
secure tcp提供了类似于tls,ssl的机制的安全tcp连接,流程如下