这是我参加「第三届青训营 -后端场」笔记创造活动的第2篇笔记

基本概念

远程函数调用(RPC)

实际上便是一个体系供给可供其他体系调用的函数,当其他体系传输正确的参数并调用相应函数,则能够在该体系中履行相应的体系功用。这便是最为常见的,运用远程函数调用的体系接口方法。

体系间数据交互的目的,便是一个体系中的功用履行结果,以数据的形式被被传输到另外一个体系,并在运用此结果数据,在另外这个体系中履行相应的体系功用。

远程函数调用(RFC)这种接口模式,便是数据会直接传输相应体系,并在此体系中直接履行体系功用。

我们能够形象的理解为,被调用的体系A,将其体系的账号和暗码交给了外部体系B,外部体系B在必要时,会登陆到A体系中,用体系B中的正确参数,也便是数据,去履行A体系中的体系功用。

RPC需求处理的问题

  1. 函数映射:怎么将路由与函数对应
  2. 数据转换成字节流:数据怎么转换成字节流进行传输
  3. 网络传输:确保机器之间的通讯

一次RPC的完整进程

深入浅出rpc框架 | 青训营笔记

IDL(Interface description language)文件

IDL通过一种中立的方法来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序能够相互通讯

生成代码

通过编译器工具把IDL文件转换成语言对应的静态库

编解码

从内存中表示到字节序列转换称为编码,反之为解码,也常叫做序列化和反序列化

通讯协议

标准了数据在网络中的传输内容和格局,除必须的恳求/呼应数据外,一般还会包括额定的元数据

网络传输

一般基于老练的网络库,用TCP/UDP传输

RPC的好处

  1. 单一责任,有利于分工协作和运维开发
  2. 可扩展性强,资源运用率更优
  3. 故障阻隔,服务的全体可靠性更高

RPC分层

深入浅出rpc框架 | 青训营笔记

RPC结构的关键目标

稳定性

保障战略

  1. 熔断:保护调用方,防止被调用的服务出现问题而影响到整个链中,在被调用的服务出现问题时有一个兜底的计划
  2. 限流: 保护被调用方,防止大流量把服务压垮
  3. 超时操控:避免浪费资源在不可用节点上
  4. 负载均衡:确保各服务节点的流量平均分配
  5. 重试:必定程度确保服务的正常呼应,必定程度上消除因网络暂时中断带来的问题

易用性

  1. 合理的默认参数选项(约好大于配置),丰厚的文档
  2. 有丰厚的生成代码工具、脚手架工具

扩展性

  1. 能够自己扩展,比方增加中间件

观测性

  1. Log, Metric, Tracing
  2. 内置观测性服务

高功用

能够运用连接池,多路复用,运用高功用的编解码协议和网络库来进步功用

既有HTTP,为什么用RPC

RPC 仅仅一种规划而已

RPC 仅仅一种概念、一种规划,便是为了处理不同服务之间的调用问题, 它一般会包括有传输协议序列化协议这两个。

但是,HTTP 是一种协议,RPC结构能够运用 HTTP协议作为传输协议或许直接运用TCP作为传输协议,运用不同的协议一般也是为了适应不同的场景。

RPC结构功用更齐全

老练的 RPC结构还供给好了“服务主动注册与发现”、”智能负载均衡”、“可视化的服务治理和运维”、“运行期流量调度”等等功用,这些也算是挑选 RPC 进行服务注册和发现的一方面原因吧!

总结

RPC结构在微服务在应用广泛,能够说是不可或缺的一部分。总得来说,RPC结构首要目地是让分布式或许微服务体系中不同服务之间的调用像本地调用一样简略。