RPC 杂记

注意
本文最后更新于 2022-08-08,文中内容可能已过时。

Socket

java.net包中,有两个常用类:

  • Socket:用于客户端
  • ServerSocket:用于服务端

Socket 网络通信过程分为4步:

  1. 建立服务端,监听客户端请求
  2. 客户端请求,建立连接
  3. 传递数据
  4. 关闭资源

具体到服务端:

  1. 创建 ServerSocket 对象并且绑定ip+port
1
server.bind(new InetSocketAddress(ip,port))
  1. 监听请求 accept()
  2. 连接建立后,通过输入流读取客户端发送到请求信息
  3. 通过输出流向客户端发送响应信息
  4. 关闭资源

具体到客户端:

  1. 创建 Socket 对象并连接服务器
1
socket.connect(inetSocketAddress)
  1. 连接建立后,通过输出流向服务器端发送请求信息
  2. 通过输入流获取服务器响应信息
  3. 关闭资源

Serailizable

1. Serializable 接口

2. transient 关键字

3. 各种序列化

  • hessian2序列化:dubbo rpc默认启用的序列化方式,源自 hessian lite
  • json序列化:可读性强
  • java序列化:性能不好
  • Kryo序列化:专门针对Java语言,性能非常好,推荐面向生产环境
  • ProtoBuf/ProtoStuff:跨语言序列化

RPC

1. 基础

多个PRC服务如何保证一致性?

TCC+MQ 保证最终一致性

  • TCC:Try-Confirm-Commit
  • MQ:consumer的重试机制
0%