什么是 RPC?
Remote Procedure Call,远程过程调用。
RPC 有什么作用?屏蔽远程调用、本地调用的区别
隐藏底层网络通信的复杂性,让我们更专注于业务
RPC 步骤
为什么需要序列化?网络传输必须是「二进制」,调用方的参数都是对象
请求↔二进制消息体
零拷贝
什么是零拷贝?
为什么需要零拷贝?
网卡等操作,只能通过内核操作,应用程序要发送网络数据,需要将数据复制到内核。
如何实现零拷贝?
虚拟内存mmap + write
sendfile
Netty 的零拷贝有何不同?一个请求,可能拆分成多个数据包
数据包的组合在用户空间,解决用户空间内存的拷贝处理问题,CompositeByteBuf
也包括用户空间、内核空间的数据拷贝:Direct Buffers
动态代理实现JDK:只能代理接口
<