RPC 杂记
目录
注意
本文最后更新于 2022-08-08,文中内容可能已过时。
Socket
在java.net
包中,有两个常用类:
Socket
:用于客户端ServerSocket
:用于服务端
Socket 网络通信过程分为4步:
- 建立服务端,监听客户端请求
- 客户端请求,建立连接
- 传递数据
- 关闭资源
具体到服务端:
- 创建
ServerSocket
对象并且绑定ip+port
|
|
- 监听请求
accept()
- 连接建立后,通过输入流读取客户端发送到请求信息
- 通过输出流向客户端发送响应信息
- 关闭资源
具体到客户端:
- 创建
Socket
对象并连接服务器
|
|
- 连接建立后,通过输出流向服务器端发送请求信息
- 通过输入流获取服务器响应信息
- 关闭资源
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的重试机制