进程间通信/普通本地函数调用
- 传递方法参数
- (确认方法版本)
- 执行被调方法
- 返回执行结果
又或是
- 方法参数压栈
- call 跳转函数入口
- 执行,压栈返回结果
- 回到上级call 调用
无法逃避的问题
- 不同物理介质间传输
- 基于现有网络通信理论
不同内存空间中通信/调用,无法忽略的问题
- 进程通信,谁作为服务端,谁作为客户端?
- 进程间调用,异常如何处理,如何被调用这获知?
- 服务端出现多线程竞争怎么办?
- 如何提高网络利用率?
- 参数、返回值如何表示?
- 如何保证网络可靠性?
- 发送请求收不到回复怎么办?
- ……
远程服务调用被发展为解决3个基本问题
- 如何表示数据
- gRPC:protocol Buffers
- XML 序列化
- JSON 序列化
- 如何传递数据
- SOAP 协议
- HTTP
- 如何表示方法(定位方法)
- CORBA:OMG IDL
- Web Service: WSDL
- JSON-RPC: JSON-WSP
RPC 框架发展
- 面向对象
- CORBA、DCOM
- 性能
- gRPC、Thrift
- 简化
- JSON-RPC(简单轻便、基于HTTP)
dubbo 框架学习
spring feign 学习
Motan 框架学习
面向资源编程
- REST,有时间再看,P34