RPC和序列化

2018-05-03 22:24 更新

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
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号