RPC是什么?10分钟掌握。

定义:

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

历史:

RPC:1997年2月19日,Sun公司发布了JDK 1.1,Java技术的一些最基础的支撑点(如JDBC等)都是在JDK 1.1版本中发布的,JDK 1.1版的技术代表有:JAR文件格式、JDBC、JavaBeans、RMI。Java语法也有了一定的发展,如内部类(Inner Class)和反射(Reflection)都是在这个时候出现的。 (RMI 就是 RPC的一种实现)

HTTP :1997年1月,HTTP/1.1 版本发布,场景是用于web架构,而不是分布式系统间通信。

从时间上看的出都已经存在了很久并不是什么新技术,近年来RPC被重视,只是硬件升级 处理器 内存的升级。及互联网大爆发导致现在微服务的流行,RPC及解决内部跨服务调用。而现在一个优秀的RPC要解决的早已不是当年简单的要求。更多的是在微服务的环境下。服务发现治理,熔断,限流,重试,负载 ,低响应,高可能等一系列问题。


RPC核心功能组成:

一个 RPC 的核心功能主要有 5 个部分组成

1)client code:客户端代码调用的实现,负责发起RPC调用,为调用方提供提供API;

2)序列号与反序列化:一般RPC网络传输的内容有文本和二进制两大类。文本:xml和json。二进制:java原生的序列化与反序列化,以及Hession、protobuf、Thrift、Avro、Kryo、MessagePack;

3)stub Proxy:存根,可以看做一种代理对象,屏蔽了RPC调用的复杂网络处理,使得RPC调用透明化。

4)Transport:作为RPC底层的通讯模块,一般使用Socket使得客户端与服务端之间传递请求与应答。

5)service code:服务端服务业务逻辑具体的实现


总结:主要包括了:接口规范+序列化反序列化规范+通信协议等。

--最为关键影响RPC性能框架的两个因素:序列化和通讯模块。--


RPC调用过程

调用方调用的是接口,要使用动态代理。

动态代理接收到调用后,应该想办法调用远程的实际实现。

识别具体要调用的远程方法的IP、端口

将调用方法的入参进行序列化

通过通信将请求发送到远程的方法中

远程的服务就接收到了调用方的请求。

反序列化各个调用参数

定位到实际要调用的方法,然后输入参数,执行方法

按照调用的路径返回调用的结果


常见的RPC架构:

    java RMI     Motan    Apache Trift    Grpc    Dubbo



对RPC理解有误的相关问题:

 问题1:既然有 HTTP 请求,为什么不直接用http。而去使用RPC。

 回答1:HTTP和RPC不是对等的概念。HTTP只是一个通信协议,是RPC架构中可选择的一种通信协议,是PRC架构中的组成成份。




问题2:为什么要使用自定义 tcp 协议的 rpc 做后端进程通信

回答2:通用定义的http1.1协议的tcp报文包含太多废信息 (http2 协议 已经优化了tcp报文数据,GRpc 使用的是HTTP2协议)

优秀的RPC 自定义报文的tcp协议.

优秀的RPC框架相对简单的http容器,更多的是封装了“服务发现”,"负载均衡",“熔断降级”一类面向服务的高级特性。更好的为了是面向服务的更高级的封装。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,588评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,456评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,146评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,387评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,481评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,510评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,522评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,296评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,745评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,039评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,202评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,901评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,538评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,165评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,415评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,081评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,085评论 2 352

推荐阅读更多精彩内容