什么是RPC,RPC好处,经常使用的RPC框架

RPC简介

RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的状况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象同样。比较正式的描述是:一种经过网络从远程计算机程序上请求服务,而不须要了解底层网络技术的协议。那么咱们至少从这样的描述中挖掘出几个要点:编程

  • RPC是协议:既然是协议就只是一套规范,那么就须要有人遵循这套规范来进行实现。目前典型的RPC实现包括:Dubbo、Thrift、GRPC、Hetty等。这里要说明一下,目前技术的发展趋势来看,实现了RPC协议的应用工具每每都会附加其余重要功能。服务器

  • 网络协议和网络IO模型对其透明:既然RPC的客户端认为本身是在调用本地对象。那么传输层使用的是TCP/UDP仍是HTTP协议,又或者是一些其余的网络协议它就不须要关心了。既然网络协议对其透明,那么调用过程当中,使用的是哪种网络IO模型调用者也不须要关心。网络

  • 信息格式对其透明:咱们知道在本地应用程序中,对于某个对象的调用须要传递一些参数,而且会返回一个调用结果。至于被调用的对象内部是如何使用这些参数,并计算出处理结果的,调用方是不须要关心的。那么对于远程调用来讲,这些参数会以某种信息格式传递给网络上的另一台计算机,这个信息格式是怎样构成的,调用方是不须要关心的。架构

  • 应该有跨语言能力:为何这样说呢?由于调用方实际上也不清楚远程服务器的应用程序是使用什么语言运行的。那么对于调用方来讲,不管服务器方使用的是什么语言,本次调用都应该成功,而且返回值也应该按照调用方程序语言所能理解的形式进行描述。负载均衡

为何要用RPC

其实这是应用开发到必定的阶段的强烈需求驱动的。框架

  1. 若是咱们开发简单的单一应用,逻辑简单、用户很少、流量不大,那咱们用不着;编程语言

  2. 当咱们的系统访问量增大、业务增多时,咱们会发现一台单机运行此系统已经没法承受。此时,咱们能够将业务拆分红几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减少压力。此时,咱们也能够不须要RPC,由于应用之间是互不关联的。
  3. 当咱们的业务愈来愈多、应用也愈来愈多时,天然的,咱们会发现有些功能已经不能简单划分开来或者划分不出来。此时,能够将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用均可以与那些独立的Service应用 交互,以此来完成完整的业务功能。因此此时,咱们急需一种高效的应用程序之间的通信手段来完成这种需求,因此你看,RPC大显身手的时候来了!
    其实3描述的场景也是服务化 、微服务 和分布式系统架构 的基础场景。即RPC框架就是实现以上结构的有力方式。分布式

经常使用的RPC框架

目前经常使用的RPC框架以下:微服务

  1. Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。工具

  2. Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通信及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。

  3. Spring Cloud:Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务经常使用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,知足了构建微服务所需的全部解决方案。Spring Cloud基于Spring Boot, 使得开发部署极其简单。

  4. gRPC: 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。

相关文章
相关标签/搜索