RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。

比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。

那么我们至少从这样的描述中挖掘出几个要点:

RPC是协议:既然是协议就只是一套规范,那么就需要有人遵循这套规范来进行实现。

目前典型的RPC实现包括:Dubbo、Thrift、GRPC、Hetty等。这里要说明一下,目前技术的发展趋势来看,实现了RPC协议的应用工具往往都会附加其他重要功能。

网络协议和网络IO模型对其透明:既然RPC的客户端认为自己是在调用本地对象。那么传输层使用的是TCP/UDP还是HTTP协议,又或者是一些其他的网络协议它就不需要关心了。

既然网络协议对其透明,那么调用过程中,使用的是哪一种网络IO模型调用者也不需要关心。

信息格式对其透明:我们知道在本地应用程序中,对于某个对象的调用需要传递一些参数,并且会返回一个调用结果。

至于被调用的对象内部是如何使用这些参数,并计算出处理结果的,调用方是不需要关心的。那么对于远程调用来说,这些参数会以某种信息格式传递给网络上的另外一台计算机,这个信息格式是怎样构成的,调用方是不需要关心的。

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

为什么要用RPC

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

如果我们开发简单的单一应用,逻辑简单、用户不多、流量不大,那我们用不着。

当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。

当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。

所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!

其实描述的场景也是服务化 、微服务和分布式系统架构的基础场景。即RPC框架就是实现以上结构的有力方式。

常用的RPC框架

目前常用的RPC框架如下:

Thrift:thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。

它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。

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

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

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

文源网络,仅供学习之用,如有侵权,联系删除。

我将优质的技术文章和经验总结都汇集在了我的公众号【Java圈子】里。

为方便大家学习,我还整理了一套学习资料,涵盖Java虚拟机、spring框架、Java线程、数据结构、设计模式等等,免费提供给热爱Java的同学~

什么是RPC?RPC好处?常用的RPC框架?相关推荐

  1. Java 中几种常用的 RPC 框架介绍

    RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展.Java中的RPC框架比较多,各有特色,广泛使用的有RMI.Hessian.Dubbo等.RPC还 ...

  2. Java中几种常用的RPC框架介绍

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 后台回复"大礼包"有惊喜礼包! 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 Crouch down ...

  3. RPC(Remote Procedure Call)框架详解

    RPC(Remote Procedure Call)框架 RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想 ...

  4. 为带你搞懂RPC,手写了RPC框架

    如今,分布式系统大行其道,RPC 有着举足轻重的地位.Dubbo.Thrift.gRpc 等框架各领风骚,学习RPC是新手也是老鸟的必修课.本文带你手撸一个rpc-spring-starter,深入学 ...

  5. linux停止rpc服务,Linux系统安装启动rpc服务,解决Loadrunner监控不到资源问题

    前言:在LoadRunner Controller下添加Unix Resource Graphs时,报错如下: Monitor name :UNIX Resources. Cannot initial ...

  6. JAVA RPC 生产级高可用RPC框架使用分享

    先放出链接,喜欢的给个star:https://gitee.com/a1234567891/koalas-rpc 一:项目介绍 koalas-RPC 个人作品,提供大家交流学习,有意见请私信,欢迎拍砖 ...

  7. 笔记本电脑显示rpc服务器不可用,Win7电脑RPC服务器不可用怎么办 RPC服务器不可用解...

    笔记本采购 最近有win7系统用户反馈,电脑提示rpc服务器不可用!Rpc服务器是指远程过程调用协议:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.有时候由于过度优化关闭了r ...

  8. win7系统安装信息服务器不可用怎么办,Win7电脑RPC服务器不可用怎么办 RPC服务器不可用解决方法...

    最近有win7系统用户反馈,电脑提示rpc服务器不可用!Rpc服务器是指远程过程调用协议:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.有时候由于过度优化关闭了rpc服务,致 ...

  9. 导出文件提示rpc服务器不可用,rpc服务器不可用怎么办 RPC服务器不可用解决方法有哪些...

    [rpc服务器不可用]rpc服务器不可用怎么办?RPC服务器不可用解决方法汇集 A简单方法: 通过"控制面板/管理工具/服务",检查一下RPC的Remote Procedure C ...

最新文章

  1. O - Layout POJ - 3169(差分约束)
  2. mysql5.7.20非安装版_mysql5.7.20\5.7.21免安装版安装配置教程
  3. Tensorflow保存模型详解(进阶版二):如何保存最近的.ckpt文件 及 如何分开保存.ckpt数据文件和.meta图文件
  4. Headers and client library minor version mismatch.
  5. MyEclipse6.5安装SVN插件的三种方法
  6. linux学习134 unit6
  7. mysql免费框架_MySQL(ORM框架)
  8. 加密视频如何破解 如何解除机器码绑定的视频
  9. 微信小程序生成二维码方法接口集合
  10. java中set和get用法_java中 set 和 get
  11. 其实,我只是一个工程师
  12. 盲人怎么用计算机打字,盲人打字键盘指法练习技巧和方法
  13. Blow Up 3macOS图片放大锐利的详细使用教程与安装方法
  14. 4 书写规则
  15. 按键边缘检测,控制LED亮灭
  16. 《Head First Java (中文第二版)》勘误
  17. gym102028 problem E Resistors in Parallel (大数)
  18. ibatis mysql 函数_Ibatis+MySql范例(转)
  19. (实验38)单片机,STM32F4学习笔记,代码讲解【SD卡实验】【正点原子】【原创】
  20. 南通高二计算机会考题型,考试题型

热门文章

  1. Android 内存卡 / Micro SD 卡 / TF 卡 / 存储卡 剩余容量 / 剩余内存 / 可用空间、总容量的 2 种获取方式
  2. 孩子升年级难适应?猿辅导语文金牌教研来支招
  3. IOS条形码扫描技术实现
  4. PowerShell install 一键部署VMware_Workstation
  5. 含泪赔了近200万,我终于明白不是什么人都能干电商的……
  6. (称重问题)假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比
  7. 东华大学计算机专业全国排名多少,2017东华大学专业排名情况
  8. 在Groovy中使用字符串
  9. 网易考拉API开发系列:item_get-根据ID取商品详情 API 返回值说明
  10. ADV7441驱动EDID配置及声音问题