序列化数据及RPC

JDK提供了ObjectOutputStream和ObjectInputStream,用于通过网络对POJO的基本数据类型的图进行序列化反序列化。

Google的Protobuf

  • 支持跨平台、多语言(支持目前巨大多数语言,例如C++、C#、Java、Python等;
  • 高性能、高可靠性;
  • 使用protobuf编译器能自动生成代码,Protobuf是将类的定义使用.proto文件进行描述,然后通过protoc.exe编译器根据.proto自动生成.java文件;

自定义RPC

RPC:远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络实现的技术。常见的RPC框架有:Dubbo、Spring Cloud, grpc等。

  1.  client以本地调用方式调用服务。
  2. client stub接收到调用后负责将方法、参数等封装成能够进行网络传输的消息体
  3. client stub将接收到的消息进行编码并发送到服务端
  4. server stub收到消息后解码
  5. server stub根据解码结果调用本地服务
  6. server stub 将返回导入结果进行编码并发送至消费方
  7. client stub 接收到消息并进行解码
  8. 服务消费方(client)得到结果

设计与实现

  • Client(服务的调用方): 两个接口 + 一个包含 main 方法的测试类
  • Client Stub: 一个客户端代理类 + 一个客户端业务处理类
  • Server(服务的提供方): 两个接口 + 两个实现类
  • Server Stub: 一个网络处理服务器 + 一个服务器业务处理类

注意: 服务调用方的接口必须跟服务提供方的接口保持一致(包路径可以不一致)
最终要实现的目标是: 在 TestNettyRPC 中远程调用 HelloRPCImpl 或 HelloNettyImpl 中的方法
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值