115-RPC实战与核心原理-115-RPC实战与核心原理
- 书名: 115-RPC实战与核心原理
- 作者: 115-RPC实战与核心原理
- 简介:
- 出版时间
- ISBN:
- 分类:
- 出版社:
高亮划线
115-RPC实战与核心原理
开篇词 | 别老想着怎么用好RPC框架,你得多花时间琢磨原理
01 | 核心原理:能否画张图解释下RPC的通信流程?
02 | 协议:怎么设计可扩展且向后兼容的协议?
03 | 序列化:对象怎么在网络中传输?
04 | 网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?
- 📌 零拷贝有两种解决方式,分别是 mmap+write 方式和 sendfile 方式,其核心原理都是通过虚拟内存来解决的。这两种实现方式都不难,市面上可查阅的资料也很多,在此就不详述了,有问题,可以在留言区中解决。 ^6-12154-12264
- ⏱ 2024-05-30 16:16:48
05 | 动态代理:面向接口编程,屏蔽RPC处理流程
-
📌 单纯从代理功能上来看,JDK 默认的代理功能是有一定的局限性的,它要求被代理的类只能是接口。原因是因为生成的代理类会继承 Proxy 类,但 Java 是不支持多重继承的。 ^7-11041-11127
- ⏱ 2024-05-30 17:12:57
-
📌 相对 JDK 自带的代理功能,Javassist 的定位是能够操纵底层字节码,所以使用起来并不简单,要生成动态代理类恐怕是有点复杂了。但好的方面是,通过 Javassist 生成字节码,不需要通过反射完成方法调用,所以性能肯定是更胜一筹的。在使用中,我们要注意一个问题,通过 Javassist 生成一个代理类后,此 CtClass 对象会被冻结起来,不允许再修改;否则,再次生成时会报错。 ^7-11685-11880
- ⏱ 2024-05-30 17:14:43
-
📌 Byte Buddy 则属于后起之秀,在很多优秀的项目中,像 Spring、Jackson 都用到了Byte Buddy 来完成底层代理。相比 Javassist,Byte Buddy 提供了更容易操作的API,编写的代码可读性更高。更重要的是,生成的代理类执行速度比 Javassist 更快。 ^7-12065-12215
- ⏱ 2024-05-30 17:14:37