原文:https://cloud.tencent.com/developer/article/1394336
很赞;
客户端侧比较复杂一些,涉及到这样的流程:
1.查找本地service stub,内存查找,很容易,即RGetServiceStub的调用;
stub对象是远程service在本地的一个抽象,它封装了连接管理,负载均衡,甚至名字查找等功能,对外透明;
2. 远端service可能部署了多个服务进程节点;service stub最终会连接上每一个节点并维护连接,一条连接是个Channel对象,这一步的目标是要选择一个channel发送请求;即GetChannel调用;
该过程较为复杂,如果还没有服务端地址列表,那么需要访问名字服务查询,一个异步的过程;如果有地址列表,但可能还没有建立tcp连接,那么要connect又是一个异步过程,所里这里用了不少future把这些异步操作串联起来了。
3.获取channel后,就可以调用invoke发送rpc消息了;涉及到消息发送以及请求上下文保存,并返回一个future;这个future就是Call返回的了,可以在上面注册callback,以处理收到的rpc响应。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文系转载,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。