RPC在前端的应用场景

RPC 全称为 Remote Procedure Call,翻译过来为 远程过程调用

  • 简单的说,RPC 就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。

  • RPC 会隐藏底层的通讯细节(不需要直接处理 Socket 通讯或 Http 通讯)

  • RPC 是一个请求响应模型。客户端发起请求,服务器返回响应(类似于 Http 的工作方式)

RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

业界开源的RPC框架非常多,比较主流的RPC框架列举如下:

  • 由Facebook开发的远程服务调用框架Apache Thrift
  • Hadoop的子项目Arvo-RPC
  • Caucho提供的基于binary-RPC实现的远程通信框架Hessian
  • Google开源的基于HTTP/2和ProtoBuf的通用RPC框架gRPC

在我们前端领域,有以下几种常见的应用场景:

一、BFF

image.png

BFF 的概念在国内是阿里最先提出来的,主要是前端工程师维护的在端应用和底层服务中间的一层,用来针对不同的用户设备输出不同的接口,做一些数据的聚合、裁剪、适配等。通过RPC我们可以做了一些底层服务的调用,进行接口的聚合和转发,即 Node.js API 服务层。

image.png

上面这张图展示了 Node.js 在整个微服务架构中的位置,最上层的是一些端应用,当一个请求发起时首先会经过 Java 的网关,网关作为微服务的唯一入口,进行请求的分发和通用逻辑的处理,网关下面是一些 API 服务,用来提供 HTTP 接口,最底层是更加原子化、细粒度的 Dubbo 服务。Eureka 是网关和 API 层的注册中心,Zookeeper 是 Dubbo 层的注册中心。Node.js 在 API 层主要做了以下工作。

二、优化SSR

目前主流中大型项目(小型的比如本站,虽然也是SSR,但node中间层和API服务器部署在同一node进程中)的SSR方案,其渲染流程如下:

image.png

可以看到,在node中间层进行首屏渲染时,是会通过http协议向业务API服务器获取数据,这一步理论上有很大的优化空间。 比较完美的方案是基于BFF的思路,整合API,这样可以直接在流程上忽略掉最右边的业务API服务器。使用少量的代码将BFF层Node渲染中间层进行合并。 这样既可以杜绝跨域,也可以加快服务器首屏渲染的速度。

WRITTEN BY

lidong

鄂ICP备20003892号Copyright © 2017-2023 leedong.cn

ABOUT ME

Hello,这里是「我的心情永不立冬」
一个想到什么就做什么的个人站点,所有内容纯主观、有偏见