-
Notifications
You must be signed in to change notification settings - Fork 470
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于task层中的todo的想法 #54
Comments
由于目标serverId故障,当前用户触发重连,可能连接到了其他的serverId上,这个时候msg要去往的serverId是要改变的。 |
那比我想象的复杂好多,,这等于需要让connect的服务保持可用性?我看起来userId和serverId还是对应的关系 |
再看了下发现昨天想错了!好像也没那么难,如果当前userId因为connect服务失效断开连接,然后再自主地去另一个connect服务身份认证的话,会把userId和serverId组成键值放到redis里。那这样的话在下面这个错误处理里再根据userId拿到serverId就可以了 connectRpc, err := RClient.GetRpcClientByServerId(serverId)
if err != nil {
logrus.Infof("get rpc client err %v", err)
} 但又有点太简单,是差了啥东西吗 |
不使用默认的arg.ServerId ===> 根据userId和serverId的映射关系取最新的应该是哪个serverId |
看不太懂,我理解是redis用string类型存userId和serverId的对应关系,那只要用userId去查询拿到的应该就是userId对应的最新的serverId |
是这个意思 |
|
可以,作为补偿机制吧 |
@LockGit 这个需要提个pr吗,要的话我测试下 |
可以提 |
关于task中push.go里的todo
因为在task里已经维护了关于connect层的serverId信息,那是不是只要做一个if判断就可以实现,也就是说如果当前serverId在task层里查找不到(服务失效)的话,就遍历task维护的connect层信息找到另一个有效的connect服务
The text was updated successfully, but these errors were encountered: