一行RPC调用,究竟发生了什么?(内核干货)

2020-08-03 00:00:00 函数 专区 架构 调用 聊聊
每当我们写下一个本地函数调用的时候:
int result = Add(1, 2);

我们知道,代码段里有一段Add的代码,调用方将参数1和2压栈传入,Add函数计算完成之后,返回结果给result,这是一个本地函数调用的过程。

画外音:额,有朋友留言,他并不知道。

那每当我们写下一个RPC接口调用的时候:
int result = RPCService::Add(1, 2);

整个过程发生了什么?


又或许,那么当我们写下RPC异步调用的时候:
RPCService::Add(1, 2, callback);

callback(result){
    ...
}

整个过程又发生了什么?


微服务分层架构之后,微服务能够提供RPC接口,使得上游像调用本地函数一样,去调用一个远端的服务:
(1)整个RPC内核架构是怎么样的?
(2)整个RPC调用内部流程是怎么样的?
(3)内存对象,如何转化为二进制流?
(4)同步调用RPC架构序列化组件,连接池组件的实现细节是怎么样的?
(5)异步调用RPC架构上下文管理器,请求收发队列,请求收发线程,超时管理器的实现细节是怎么样的?
(6)...
作为一个有追求的工程师,这些RPC内核细节,是需要了解的。

相关文章