了解一下RPC,为何诞生RPC,和HTTP有什么不同?
了解一下RPC,为何诞生RPC,和HTTP有什么不同?
开篇提问
- 什么是RPC?
- 为什么需要RPC,用来解决什么问题?
- RPC与HTTP有什么不同?
- 你知道几种RPC?
认识RPC
RPC:Remote Procedure Call,远程过程调用。是指计算机程序使过程在不同的地址空间(通常在共享网络的另一台计算机上)执行时,其编码方式就像是正常的(本地)过程调用,而无需程序员明确为远程交互编码细节。
RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
RPC是进程间通信(IPC)的一种形式,因为不同的进程具有不同的地址空间:如果在同一主机上,即使物理地址空间相同,它们也具有不同的虚拟地址空间;如果它们位于不同的主机上,则物理地址空间是不同的。许多不同的(通常是不兼容的)技术已被用来实现这一概念。
【简单理解】:两台不同计算机(程序),计算机A有一个约定协议,计算机B想调用计算机A需要通过约定协议来进行通讯调用。

RPC的诞生
其实早在1982年左右RPC就被人用来做分布式系统的通信,最早发明『远程过程调用』这个词语的人是『布鲁斯·杰伊·尼尔森 (Bruce Jay Nelson)』大约是在1981年。
我们所熟知的Java在1.1版本提供了Java版本的RPC框架(RMI),此时在1990年后,基本上RPC被广泛用于系统之间的调用。但是只在后端方向熟知,对于大众更多的还是接触HTTP等协议,也因此RPC更晚让大众了解认知。
RPC与HTTP
先讲讲HTTP
HTTP:Hypertext Transfer Protocol即超文本传输协议。
HTTP协议在1990年才开始作为主流协议出现;之所以被我们所熟知,是因为通常HTTP用于web端,也就是web浏览器和web服务器交互。当ajax和json在前端大行其道的时候,json也开始发挥其自身能力,简洁易用的特性让json成为前后端数据传输主流选择。HTTP协议中以Restful规范为代表,其优势很大。它可读性好,且可以得到防火墙的支持、跨语言的支持。
HTTP的缺点也很快暴露:
- 有用信息占比少,HTTP在OSI的第七层,包含了大量的HTTP头等信息
- 效率低,因为第七层的缘故,中间有很多层传递
- HTTP协议调用远程方法复杂,需要封装各种参数名和参数值以及加密通讯等
所以RPC好在哪?
- 都是有用信息
- 效率高
- 调用简单
- 无需关心网络传输或者通讯问题
HTTP和RPC其实有联系
http也是rpc实现的一种方式。
RPC和HTTP一句话说不同
RPC就像地区方言,只有内部知道,双方都需要知道方言,不然没法沟通
HTTP就是普通话,基本都能懂,也会说
RPC一般用于什么地方?
在微服务、分布式已经成为日常的今天,服务通常都部署在不同的服务器,服务器也在不同地区,这时候就存在跨地域跨服务器调用问题,RPC即用于这样类似的情况。
RPC适用于公司内部使用,性能消耗低,传输效率高,服务治理方便,但是不建议传输较大的文本、视频等。
篇末提问
- 是否让你理解HTTP和RPC的一些不同了?
- RPC用来干嘛了解了吗?
- 你有在用RPC吗?
了解一下RPC,为何诞生RPC,和HTTP有什么不同?的更多相关文章
- RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大、最高效的方法之一。它为在分布式计算环境中运行的几乎所有应用程序提供基础。
RPC 编程 使用 RPC 编程是在客户机和服务器实体之间进行可靠通信的最强大.最高效的方法之一.它为在分布式计算环境中运行的几乎所有应用程序提供基础.本文介绍 RPC 客户机和服务器之间基本的事件流 ...
- 拥抱.NET Core,跨平台的轻量级RPC:Rabbit.Rpc
不久前发布了一篇博文".NET轻量级RPC框架:Rabbit.Rpc",当初只实现了非常简单的功能,也罗列了之后的计划,经过几天的不断努力又为Rabbit.Rpc增加了一大波新特性 ...
- RPC原理及RPC实例分析
在学校期间大家都写过不少程序,比如写个hello world服务类,然后本地调用下,如下所示.这些程序的特点是服务消费方和服务提供方是本地调用关系. 1 2 3 4 5 6 public class ...
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V1 -- 本地方法调用
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V1——RPC -- 本地方法调用:不通过网络 入门 1. RPCObjectProxy rpcObjectProxy = new RPCObjec ...
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V2 -- 本地方法调用 整合 Spring
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2——RPC -- 本地方法调用 + Spring 1. 配置applicationContext.xml文件 注入 bean 及 管理 bean ...
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V3 -- 远程方法调用 整合 Spring
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V3——RPC -- 远程方法调用 及 null的传输 + Spring 服务提供商: 1. 配置 rpc03_server.xml 注入 服务提供 ...
- 网络编程 -- RPC实现原理 -- RPC -- 迭代版本V4 -- 远程方法调用 整合 Spring 自动注册
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V4——RPC -- 远程方法调用 + Spring 自动注册 服务提供商: 1. 配置 rpc04_server.xml 注入 服务提供商 rpc ...
- 开源自己实现一个.net rpc框架 - Machete.Rpc
Machete.Rpc Machete.Rpc 是一个轻量级的Rpc(远程过程调用的)框架.底层代理使用了Emit提高了效率,底层通信采用DotNetty框架以提升通信的效率.目前正在逐步完善中. G ...
- C# -- 高性能RPC框架:Socean.RPC
简介 Socean.RPC是一个.Net下的高性能RPC框架,框架以高性能.高稳定性为目标,底层基于socket,无第三方库引用,代码简洁,总代码量大约在2000行,框架性能较高,在普通PC上测试,长 ...
随机推荐
- 矩阵乘法优化DP复习
前言 最近做毒瘤做多了--联赛难度的东西也该复习复习了. Warning:本文较长,难度分界线在"中场休息"部分,如果只想看普及难度的可以从第五部分直接到注意事项qwq 文中用(比 ...
- 阿里云OSS生成sts令牌
业务场景: 如果前端直接上传文件到OSS,势必要暴露令牌,无法精准控制上传内容等,使用临时令牌即可解决这个问题. 先去阿里云后台设置好token,角色,地区等 pom.xml <dependen ...
- echarts饼图默认状态高亮显示
需求:饼状图默认状态下高亮显示指定内容. 最常见的两种: 一.饼图中间始终默认展示数据总数和统计事项的名字(如下图),这种实现方式比较简单,就不多介绍 二.饼图中间默认展示某一图例的具体数据,鼠标放在 ...
- python制作命令行工具——fire
python制作命令行工具--fire 前言 本篇教程的目的是希望大家可以通读完此篇之后,可以使用python制作一款符合自己需求的linux工具. 本教程使用的是google开源的python第三方 ...
- 六、Jmeter测试元件-测试计划
启动Jmeter时,会默认建好一个测试计划,启动一个Jmeter只有个测试计划 测试用到的源码下载地址 https://www.cnblogs.com/fanfancs/p/13557062.html ...
- ORACLE11g Dataguard物理Standby 日常巡检操作手册
ORACLE11g Dataguard物理Standby日常巡检操作手册 编写:_____________校对:_____________日期:_____________ 目录1.DG环境的日常巡检 ...
- Private jre vs Public jre
今天说一下java环境构建中,jre相关的小知识点. private jre:一般是C:\Program Files\jdk1.8.0\jre,必须安装,它为jdk的运行提供必需的环境. public ...
- 个人微信公众号搭建Python实现 -个人公众号搭建-处理消息和事件(14.3.4)
@ 目录 1.消息处理 2.事件处理 3.返回处理 关于作者 1.消息处理 现在只处理text文本消息 没有关键字的就交给qingyunke机器人去应付,这是一个免费的对话api 从配置文件中读取关键 ...
- ceph如何快速卸载所有osd及擦除磁盘分区表和内容并重新加入
我的ceph集群中有4台服务器,16个osd,因为某些原因,集群中的数据都不要了,但是集群要保留给新的应用使用,集群现有的osd情况如下 [root@ceph-host-01 ~]# cat /etc ...
- 简丽Framework-开篇
简丽Framework-开篇 简丽Framework 是一个开源java Web开发框架. 开源的框架.库.组件等比比皆是,每个开源产品都有它的定位和价值. 简丽Framework的定位是 ...