RPC和序列化
1.什么是RPC ?
java远程方法调用,跨虚拟机方法调用,RPC不是技术,是一种解决方案,google protobuffer提供了该种整合方案。
2.RPC原理?
RPC并不是一项新的技术,而是对原有的java技术的整合实现 跨进程的java方法调用。
- 网络通信
- 序列化反序列化
- 回调函数
- 动态代理
stub,在本地代表远程方法的存根,实际上是一个动态代理对象,代理着远程的方法。
需要调用远程方法,先创建stub对象,存根对象上代理着远程的方法;在存根对象的方法中实现rpc的调用过程:
机器a发起请求,通过stub远程代理对象,将数据序列化,通过网络传输到达机器b,机器b对请求进行反序列化,找到需要的方法,将方法在经过序列化-网络传输-反序列化的过程返回给机器a。
3. Java中怎么实现序列化?
系列化:将内存中不连续且容易丢失的对象信息转换成二进制的信息,用来存储或传递,这个过程叫序列化。
持久化:将内存中易失的对象序列化之后保存到持久化的设备中的过程。 Java中的序列化:
Sun公司在jdk1.0版本的时候就实现了序列化和反序列化技术。 只需要对需要序列化的类实现Serializable接口,添加序列化id即可。序列化ID的作用是保证在序列化和反序列化的时候解析出来的数据一致。
不需要序列化的属性使用关键字transient
Java中序列化缺点 序列化产生的数据量大,速度慢,不能跨语言
开源的序列化和反序列化框架
- 谷歌 --google protobuffer
- *Apache -- AVRO
- *facebook -- Thrift
更多建议: