面试官顺着一个 RPC 项目继续问,问题很快就会落到具体实现上:
- TCP 只有字节流,粘包、半包怎么处理?
- 同一条长连接发出多个请求,响应回来后怎么找到对应的调用方?
- 服务实例上下线以后,客户端怎样及时拿到新地址?
- 请求超时后,
CompletableFuture和在途请求 Map 怎么清理,复用的 Channel 要不要关闭? - 新增一种序列化方式,为什么不应该继续往
switch里加分支?
只记住“RPC 让远程调用像本地调用一样简单”,遇到这些追问很难往下讲。《手写 RPC 框架》围绕一个可以运行的 Java 项目,把动态代理、网络通信、自定义协议、序列化、注册中心、负载均衡、异步调用和异常处理串在一起。

