为什么选 RPC 而不是 HTTP ?

网络编程——RPC与HTTP基本介绍、历史追溯、主流应用场景、对比分析、为什么还需要使用RPC RPC并不是一个具体的协议,只是一种协议的规范,它并没有具体实现,只有按照RPC通信协议规范实现的通信框架,也就是RPC框架,才是协议的具体实现,它包括了:接口规范+序列化反序列化规范+通信协议等。现在狭义的RPC一般指一些用IDL(Inteface Description Language)描述接口, 然后生成stub的框架, 比如grpc,thrift,dubbo等,其中grpc,dubbo3.0的传输用的都是HTTP2.0,也已经属于RPC和HTTP的融合体了,这种融合体的设计使得开发人员可以享受到H 阅读详情

去年我面试一位高级后端工程师的时候,看他简历上写着“熟练掌握RPC框架”,所以我就试探着问了他几个原理方面的问题,比如,“大概说下RPC框架的核心原理”“、描述下序列化部分的逻辑”。但聊了半天,我发现他其实并不熟,他的回答基本都是在告诉我怎么用,以及怎么更好地用好这些框架。

 

紧接着,我追问到,“如果没有RPC框架,那你要怎么调用另外一台服务器上的接口呢”。这问题可深可浅,但特别考验候选人的基本功,基本就能搞明白候选人是否深入思考过RPC框架的原理。

 

说到 RPC,我相信你只要在个稍微体量大的公司里待过就肯定会有接触。从技术复杂度上来,它一点都不简单。你去招聘网站上看看,只要涉及到 PRC 框架开发的工作岗位,基本都在基础架构部门,并且薪水不低。下面这张图是拼多多的 JD,薪水范围是30K~60K。

 

 

RPC 真的很难吗?我可以确定地说,这技术起码不简单。如果你能够搞懂RPC框架的设计原理,或者能够自己造一个轮子出来,那我起码可以确定你的基本能力肯定不差。如果你还有机会参与公司的 RPC 治理工作,并且能够解决各种线上问题,那你的能力应该能和很多公司的高级架构师能力相当了。

 

之所以这么说,是因为你在掌握 RPC 相关的技术过程中,肯定会接触到序列化、压缩算法、协议、动态代理、服务注册、加密、网络编程、连接管理、健康检测、负载均衡、优雅启停机、异常重试、业务分组以及熔断限流等等方面的知识。

如果你都能把这些问题搞定了,那能力怎么可能差呢?

 

说到这里,我也想起了那个经常被我们提起的冰山模型。水面之上的部分,我们看起来很简单。但注意,那都是别人包装之后的东西。而水面之下的那些技术,才是我们成长的关键。

 

  

如果你想彻底搞懂 RPC,推荐给你极客时间上线的《RPC实战与核心原理》专栏。专栏里,何小锋会结合过去 20 多年累积的工作经验,为你精选出 20 多个 RPC 相关的高频场景化问题,揉碎了帮你讲原理,帮你真正知其所以然。

 

????点击上图免费试读

结算时输入优惠口令「RPCRPC666」

再减¥5,仅限前200名

何小锋是谁?

 

何小锋,京东技术架构部首席架构师。在 2011 年,他就正式加入了京东,之后就没有再离开过。

 

在京东的这 9 年时间里,他参加过 17 次大大小小的大促活动备战,和技术团队一起见证了京东的技术演进过程,攻克过很多技术领域难题,包括自主研发微服务框架、高性能消息中间件、智能监控以及容器平台等等。 

 

近几年,他主攻的是分布式系统架构与设计,也是他的专长所在。而在搭建分布式系统的过程中,他发现 RPC 总能充当较为关键的角色,对整个分布式系统性能的提升起到了非常重要的作用。

 

他希望能通过这个专栏,以图文、多种应用场景、原理、实践相结合的方式,能把他这些年积攒的 RPC 实战经验分享给你。

RPC流程

 典型应用架构图

 

他是如何讲透RPC框架的?

 

整个课程以“RPC 实战场景”为核心,重点关注 20+ 真实场景下的解决方案以及背后的实现原理。

 

内容设置以”逐步深入“的方式进行设计,先夯实基础,带你系统了解 RPC 通信过程中必知必会的知识点;再带你学习 RPC 的重点难点,主要包括 RPC 框架中的治理功能以及集群管理功能等等;最后活学活用,关注系统性能提升、线上问题排查等等。

 

他把整个专栏的内容分为了三大部分,分别是基础篇、进阶篇和高级篇。

 

第一部分为基础篇,重点讲解 RPC 的基础知识,包括 RPC 的基本原理以及它的基本功能模块。夯实基础之后,他会用一场实战的方式,通过剖析一款 RPC 框架,将整个基础知识串联起来。

 

第二部分为进阶篇,他会列举很多我在运营RPC框架中遇到的实际问题,以及这些问题的解决方案。

 

第三部分为高级篇,活学活用,关注系统性能提升、线上问题排查等,用多个具体场景,来讲解RPC的应用。比如异步RPC、时钟轮在RPC中的应用、流量回放等等。

 

总的来说,学完这个专栏,你会有 4 个收获:

  • 熟练掌握 RPC 核心原理及架构设计要点

  • 解决 20+ 基于真实场景的高频问题

  • 深入剖析 RPC 框架的系统应用

  • 手把手设计一个灵活的 RPC 框架

 

截了些留言,给你看看

一定要看下目录,非常实战????

想搞明白RPC框架,建议订阅????

输入优惠口令「RPCRPC666」再减 5 元

到手仅 63 元

口令仅限【前 200 个】名额有效。

疫情虽严重,时间却是自己的。不如趁这段时间,做一些真正提升自己的事情。

 

????点击「阅读原文」立即到手

【RPC】RPC和Http的理解 文章目录一、概述二、RPC2.1、RPC定义2.2、RPC主要组成部分三、影响RPC框架性能的因素四、问题1.面试官:公司使用什么 RPC 框架?,可以介绍一下 RPC 的工作原理吗?2.面试官:服务启动的时候服务基本信息被注册到注册中心,如果服务提供者挂了,注册中心如何知道服务不可用了呢?3.面试官:如果注册中心挂了,比如你用的是 Zookeeper,如果 Zookeeper 挂了,那服务之间还能相互调用吗?4.面试官:你对 RPC 了解的很透彻,那你能否自己写一个 RPC 框架?可以简答描述下思路也行。 阅读详情

相关推荐

既然有HTTP协议,为什么还要有RPC

纯裸TCP是能收发数据,但它是个无边界的数据流,上层需要定义消息格式用于定义消息边界。于是就有了各种协议,HTTP和各类RPC协议就是在TCP之上定义的应用层协议。RPC本质上不算是协议,而是一种调用方式,而像gRPC和thrift这样的具体实现,才是协议,它们是实现了RPC调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时RPC有很多种实现方式,不一定非得基于TCP协议。从发展历史来说,HTTP主要用于b/s架构,而RPC更多用于c/s架构。...

m0_67698950的博客 674

HTTP服务和RPC服务,如何选择

一、七层网络结构模型: 我们先来了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层: (从上到下) 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口; 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等; 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断; 第四层:传输层。管理着网络中的端到端的数据传输; 第五层:网络层。定义网络设备间如何传输数据; 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;

360linker 604

RPC是什么?和HTTP区别?

来区分 消息边界。于是,我们会把每条要发送的消息都包装一下。比如加入。

sumatch的博客 1572

为什么需要RPC,而不是简单的HTTP接口

转载自:http://www.oschina.net/question/271044_2155059?sort=default&p=1#answers 目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的。 论复杂度,RPC框架肯定是高于简单的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全...

weixin_34259232的博客 1684

既然有 HTTP 协议,为什么还要有 RPC?

既然有 HTTP 协议,为什么还要有 RPC?

技术杠精的博客 1739

为什么 Spring Cloud 选择 HTTP 而不是 RPC 进行远程调用?

超文本传输协议(HTTP)是互联网上应用最为广泛的一种网络协议,它是客户端浏览器和其他代理服务器之间的主要通信协议。HTTP 使用统一资源定位符(URL)作为其标识符,以TCP/IP为基础,主要用于网页浏览。

java专栏 1024

既然有了HTTP,为什么还需要RPC?一半以上的面试者回答不上来....

今天我们就来聊一聊为什么在我们的分布式和微服务系统中,有HTTP还要有RCP呢?这两者又有什么区别呢?这或许在面试的过程中也会被经常问到,而且会结合者项目来问。问你你们项目用的是哪种通信技术方案?在计算机科学领域,HTTP和RPC都是常用的协议。HTTP协议是一种基于请求和响应模式的协议,用于在Web上进行数据传输。而RPC协议则是远程过程调用协议,它允许一个程序在另一个计算机上执行函数。虽然HT...

Java知音 830

雷赛控制卡全方位使用指南:从硬件连接到高级应用

雷赛控制卡以其接口简单、编程便捷、性价比高的特点,成为中小自动化设备的理想选择。使用时需注意:硬件连接需注重抗干扰设计(屏蔽线、接地);软件开发需合理配置运动参数(脉冲当量、加减速);调试阶段需充分利用 DMCStudio 工具验证性能。通过本文介绍的方法,可快速实现从硬件搭建到复杂运动控制的全流程开发,满足雕刻、切割、装配等多场景的自动化需求。

品质生活,极致编程。 3776

微服务为什么使用RPC而不使用HTTP通信

微服务为什么使用RPC而不使用HTTP通信

ronshi的博客 1353

AMCL代码详解(六)amcl中的重采样

每次都从w1左边的竖线开始转,显而易见,转到w1的概率为0-w1之间的随机数,转到w2的概率为w1到w1+w2之间的随机数,转到w3的概率为w1+w2到w1+w2+w3之间的随机数,后面的依次类推。当某个粒子的权值较大的时候,产生的随机数落在相应区间的概率就会增大,从而实现了对权值大粒子的多次复制,权值小的粒子的剔除。可以看出,在整个重采样的过程中,粒子进行了两次种情况的刷新,一种是随机生成的新的粒子,一种是对原来的粒子的复制。得到的值越大,说明粒子的权重越小,当前粒子的可信度比较小,需要重采样粒子。

YiYeZhiNian的博客 1580

整合Springboot+MybatisPlus+达梦数据库

整合Springboot+MybatisPlus+达梦数据库,以及一些坑

波波的博客 6678

为什么 Feign 要用 HTTP 而不是 RPC?

定义Feign 是一个声明式的 HTTP 客户端,它使得编写 HTTP 客户端变得更加简单和方便。它基于 Java 接口和注解,通过定义接口的方式来描述要调用的远程服务的 API。作用Feign 简化了服务间的 HTTP 调用过程,开发者只需要定义一个接口,并使用注解来描述请求的方法、URL、参数等信息,Feign 会自动生成实现该接口的代理对象,用于发送 HTTP 请求并处理响应。

果酱 の 博客 3181

智能车竞赛必备:STC32G144K开源库实战指南(含总钻风摄像头配置)

本文为智能车竞赛参赛者提供了一份基于STC32G144K微控制器与逐飞开源库的实战开发指南。文章详细介绍了从开发环境搭建、总钻风摄像头驱动配置与图像采集优化,到核心控制算法实现与多任务调度等关键步骤,旨在帮助队伍快速构建稳定高效的视觉处理系统,提升竞赛竞争力。

weixin_29191081的博客 716

RPC 是什么?为什么有了 HTTP 还要用 RPC

RPC 是什么?为什么有了 HTTP 还要用 RPC

m0_46671240的博客 1297

【同等学力】2005-数学⭐✨

有r个正方形排成一行,今用红、黄、白、蓝四种颜色给这个r个正方形染色,每个正方形只能染一种颜色,如果要求染红、黄、白色的正方形分别至少出现一个,问有多少种不同的染法?3、(4分)设G是一个有n个结点m条边的连通简单平面图,若n≥3,则m≤3n-6.4、(4分)证明:任何连通简单平面图至少有一个结点的度数不超过5

super_mochi1 307

精读204页华为的流程管理(文末附下载链接)

链接:https://pan.baidu.com/s/1eEwdBR5c0PIxkOrNhDZcGg?pwd=wha2 提取码:wha2 复制这段内容后打开百度网盘手机App,操作更方便哦。,以提升企业运营效率和竞争力,同时解决了诸多业务痛点,为华为的全球化发展提供了有力支撑。华为的流程管理对其发展起着关键作用,通过构建完善的流程体系,提升了企业运营效率与竞争力。华为的流程管理在企业发展中至关重要,其围绕。,并通过流程变革不断优化。在流程管理过程中,强调。构建了全面的流程体系。

cdfunlove的博客 283

详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?

详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?

水w的博客 3274

基于FPGA的7x7矩阵求逆verilog开发

up目录一、理论基础二、核心程序三、测试结果 矩阵求逆,即求矩阵的逆矩阵。矩阵是线性代数的主要内容,很多实际问题用矩阵的思想去解既简单又快捷。逆矩阵又是矩阵理论的很重要的内容,逆矩阵的求法自然也就成为线性代数研究的主要内容之一。设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。其中,E为单位矩阵。典型的矩阵求逆方法有:利用定义求逆矩阵、初等变换法、伴随阵法、恒等变形法等。 逆矩阵的求法有多种,其中重要

FPGA/MATLAB学习教程/源码/项目合作开发 3898

HTTP和RPC的区别

HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而RPC接口则基于远程过程调用。 RPC(即Remote Procedure Call,远程过程调用)和HTTP(HyperText Transfer Protocol,超文本传输协议),两者前者是一种方法,后者则是一种协议。两者都常用于实现服务,在这个层面最本质的区别是RPC服务主要工作在TCP协议之上(也可以在HTTP协议),而HTTP服务工作在HTTP协议之上。由于HTTP协议基于TCP协议.

Steve Wang's blog 1万+

【DRAM存储器六十二】DDR5介绍--引脚和基本功能简介

详述DDR5与DDR4的引脚区别和DDR5基本功能

highman110的博客 530

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

有了http为什么还要RPC ?

尽管HTTP广泛用于Web开发,但在需要高性能、复杂函数调用、多语言支持或双向通信的分布式系统中,RPC仍然有明显的优势。RPC简化了远程服务调用的过程,并提供了比HTTP更灵活的通信模型和更高效的传输机制。因此,RPC在许多现代分布式系统、微服务架构、实时通信系统中仍然占据着重要地位。

言之。 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

为什么需要RPC,而不是简单的http接口

目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的。 论复杂度,RPC框架肯定是高于简单的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全性不如RPC。 现在问题是,遇到怎样的瓶颈了才需要或者说更适合用RPC(比如像阿里这么大的请求并发量,简单的HTTP肯定达不到预期),但问题是大家所在的公司,要...

疯一样的女子 1126

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【基础】RPC、JSON-RPC和HTTP区别

一. RPC RPC是什么 RPC(Remote Procedure Call)指的是远程过程调用,简单的说,RPC就是从一台机器上通过参数传递的方式调用另一台机器上的一个函数或方法并得到响应结果。 RPC会隐藏底层的通讯细节。 RPC是一个请求响应模型,客户端发起请求,服务器返回响应。 RPC在使用形式上像调用本地函数一样去调用远程的函数。 常见的RPC框架 dubbo: 阿里巴巴...

藏经阁 | 玄苦 2万+

RPC 与 HTTP 区别

RPC 与 HTTP 区别1. 前言2. 正文3. HTTP 既然也是 RPC 的一种实现?为什么公司还要自研 RPC 框架? 1. 前言        网上很多博客都是在说HTTP与RPC采取不同的协议,RPC所传输的数据是经过压缩的二进制数据,但是HTTP协议同样支持gzip压缩算法。其次,另一个说法就是HTTP的报头所占的有太多无效信息,但是20-60字节的首部长度会对业务有很大影响吗?以现阶段计算机处理及网络传输速度,应该并无影响

wang_zhao_的博客 6029
上一篇: 一份完整的阿里云 Redis 开发规范,值得收藏!
下一篇: 高并发场景下限流,常见的限流算法、方案解析!
Java思维导图
博客等级 码龄10年 306粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值