本文学习的代码地址:https://github.com/Snailclimb/guide-rpc-framework
本文代码地址:https://gitee.com/uamaa/msc-rpc-framework
文章目录
【前言】本文主要实现了如下改进:
1.利用Netty传输数据
2.利用Kyro实现序列化
0 查看代码有哪些改动
新创建了例子客户端与服务器,跟之前的大差不差,
旧例子的RpcClient和RpcServer变成SocketRpcClient和SocketRpcServer,
新例子用的NettyRpcClient和NettyRpcServer
这里变了一点,我觉得这样更合理,代理和地址没得关系的
加了一个序列化异常类
加了序列化模块
加了Netty传输模块
1 看懂代码
本次版本改进就是引入了Kryo和Netty,Kryo服务于Netty,所以我们先看Kryo模块,再看Netty模块。
1.1 Kryo
先定义了一个序列化接口,声明序列化与反序列化方法
然后KryoSerializer实现该接口类
这么做的好处是:接口只负责提出需求,具体的实现需要具体的实现类来做,可能这一版用的是Kryo来实现。下一版又引入了新的技术,只需要新建新技术的实现类就行了,方便程序扩展
官方文档: https://github.com/EsotericSoftware/kryo
文档里提供了快速入门的简单例子
public class TestKryo {
static public void main (String[] args) throws Exception {
Kryo kryo = new Kryo();
kryo.register(SomeClass.class);
SomeClass object = new SomeClass();
object.value = "Hello Kryo!";
Output output = new Output(new FileOutputStream