RPC框架介绍

未结帖
0 755
ajian admin_jim 2018-03-20
悬赏:5飞吻

RPC框架介绍

互联网技术面试 2018-02-12 14:41:35

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框架的基础上还集成了服务监控、运营等周边系统,在腾讯内部使用广泛。


热忱回答0


最近热帖

近期热议

  1. javascript——prototype与__proto 9
  2. Mysql 中出现的Data truncated for column 3
  3. 在nginx中使用x-sendfile的解决方案 3
  4. 高版本jQuery面插件实现Ajax上传图片 1
  5. Thinkphp Socket.class.php 类的使用 1
  6. 使用ionic3创建第一个App 0
  7. ios-oc html5 0
  8. nginx.conf 0
  9. 基于ionic3.4.0的项目搭建 0
  10. php 缩略图 0