远程过程调用协议

Feign原理 (图解)

社会主义新天地 提交于 2019-12-06 06:35:27
疯狂创客圈 Java 高并发【 亿级流量聊天室实战】实战系列 【 博客园总入口 】 疯狂创客圈 正在 进行分布式和高并发基础原理 的研习,进行已经发布一些基础性的文章: 一、 版本1 :springcloud + zookeeper 秒杀 以及有关Springcloud 几篇 核心、重要的文章 : 一、 Springcloud 配置, 史上最全 一文全懂 二、 Feign Ribbon Hystrix 三者关系 , 史上最全 深度解析 三、 SpringCloud gateway 详解 , 史上最全 四、 常识纠错:Feign 默认不用 短连接 1SpringCloud 中 Feign 核心原理 如果不了解 SpringCloud 中 Feign 核心原理,不会真正的了解 SpringCloud 的性能优化和配置优化,也就不可能做到真正掌握 SpringCloud。 本章从Feign 远程调用的重要组件开始,图文并茂的介绍 Feigh 远程调用的执行流程、Feign 本地 JDK Proxy 实例的创建流程,彻底的为大家解读 SpringCloud 的核心知识。使得广大的工程师不光做到知其然,更能知其所以然。 1.1 简介:Feign远程调用的基本流程 Feign远程调用,核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的请求形式

RPC

一个人想着一个人 提交于 2019-12-06 00:13:32
RPC(Remote Procedure Call):远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想RPC 是一种技术思想而非一种规范或协议,常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Google gRPC、Spring Boot/Spring Cloud。 远程通信协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)。 通信框架:MINA 和 Netty。 目前流行的开源 RPC 框架还是比较多的,有阿里巴巴的 Dubbo、Facebook 的 Thrift、Google 的 gRPC、Twitter 的 Finagle 等。 下面重点介绍三种: gRPC:是 Google 公布的开源软件,基于最新的 HTTP 2.0 协议,并支持常见的众多编程语言。RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。 Thrift:是 Facebook 的开源 RPC 框架,主要是一个跨语言的服务开发框架。 用户只要在其之上进行二次开发就行,应用对于底层的 RPC 通讯等都是透明的。不过这个对于用户来说需要学习特定领域语言这个特性,还是有一定成本的。 Dubbo:是阿里集团开源的一个极为出名的 RPC 框架,在很多互联网公司和企业应用中广泛使用

RPC协议

妖精的绣舞 提交于 2019-12-05 22:06:32
什么是 RPC? 初步印象   RPC的语义是远程过程调用,在一般的印象中,就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务。而具体的实现是通过调用方和服务方各自的 stub 基于TCP长连接进行数据交互达成。   上面的解释似云里雾里,仅仅了解到这种程度是远远不够的,还需要更进一步,以相对 底层 和 抽象 的视角来理解RPC。 三个特点   广义上来讲,所有本应用程序外的调用都可以归类为RPC,不管是分布式服务,第三方服务的HTTP接口,还是读写Redis的一次请求。从抽象的角度来讲,它们都一样是RPC,由于不在本地执行,都有三个特点:   需要事先约定调用的语义(接口语法)   需要网络传输   需要约定网络传输中的内容格式   以一次Redis调用为例,执行 redis.set("rpc", 1) 这个调用,其中:   set 及其参数 ("rpc", 1) ,就是对 调用语义 的约定,由redis的API给出   RedisServer会监听一个服务端口,通过TCP传输内容,用异步事件驱动实现高并发   底层库会约定数据如何进行编解码,如何标识命令和参数,如何表示结果,如何表示数据的结尾等等   这三个特点都是因为 调用不在本地 而不得不衍生出来的问题,也因此决定了RPC的形态。所有的RPC解决方案都是在解决这三个问题

深入浅出 RPC

亡梦爱人 提交于 2019-12-05 21:42:08
《深入篇》我们主要围绕 RPC 的功能目标和实现考量去展开,一个基本的 RPC 框架应该提供什么功能,满足什么要求以及如何去实现它? RPC 功能目标 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。 为实现该目标,RPC 框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用,在前文《浅出篇》中给出了一种实现结构,基于 stub 的结构来实现。下面我们将具体细化 stub 结构的实现。 RPC 调用分类 RPC 调用分以下两种: 1. 同步调用 客户方等待调用执行完成并返回结果。 2. 异步调用 客户方调用后不用等待执行结果返回,但依然可以通过回调通知等方式获取返回结果。 若客户方不关心调用返回结果,则变成单向异步调用,单向调用不用返回结果。 异步和同步的区分在于是否等待服务端执行完成并返回结果。 RPC 结构拆解 《浅出篇》给出了一个比较粗粒度的 RPC 实现概念结构,这里我们进一步细化它应该由哪些组件构成,如下图所示。 RPC 服务方通过 RpcServer 去导出(export)远程接口方法,而客户方通过 RpcClient 去引入(import)远程接口方法。客户方像调用本地方法一样去调用远程接口方法,RPC 框架提供接口的代理实现,实际的调用将委托给代理 RpcProxy

Hessian通信协议学习

寵の児 提交于 2019-12-05 19:08:11
###什么是Hessian   Hessian 是由 caucho 提供的一种开源的远程通讯协议。 采用二进制 RPC 协议,基于 HTTP 传输,服务器端不用另开放防火墙端口。 协议的规范是 公开 的,可以用于 任意 语言。 采用客户机/服务器模式(C/S)。 请求程序就是一个客户机,而服务提供程序就是一个服务器。 客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。 在服务器端,进程保持睡眠状态直到调用信息的到达为止。 当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息, 获得进程结果,然后调用执行继续进行。 ###Hessian协议工作流程图   ***客户端程序请求服务端函数 ***   1.调用客户端句柄,执行传送参数。   2.调用本地系统内核发送网络消息。   3.消息传送到远程主机。   4.服务器句柄得到消息并取得参数。   5.执行远程过程。 ***服务端函数返回结果给客户端 ***   1.执行的过程将结果返回服务器句柄。   2.服务器句柄返回结果,调用远程系统内核。   3.消息传回本地主机。   4.客户句柄由内核接收消息。   5.客户接收句柄返回的数据。 ###Hessian的优、缺点 优点   1.目前的WEB端基本上都支持hessian

RPC 远程过程调用协议

主宰稳场 提交于 2019-12-05 00:40:34
远程过程调用协议 编辑 同义词 RPC 一般指远程过程调用协议 RPC(Remote Procedure Call Protocol)—— 远程过程调用 协议,它是一种通过 网络 从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 RPC协议 假定某些 传输协议 的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI 网络通信 模型中,RPC跨越了 传输层 和 应用层 。RPC使得开发包括网络 分布式 多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复 信息 ,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 有多种 RPC模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算 环境 (DCE)。 中文名 远程过程调用协议 外文名 Remote Procedure Call Protocol 核心思想 信息传输协议 研究方向 分布式

简单了解webservice

喜欢而已 提交于 2019-12-04 19:10:12
webservice是什么 WebService是一种跨编程语言、跨操作系统平台的远程调用技术。 远程调用技术:远程调用是指一台设备上的程序A可以调用另一台设备上的方法B。 跨编程语言:是指服务端、客户端程序的编程语言可以不同。 跨操作系统平台:是指服务端、客户端可在不同的操作系统上运行。 从表面上看,WebService是指一个应用程序向外界暴露了一个能通过Web调用的API接口,我们把调用这个WebService的应用程序称作客户端,把提供这个WebService的应用程序称作服务端。 从深层上看,WebService是建立可互操作的分布式应用程序的新平台,是一个平台,是一套标准。它定义了应用程序如何通过Web实现互操作性,通过WebService标准对服务进行查询和访问。 何为远程调用   远程调用的过程是这样的 先从客户端和服务端的角度考虑,客户端向服务端发送服务请求,服务端接收请求并处理,再向客户端回复请求,客户端接收回复。 从请求本身的角度考虑,请求和回复各自表现为一组数据,数据具有某种表示形式(XML)和类型标准(XSD),数据通过传输协议(HTTP)进行网络传输。 客户端进行服务的远程调用前,需要知道服务的地址与服务有什么方法可以调用。 因此,WebService服务端通过一个文件(WSDL)来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受

RPC(remote procedure call)

旧街凉风 提交于 2019-12-04 12:30:14
分布式系统中, 服务之间的相互调用更加方便, 像调用本地服务一样.(无感远程调用) 实现RPC模型的函数和模块有很多, 只要通过该模型来实现远程调用, 都可称呼为RPC Python中的RPC模型包有gRPC,xmlrpc等 但是, 需要明确的一点, RPC只是实现远程调用的一种思维, 一种模型. 许许多多的模块都会使用RPC思想模型进行构建. RPC的调用步骤为: 发送 另端服务 user调用 ==>> client-stub打包参数 ==>> RPCRun发送... RPCRun接受 ==>> Server-stub 解包 ==>> Server进行调用,处理结果. 接受顺序相反: 客户端 Server得到结果,发送 ==>> ServerStub 打包返回值 ==>> RPCRun发送 ... RPCRun接受 ==>> ClientStub解包 ==>> 传递给User RCP模块的工作内容: 除了中间的RPC部分, 其他和本地调用基本一样: 调用, 然后返回结果. 封装在RPC的服务调用部分工作内容: 在调用别的服务器的时候需要. 打包相关参数, 然后通过RPC发送请求并等待返回. 其他服务的RPC接收到请求,解包运行 打包返回. 每个服务要做的就是, 接受RPC解包分析请求, 然后调用服务返回结果, 最后返回内容前依旧打包. 打包解包: 在流程中,

thinkphp rpc

眉间皱痕 提交于 2019-12-04 08:50:08
RPC (Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。 ThinkPHP支持广泛的RPC协议,包括PHPRPC、HPRose、JsonRPC以及Yar。 PHPRPC支持 PHPRPC 是一个轻型的、安全的、跨网际的、跨语言的、跨平台的、跨环境的、跨域的、支持复杂对象传输的、支持引用参数传递的、支持内容输出重定向的、支持分级错误处理的、支持会话的、面向服务的高性能远程过程调用协议。目前该协议的最新版本为 3.0。详细的资料可以参考phprpc官网( http://www.phprpc.org/zh_CN/)

WebService教程详解(一)

扶醉桌前 提交于 2019-12-03 20:07:50
Web Services 可以将应用程序转换为网络应用程序。 通过使用 Web Services,您的应用程序可以向全世界发布信息,或提供某项功能。 Web Services 可以被其他应用程序使用。 通过 Web Services,您的会计部门的 Win 2k 服务器可以与 IT 供应商的 UNIX 服务器相连接。 基本的 Web Services 平台是 XML+HTTP。 Web services 使用 XML 来编解码数据,并使用 SOAP 来传输数据。 什么是webService WebService,顾名思义就是基于Web的服务。它使用Web(HTTP)方式,接收和响应外部系统的某种请求。从而实现远程调用. 1:从WebService的工作模式上理解的话,它跟普通的Web程序(比如ASP、JSP等)并没有本质的区别,都是基于HTTP传输协议的程序。 2:WebService所使用的数据均是基于XML格式的。目前标准的WebService在数据格式上主要采用SOAP协议。SOAP协议实际上就是一种基于XML编码规范的文本协议。 webService的技术支持 Web Service平台需要一套协议来实现分布式应用程序的创建。任何平台都有它的数据表示方法和类型系统。要实现互操作性,Web Service平台必须提供一套标准的类型系统,用于沟通不同平台