有你在真好 的个人博客
RPC框架介绍
阅读:2222 添加日期:2021/3/27 23:22:11 原文链接:https://www.toutiao.com/item/6521553294454686216/

RPC框架介绍

在大规模的复杂互联网业务中,RPC框架是构建后端分布式系统必不可少的一个基础组件。它通过封装序列化/反序列化、网络IO操作、网络报文传输等诸多细节,有的甚至集成服务注册、监控与运营等功能,让开发人员专注于业务逻辑的开发,大幅提升了业务开发团队的工作效率。那如此强大的RPC框架究竟是个什么样的工作原理呢?今天,我们就对RPC来做一个全面的了解。

什么是RPC

RPC,Remote Procudure Call,中文译为远程过程调用。过程调用就可以理解我们常说的函数调用,远程过程调用是说调用服务端的接口跟调用本地接口一样方便。

RPC框架介绍

如上图所示,RPC框架把底层的通信细节做了封装,业务代码如同调用一个本地函数一样完成业务功能。

如果没有RPC框架,我们要调用一个服务端接口,必须按如下步骤进行:

  1. 创建一个本地socket

  2. 使用TCP连接服务端socket(这里假设使用TCP进行通信)

  3. 组装请求报文,并序列化

  4. 调用send()发送请求报文

  5. 调用recv()收取服务端的回包

  6. 如果通信结束,调用close()关闭本地socket

我们看到这个过程及其繁琐,而且繁琐的同时增加了出错的概率。RPC框架解决的问题就是把上述公共流程封装为库,让业务直接使用。

业界有哪些好用的RPC框架

  • thrift

    thrift是由Facebook于2007年开源的RPC框架,支持C++、Java、Python、PHP、go等多种语言,被认为是业界比较优秀的RPC框架。

  • gRPC

    gRPC是Google开源的基于HTTP/2和ProtoBuf构建的通用RPC框架。

  • bRPC

    百度开源的RPC框架,无论是代码质量还是文档都非常优秀,在百度也经历了多个业务的线上考验,非常值得推荐。

  • Tars

    腾讯的开源的RPC框架,支持C++、Java,在传统RPC框架的基础上还集成了服务监控、运营等周边系统,在腾讯内部使用广泛。

ICP备案号:苏ICP备14035786号-1 苏公网安备 32050502001014号