tcp server client rpc
##用户需要重写该接口
type Protocol interface {
// 新链接创建
OnNetMade(t *Transport)
// 处理数据
OnNetData(data *NetPacket)
// 链接断开
OnNetLost(t *Transport)
}
*程序优雅退出的策略 业务层 OnNetData 停止接受新的收据,等老数据都处理完后关闭底层链接
- Transport 封装了net.conn,实现了底层的读写
- TClient tcp客户端,实现了断开连接后重连机制
- TServer tcp服务器端
- Rpc 封装了tcpclient,使用seqid,实现了底层的链路共享
- proxy 代理转发
- WorkGroup 实现了线程池
- fproxy 代表整个程序的前端反向代理,添加、删除服务不用重启代理
- mproxy 代表可动态增添请求类型代理,添加、删除服务不用重启代理
- proxy 代表固定类型请求代理,添加、删除服务不用重启代理
- server 代表类型处理程序
- client 代表客户端
*添加新服务
- 代理根据注册的服务类型发现新服务,并主动连接新服务
- 代理发送服务注册请求
- 客户端返回服务注册表(json序列化的数组)
- 代理向连接它的客户(可以是fproxy,也可以是client)发送反注册请求
- 客户发送服务注册请求
- 代理返回服务注册表
*断开服务(优雅退出)
- 代理从注册表里删除该链接注册的服务表,停止转发数据
- 服务处理完所有缓存的请求后退出,断开连接
- 代理删除该服务,并向连接它的客户(可以是fproxy,也可以是client)发送反注册请求
- 客户发送服务注册请求
- 代理返回服务注册表