Open rezonegames opened 3 years ago
你有兴趣修改一下吗?
你有兴趣修改一下吗?
现在还不行,刚开始学go~~
想到了另一个方式,在master服务里管理也行
Master 节点可以加一个接口来获取所有的 Gate 服务器。
我觉得clientAddr还是放到MemberInfo里比较好,要么还要维护一套服务的register和unregister。 在Cluster 加一个回调func,Master服务启动时在option里注册这个函数。register后,如果发现有这个回调就调用一次,获取所有服务。
也可以
也可以
这样就要改nano库~~
欢迎提交 PR,如果有兴趣,我们可以拉一个群讨论,继续完善 Nano
有群吗,可以拉我进来
加我微信 oss_lonng
ok
// Register implements the MasterServer gRPC service func (c cluster) Register(_ context.Context, req clusterpb.RegisterRequest) (*clusterpb.RegisterResponse, error) { if req.MemberInfo == nil { return nil, ErrInvalidRegisterReq }
resp := &clusterpb.RegisterResponse{}
for k, m := range c.members {
if m.memberInfo.ServiceAddr == req.MemberInfo.ServiceAddr {
c.members = append(c.members[:k], c.members[k+1:]...)
break
//return nil, fmt.Errorf("address %s has registered", req.MemberInfo.ServiceAddr)
}
}
@lonng cluster模式,如果某个进程关闭了再也重连不上问题:我修改为每次master存在就移除重新注册,帮忙看下这样修改合理吗?
可以的,提一个 PR 吧
1.master做状态检查,每隔一段时间对进程做状态检查,如果发现状态有问题,自动unregister操作 2.每次注册,如果master包含该server信息,直接返回正确