RPC 实践 | 青训营笔记

52 阅读2分钟

这是我参与【第五届青训营】伴学笔记活动的第十一天

基本概念

RPC(remote prodecure call)简单来讲是 远程函数调用像本地函数调用一样简洁 相对于本地函数调用需要解决的问题:

  • 函数映射
  • 序列化
  • 网络通信

概念模型

image.png

一次完整的RPC调用

image.png

首先,双方有约定好的IDL协议,指定了可以有哪些函数调用,每次传递的参数是什么。调用者生成代码之后,进行序列化,通过网络传输协议发送给被调用方,进行解码后执行函数调用,返回结果。

分层设计

image.png

解编码层

客户端和服务端根据同一分IDL文件,生成不同的语言代码(codegen).

数据格式有:特定语言的格式、二进制编码、文本格式如json,csv,xml

协议层

协议是双方确定的交流语义,如字符串传输协议

image.png

网络通信层

image.png socket套接字编程 绑定ip和端口号

阻塞时

当目前的服务器正忙时,请求被挂起,进入挂起队列 服务端调用connection进行连接请求,服务端调用accept建立连接,获得客户端的fd 此后类似于IO过程,调用readwrite函数

关键指标

保护措施

  • 熔断:保护调用方
  • 限流:保护被调用方
  • 超时控制:避免把资源用在不可用节点上

稳定性

image.png

中间件

中间件是介于应用系统和系统软件之间的一类软件,它使用系统软件所提供的基础服务(功能),衔接网络上应用系统的各个部分或不同的应用,能够达到资源共享、功能共享的目的。它并没有很严格的定义,但是普遍接受IDC的定义:中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源网络通信。从这个意义上可以用一个等式来表示中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来

易用性

企业实践 KITEX