1.RPC的概念模型
User、User-Stub、RPC-Runtime、Server-Stub、Server
2.RPC的过程
IDL文件:IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
生成代码:通过编译器工具把IDL文件转换为语言对应的静态库
编解码:从内存中表示到字节序列的转换称为编码,反之称为解码,常称为序列化和反序列化
通信协议:规范了数据在网络中的传输内容和格式,除必须的请求/响应数据外,通常还会包含额外的元数据
网络传输:通常基于成熟的网络库走TCP/UDP传输
3.RPC的好处
单一职责,有利于分工协作和运维开发;可扩展性强,资源使用率更优;故障隔离,服务的整体可靠性更高
4.RPC带来的问题
服务宕机,对方应该如何处理;在调用过程中发送网络异常,如何保证消息的可达性;需求量突增导致服务无法及时处理,有哪些应对措施
5.分层设计
Code 用户编写的业务逻辑代码
Service Processor、read/write 通过代码生成工具把IDL文件转换成不同语言对应的lib代码,里面封装了编解码逻辑
TProtocal 框架的编解码层 语言特定的格式,将内存对象编码为字节序列;文本格式:JSON、XML、CSV等文本格式具有可读性;二进制编码具备跨语言和高性能等特点 TLV编码:Tag标签/类型,Length长度,Value值
TTransport 框架的协议层 特殊结束符,特殊字符作为每个协议单元结束的标识;变长协议,以定长加不定长的部分组成,定长部分对不定长部分长度进行描述
Network IO 框架的网络通信层 Sockets API,通过套接字编程,根据服务器的IP地址以及端口号进行通信。