RPC远程过程调用协议

  最近学习Hadoop、Hbase、Spark及Storm原理,经常会出现RPC这样的传输术语,为了更好地理解,将知识点详细的整理下吧~

RPC-----它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。

简要工作原理

(1)调用客户端句柄,执行传入参数

(2)调用本地系统内核发送网络信息

(3)消息传送到远程主机

(4)服务器句柄得到消息并取得参数

(5)执行远程过程

(6)执行的过程将结果返回服务器句柄

(7)服务器句柄返回结果,调用远程系统内核

(8)消息传回本地主机

(9)客户句柄由内核接收消息

(10)客户接受句柄返回的数据

  RPC的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的额语义简洁性。为了实现目标,RPC框架需提供一种透明调用机制让使用者不必显示的区分本地调用和远程调用。

 传输服务

  协议编码后,将编码后的RPC请求消息传输到服务方,服务方执行后返回结果消息或确认消息给客户方,RPC的应用场景实质是一种可靠的请求应答消息流,和HTTP类似。因此选择长连接方式的TCP协议会更高效。与HTTP不同的是在协议层面我们定义了每个消息的唯一id,因此可以更容易的服用连接。

  对于数据传输量小的应用类型,单链接基本足够。单链接和多连接最大的区别在于,每根连接都有自己私有的发送和接收缓冲区,因此大数据量传输时分散在不同的连接缓冲区会得到更好的吞吐效率。所以,如果你的数据传输量不足以让单链接的缓冲区一直处于饱和状态的话,那么多连接不会产生任何明显的提升,反而会增加连接管理的开销。

执行调用

  client stub所做的事情仅仅是编码消息并传输给服务方,而真正调用过程发生在服务方。server stub的两个组件,一个负责控制调用过程,一个负责真正调用。Java中实现代码的动态接口调用目前一般通过反射调用,除了原生的jdk自带的反射,一些第三方库也提供了性能更优的反射调用,因此RpcInvoker就是封装了反射调用的实现细节。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏idba

主从替换之后的复制风暴

一套MySQL主-备-备-备数据库,其中的备库升级到主库之后,系统监控报警 Seconds_Behind_Master 瞬间为0,瞬间为数十万秒。第一感觉是遇...

20220
来自专栏小白安全

绕过Edge、Chrome和Safari的内容安全策略

概述 ---- Web应用中有许多基本的安全机制,其中一个是同源(same-origin)策略机制,该机制规定了应用程序代码可以访问的资源范围。同源策略的...

43870
来自专栏Seebug漏洞平台

DeDeCMS v5.7 密码修改漏洞分析

织梦内容管理系统(DedeCms)以简单、实用、开源而闻名,是国内最知名的PHP开源网站管理系统,也是使用用户最多的PHP类CMS系统,在经历多年的发展,目前的...

48880
来自专栏信安之路

轻松理解 X-XSS-Protection

首先我们来理解一下什么是“X-XSS-Protection”,从字面意思上看,就是浏览器内置的一种 XSS 防范措施。

15000
来自专栏北京马哥教育

10个方法助你轻松完成Linux系统恢复

在Linux中有一些应用程序可以帮助你保存系统快照。大多数应用程序都是针对于新手的,并不需要高级的Linux操作技巧。我们在这里挑选了10个,你可以从中选择适合...

56750
来自专栏网站设计制作、数字营销

做网站知识之域名解析易懂介绍

公司在做网站时,在购买了域名、主机空间、及网站源代码和数据库都做好了之后,如果网站备案通过了,就可以做域名解析,如果解析设置没有问题,10分钟之后网站就可正常打...

34040
来自专栏数据和云

运维经验:回滚段异常的特殊救急方法

? 冷菠 冷菠,资深DBA,著有《Oracle高性能自动化运维》,有近10年的数据库运维、团队管理以及培训经验。擅长数据库备份恢复、数据库性能诊断优化以及数据...

45290
来自专栏散尽浮华

nginx+php负载均衡集群环境中的session共享方案梳理

在网站使用nginx+php做负载均衡情况下,同一个IP访问同一个页面会被分配到不同的服务器上,如果session不同步的话,就会出现很多问题,比如说最常见的登...

85270
来自专栏腾讯云数据库(TencentDB)

CynosDB技术详解——存储集群管理

CynosDB是架构在CynosFS之上的分布式关系数据库系统,为最大化利用存储资源,平衡资源之间的竞争,检查资源使用情况,需要一套高效稳定的分布式集群管理系统...

19.8K60
来自专栏不止思考

缓存服务的更新策略有哪些?

一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频率常常都是不均匀分布的,大多情况是读多写少,并且读操作(select)还会有一些复杂的判断...

19320

扫码关注云+社区

领取腾讯云代金券