关于rpc的一点疑惑、为什么需要rpc?

网上的解答是 : rpc的目的 就是通过像调用本地服务一样远程调用另一台服务器上的服务来完成需求。

我的理解就是调用这个远程服务的目的就是获取一个返回结果,然后客户端拿到这个结果再做相关的操作,那么问题来了,为什么不直接调用一个http的接口呢,将参数通过get或者post来传递,这样可以获取到相应的结果啊。又或者通过socket直接发送数据包来请求服务,然后服务端通过不同的数据包来执行不同的服务。

那么rpc的好处体现在哪里呢=_=

0

4个回答

 http接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。第三个来说就是安全性。最后就是最近流行的服务化架构、服务化治理,RPC框架是一个强力的支撑

0
qq_28380057
黄大神 谢谢解答(。>∀<。)
一年多之前 回复

http请求的数据效率相对rpc调用低很多

0

rpc协议是一个概念,它可以把一个远程服务当作一个本地服务提供给调用者,能完成把远程服务封装然后提供给调用者的协议,都可以用来实现rpc。
http协议也可以用来实现rpc调用,但是http协议比较重,相比较于thrift实现的rpc,完成同样的功能http通信开销大得多。
socket只是一个简单的网络通信方式,只是创建通信双方的通信通道,而要实现rpc的功能,还需要对其进行封装,以实现更多的功能。

0

楼上解释的已经差不多了,我再补充一下,RPC一般配合netty框架、spring自定义注解来编写轻量级框架,其实netty内部是封装了socket的,较新的jdk的IO一般是NIO,即非阻塞IO,在高并发网站中,RPC的优势会很明显。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
RPC框架的意义和用法,什么是RPC
关于RPC框架,首先我们要了解什么叫RPC,为什么要用RPC。 RPC是只远程过程调用,也就是说两台服务器A,B, 一个应用部署在A服务器上,另一个应用部署在B服务器上,A服务器上的应用想要调用B服务器上的应用提供的方法/函数,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语意和传递调用的参数。 比如说,一个方法可能这样定义: Student getStudentByName(
详解RPC实现需要动态代理
RPC通俗的讲就是在本地调用服务器端服务。而实现RPC框架用到的一项重要的技术就是动态代理技术,首先先讲一下为什么使用动态代理(不知道动态代理的 可以自行百度一下动态代理)技术我们知道 在使用动态代理时有一个这样的方法public Object invoke(Object proxy, Method method, Object[] args) 使用在客户端,使用动态代理代理客户端发送请求有两优点...
RPC 使用中的一些注意点
最近线上碰到一点小问题,分析其原因发现是出在对 RPC 使用上的一些细节掌握不够清晰导致。很多时候我们做业务开发会把 RPC 当作黑盒机制来使用,但若不对黑盒的工作原理有个基本掌握,也容易犯一些误用的微妙错误。虽然曾经已经写过一篇《RPC 的概念模型与实现解析》 从概念模型和实现细节上讲述了 RPC 的原理,这一篇就从使用上的一些注意点来捋一捋吧。同步RPC 的调用通常为了方便使用,会被伪装成普通方
什么是RPC? 为什么要用RPC?
        RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。         为什么要用RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算能力需要横向扩展,需要在...
有http 了,为什么还要rpc?
       技术应该不是为了使用新技术而去使用,而应该是旧技术存在某些瓶颈,存在难以支撑或者扩展性越老越差等问题暴露出来之后,用新技术来进行解决。        那RPC最大的优点,或者说它相比简单的HTTP接口,它的优势、更适合它的业务场景是怎样呢?简单的HTTP又哪里不足,哪些场景明显不太适合呢?        RPC=Remote Produce Call 是一种技术的概念名词.RPC...
rpc 之序列化
序列化的概念 序列化:把对象转化为字节序列的过程。 反过来说就是反序列化。 序列化的应用 1、储存对象,可以是永久的储存在硬盘的一个文件上,也可以是储存在redis支持序列化存储的容器中。 2、网络上远程传输对象。 Rpc之间调用以流字节的方式传输,java序列化是java平台上的序列化工具,一个对象需要在网络上传输,需实现 Serializab
关于RPC 这些你可能不知道吧!
之前对RPC一直是云里雾里的,我们在了解RPC之前应该先弄明白这几个问题: 1.RPC 是什么? 2.RPC框架有什么职责? 3.RPC服务跟我们常用的HTTP服务有什么区别?就是某种情况下我们用RPC,而不用HTTP了! 4.为什么说&quot;搞定微服务架构,先搞定RPC框架&quot;?(搞微服务的同学可以了解下,其余的可以略过...) 我们首先来了解下第一个问题: RPC是什么 ?   百度百科上对于R...
为什么说程序员到了不得不掌握RPC的时候了!
来源 | 公众号:码洞  |  作者 :佬钱原文标题:《深入理解RPC——RPC在企业服务中的核心价值》随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长...
从RPC开始(二)、序列化
在C++的世界里构建一个序列化框架;并非一件困难的事情,但也并非简单。因此,需要分成两部分来完成这项任务: 1、序列化容器。 2、序列化方式。   前者,很容易理解;但也决定着我们将要存储数据的方式:二进制抑或其他。二进制方式,很容易想到和使用的方式;但也最容易以极不安全的方式去使用;因为,为了各种原因,在存储时我们极易丢掉原本的类型信息,使得一切都靠“人工约定”这种很不靠谱的方
为什么说要搞定微服务架构,先搞定RPC框架
(1)RPC框架是架构微服务化的首要基础组件,它能大大降低架构微服务化的成本,提高调用方与服务提供方的研发效率,屏蔽跨进程调用函数(服务)的各类复杂细节 (2)RPC框架的职责是:让调用方感觉就像调用本地函数一样调用远端函数、让服务提供方感觉就像实现一个本地函数一样来实现服务
到底什么是RPC,不妨自己动手写一个。了解一下?
RPC是一种远程过程调用协议。RPC主要功能:异构分布式项目之间的通信,使消费者只需要知道接口,远程调用方法就像调用本地方法一样。 要使得消费层只通过接口调用远程实现方法,那么其之间的传输数据肯定是:类、方法、参数、返回值,以及一些其它传输的信息。 之间涉及到通信,肯定要发布服务供客户端请求。客户端要执行未知实现的方法,是通过动态代理实现的。 在了解动态代理的使用后,就会发现,在动态代理的方法执行...
理解动态代理及动态代理在RPC中的应用
我尽量用通俗的语言来解释我对动态代理技术的理解动态代理技术动态代理涉及到了两种技术:1,反射机制;2,代理机制。这两种技术的详细解释请自行谷歌或百度。 有几篇文章大家可以看看: http://m.blog.csdn.net/hejingyuan6/article/details/36203505 http://www.cnblogs.com/xiaoluo501395377/p/3383130
有http了,为什么还要用rpc?
  http 和 rpc 并不是一个并行概念。 http是超文本传输协议,应用层网络协议。 rpc不是协议,是指远程过程调用,对不同应用间相互调用的一种描述。其调用协议通常包含传输协议和编码协议;支持http和tcp;   rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。 例如rpc框架提供的负载均衡,服务治理,自动熔断/降级,...
轻量级分布式 RPC 框架
目录[-] 第一步:编写服务接口 第二步:编写服务接口的实现类 第三步:配置服务端 第四步:启动服务器并发布服务 第五步:实现服务注册 第六步:实现 RPC 服务器 第七步:配置客户端 第八步:实现服务发现 第九步:实现 RPC 代理 第十步:发送 RPC 请求 总结 附录:Maven 依赖 RPC,即 Remote Procedure Call(远程
良好的RPC接口设计,需要注意这些方面
RPC 框架的讨论一直是各个技术交流群中的热点话题,阿里的 dubbo,新浪微博的 motan,谷歌的 grpc,以及不久前蚂蚁金服开源的 sofa,都是比较出名的 RPC 框架。RPC 框架,或者一部分人习惯称之为服务治理框架,更多的讨论是存在于其技术架构,比如 RPC 的实现原理,RPC 各个分层的意义,具体 RPC 框架的源码分析…但却并没有太多话题和“如何设计 RPC 接口”这样的业务架构...
为什么需要RPC,而不是简单的HTTP接口
转载自:http://www.oschina.net/question/271044_2155059?sort=default&p=1#answers 目前有很多Java的RPC框架,有基于Json的,有基于XML,也有基于二进制对象的。 论复杂度,RPC框架肯定是高于简单的HTTP接口的。但毋庸置疑,HTTP接口由于受限于HTTP协议,需要带HTTP请求头,导致传输起来效率或者说安全
什么样的RPC才是好用的RPC
什么样的RPC才是好用的RPC现在RPC框架很多,但是真正好用的RPC却是少之又少。那么什么是好用的RPC,什么是不好用的RPC呢,有一个评判标准吗?下面是我列举出来的衡量RPC好用与否的几条标准: 真的像本地函数一样调用 使用简单,用户只需要关注业务即可 灵活,RPC调用的序列化方式可以自由定制,比如支持json,支持msgpack等方式 下面来分别解释这几条标准。 标准1:真的像本地函数一样调用
【RPC 专栏】深入理解RPC之序列化篇--总结篇
&amp;#13; &amp;#13; &amp;#13; &amp;#13; &amp;#13; &amp;#13; &amp;#13; 点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目J...
erlang rpc 远程调用
rpc启动rpc模块的启动过程很简单,并没有初始化做太多事情,以{local,rex}的名称启动了一个gen_server进程,然后以gb_trees的数据结构来存储gen_server的state。业务进程调用rpc:callrpc模块中比较常用的就是rpc:call和rpc:castcall/4 和 call/5 这个两个接口的区别,只是在timeout时间是自定义还是infinity而已。
如何理解RPC
简述 远程过程调用(Remote Procedure Call,缩写为RPC),是一种用于构建基于C/S(客户端/服务器)的分布式应用程序技术。调用者与被调用者可能在同一台服务器上,也可能在由网络连接的不同服务器上,对于他们来说,网络通信是透明的,远程调用像本地调用一样简单。 理解 RPC就是要像调用本地函数一样去调用远程函数,要理解RPC,让我们先来看看如何完成一个本地函数的调用: ...
有http 请求,为什么还要用rpc调用?
作者:手不要乱摸链接:https://www.zhihu.com/question/41609070/answer/191965937来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。这个回答里恰巧讲了一些rpc通信协议的细节,但是强调一遍通信协议不是rpc最重要的部分,不要被这个回答带偏了。如果要了解rpc请更多的去了解服务治理(soa)的一些基本策略,推荐去看看du...
什么是RPC? RPC是什么?
写在前面: 技术,不要那么复杂 什么是RPC 以下摘自百度百科 远程过程调用协议 RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底>层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络>通信模型中,RPC跨越了传输层和应用层。RPC使得开
通俗的解释一下什么是 RPC 框架?
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。 RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简
【RPC 专栏】深入理解RPC之序列化篇 —— Kryo
点击上方“芋道源码”,选择“置顶公众号”技术文章第一时间送达!源码精品专栏 中文详细注释的开源项目Java 并发源码合集RocketMQ 源码合集Sharding-JDB...
一起写RPC框架(十四)RPC注册中心一--注册中心的简述
注册中心在RPC整个体系中担任的角色是比较重要的,但也是比较微妙的,它维护了所有服务提供者的所暴露服务的信息,最最核心的信息就是IP+端口号,服务消费者会在调用服务的时候去注册中心上去询问它远程调用服务的端口和IP地址,其实最最简单的注册中心的职责就是如此,注册中心的最核心的职责就是如此 但是,其实在RPC的体系中,注册中心其实是可以缺失的,因为假如服务消费者知道服务提供者的地址,就可以
从零开始我的rpc第一篇之我认识的rpc
rpc是什么呢.从意思来看,翻译为远程过程调用(Remote Procedure Call),目的就是让远程的函数调用起来就像在本地一样轻松方便.类似我们http请求,接收到远程服务器返回的信息.而rpc定位在函数调用上,底层利用tcp传输,更加高效,从而让我们感觉如同本地调用一般. 为什么我们要使用rpc.rpc很好的帮我们解决了远程跨服务器函数调用的问题,而其偏向于函数层面的特点,也就...
RPC 和 SOAP 有什么区别?
RPC vs SOAP无论在商业、政治、人际关系,甚至在拯救生命的过程中,通信在任何领域都是至关重要的。通信被证明最重要的另一个领域是计算机网络。如果没有合适的通信手段,一个典型的服务请求者和服务提供者就无法达成。在互联网领域中,有一个叫做 Web Service 的事物。它主要适用于网络中两台电子设备之间的简单通信。截至目前来讲 Web Service 中最常用的就是 RPC (Remote P
rpc与http的区别
原文:http://aoyouzi.iteye.com/blog/2269482OSI网络结构的七层模型各层的具体描述如下:  第七层:应用层     定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理;   第六层:表示层     掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 ...
如何实现 RPC 框架的要点浅析
简单的说,RPC 就是从一台主机上的进程 A 通过参数传递的方式调用另一台主机上的进程 B 中的一个函数,并得到返回的结果。因此 RPC 具有以下特点: a. RPC 会隐藏底层的通讯细节,不需要直接处理如何通信及收发数据。 b. RPC 是一个请求响应模型。客户端发起调用请求,服务端返回请求响应,这类似于HTTP 的工作方式。 c. RPC 在使用形式上像调用本地函数一样去调用远程的函数。
远程过程调用(RPC)的原理与要考虑的问题
远程过程调用 - RPC(remote process call ) consumer-----&amp;gt;rpc----&amp;gt;provider 一. 相关概念: 1.本地函数调用: 系统是单体应用时,调用接口可以直接new对象,然后调用方法即可.因为在同一个内 存,即同一个地址空间,所以通过方法栈和参数就可实现. 2.远程过程调用:在分布式系统中,每个模块功能在不同的服务器上,再想调用某个...
GDAL 2.0版本RPC校正速度测试
GDAL2.0版本的更新日志中提到了对RPC校正的优化,今天测试了一下,发现提升的速度还是蛮快的,测试的数据是一个IRS-P5的数据。单线程测试首先使用一个线程进行测试,使用下面的批处理进行运行,将OPENCL禁用,测试结果见图1.echo %time% F:\gdal1112\gdalwarp.exe -rpc -t_srs WGS84 -r cubic -wm 1024 -et 0 -wo
用JAVA动态代理实现RPC框架
先贴一段看到的对动态代理的比较不错的解释 动态代理其实就是Java.lang.reflect.Proxy类动态的根据指定的所有接口生成一个class byte,该class会继承Proxy类,并实现所有指定的接口(在参数中传入的接口数组),也就 是说,返回的对象可以转换类型为接口数组中的任何一个接口类型。然后再利用第一个参数的classloader将class byte加载进系统,最后
dubbo的RPC是什么,还有什么其他的RPC?
RPC是远程过程调用的简称,广泛应用在大规模分布式应用中,作用是有助于系统的垂直拆分,使系统更易拓展。Java中的RPC框架比较多,各有特色,广泛使用的有RMI、Hessian、Dubbo等。RPC还有一个特点就是能够跨语言。1、RMI(远程方法调用)JAVA自带的远程方法调用工具,不过有一定的局限性,毕竟是JAVA语言最开始时的设计,后来很多框架的原理都基于RMI,RMI的使用如下:对外接口12...
RPC之消息中间件
一、RPC **RPC(Remote Procedure Call)—远程过程调用 ,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。**RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发分布式程序就像开发本地程序一样简单。 RPC采用客户端(服务调用方)/服务器端(服务...
RPC 框架的发展与现状
RPC(Remote Procedure Call)是一种远程调用协议,简单地说就是能使应用像调用本地方法一样的调用远程的过程或服务,可以应用在分布式服务、分布式计算、远程服务调用等许多场景。说起 RPC 大家并不陌生,业界有很多开源的优秀 RPC 框架,例如 Dubbo、Thrift、gRPC、Hprose 等等。下面先简单介绍一下 RPC 与常用远程调用方式的特点,以及一些优秀的开源 RPC
从零开始写一个RPC框架的详细步骤
http://blog.csdn.net/liu88010988/article/details/51547592 定位 所谓定位就是回答几个问题,我出于什么目的要写一个框架,我的这个框架是干什么的,有什么特性适用于什么场景,我的这个框架的用户对象是谁,他们会怎么使用,框架由谁维护将来怎么发展等等。 如果你打算写框架,那么肯定心里已经有一个初步的定位,比如它是一个缓存框架
RPC原理介绍和Thrift初探
首先了解什么叫RPC,为什么要RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。比如说,一个方法可能是这样定义的: Employee getEmployeeByName(String fullName)那么:首先,要解决通讯的问题,主要是通过在...
1.深入架构Restful对比RPC(二)之RPC
1.分布式应用,云计算以及微服务流行,其根本本质是RPC,以下就是对与RPC技术的一个总结。 2.RPC的定义: 全称是Remote  procedure Call是一种进程间的通信方式,允许程序调用另一个地址空间的过程或函数,而不用程序员编码整个远程调用的细节,表现就是,无论程序员是调用本地的还是远程的函数,本质上编写的调用代码基本相同。 3.RPC特性:  《1》概念定义:简单,便于建...
RPC中客户端动态代理如何实现的?
最近在熟悉工程中用到的RPC框架,碰到一个小问题。在引出该问题前,先简单介绍一下RPC: RPC介绍 我们从一个例子开始。 服务方接口: package com.jzh.rpc.server; public interface IRpcServer { public void work(); } 服务方实现类: package com.jzh.rpc.ser
以zookeeper为注册中心实现RPC框架
原理图 大致思路:假设服务端是一个由10台机器构成的集群节点,每台机器在启动发布服务时,都会将各自的ip地址及端口号往zookeeper中注册。之后客户端会从zookeeper中拿到所有该服务注册的节点地址,并根据负载均衡算法,选取其中一个服务进行远程调用。 核心代码-服务端 注册中心 /** * 1.zookeeper连接 * 2.注册服务 */ public class Re...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 为什么需要云计算 学习java疑惑