分布式处理时,RPC调用的问题
发布于 1 年前 作者 hellolw 617 次浏览 来自 问答

如果在backend B在服务器S1,接收用户请求的gate在服务器S2,用户与服务器S2之间建立了一个session。 可以通过RPC序列化/反序列化,把gate.Session传递给B,这样B可以知道用户的session的信息,如sid uid等等。

我的问题是,在这种情况下,gate.Session提供的各种func还能正常使用么?如,send,isconnect等等。 如果可以正常使用的话,B调用send发一个消息给用户,是 S1->S2->用户 这样的路线传递的消息么? 同样,调用isconnect,我大致看了一下这个函数的实现,是去查gate中保存的session的信息,然后返回true/false,如果可以用的话,是不是意味着每台服务器上都有一个gate,而且都保存着同样的数据?

2 回复

gate.Session提供的各种func都能正常使用 实际上这些func都会通过rpc调用S2

B调用send发一个消息给用户,是 S1->S2->用户 这个流程也对

gate属于网关,只在网关进程里面存在,backend B在服务器不存在gate,backend B在服务器的gate.Session只是gate传递过来的一个副本,负责跟gate rpc通信而已,每次gate给backend B请求都会传一个新的gate.Session副本,因此backend B保留最新的那份gate.Session即可

@liangdas 了解了,多谢

回到顶部