关于SpringCloud远程调用采用HTTP而非RPC

关于SpringCloud远程调用采用HTTP而非RPC。

1. 首先SpringCloud开启Web服务依赖于内部封装的Tomcat容器,而今信息飞速发展,适应大流量的微服务,采用Tomcat处理HTTP请求,开发者编写Json作为资源传输,服务器做出相应的响应,可以更加的灵活处理业务数据,而HTTP协议是跨平台的,符合微服务B/C数据交互的方式,可以的一套服务器对应移动H5、App、小程序提供服务。

2. RPC基于TCP协议,客服端与服务端需要进行三次握手完成可靠连接,第四步进行数据传输。因为TCP是数据传输层,传输协议需要服务器统一编写,进行二进制传输,依赖序列化和反序列化规则,对于大部分应用需要灵活变动数据则不适用,RPC常用于Socket连接或一些基本不变动的传输格式数据,减少数据变动带来的开发成本

建立Socket连接至少需要一对套接字,其中一个运行于客户端,称为ClientSocket ,另一个运行于服务器端,称为ServerSocket ,套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。

一个简单HTTP请求处理

在Web应用中,浏览器请求一个URL,服务器就把生成的HTML网页发送给浏览器,而浏览器和服务器之间的传输协议是HTTP,那么接下来我们看下如何用Java来实现一个简单的HTTP服务器。

 

RPC

RPC(Remote Procedure Call:远程过程调用):是一种进程间通信方式,是一种技术的思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数,本质上编写的调用代码基本相同。通俗的说法就是:比如说现在有两台服务器A和B,一个应用部署在A服务器上,另一个应用部署在B服务器上,如果A应用想要调用B应用提供的方法,由于他们不在一台机器下,也就是说它们不在一个JVM内存空间中,是无法直接调用的,需要通过网络进行调用,那这个调用过程就叫做RPC。

RPC两个核心模块:通讯,序列化。

注意:无论是何种类型的数据,最终都需要序列化转换成二进制流在网络上进行传输,数据的发送方需要将对象序列化转换为二进制流,而数据的接收方则需要把二进制流反序列化为对象。

Restful(HTTP)

Restful 指的是一组架构约束条件和原则。" 如果一个架构符合 Restful 的约束条件和原则,就称它为 Restful 架构。隐藏在 Restful 背后的理念就是使用 Web的现有特征和能力,更好地使用现有 Web 标准中的一些准则和约束。虽然 Restful 本身受 Web技术的影响很深, 但是理论上 Restful 架构风格并不是绑定在 HTTP 上,只不过目前 HTTP 是唯一与 Restful 相关的实例。 所以我们这里描述的 Restful 也是通过 HTTP 实现的 Restful。

RPCHTTP的区别


首先,两者十分相似,有请求有响应。
不同:
RPC需要满足像调用本地服务一样调用远程服务,也就是对调用过程在API层面进行封装。
Http协议没有这样的要求,因此请求、响应等细节需要我们自己去实现。

优点
RPC更加透明,对用户方便。
HTTP方式更加灵活,没有规定API和语言,跨语言,跨平台。

缺点
RPC需要在API层面进行封装,限制了开发的语言环境。

选择
速度方面:RPC速度比HTTP快,底层都是TCP,HTTP消息往往比较臃肿,但是可以采用gzip压缩。
难度方面:RPC实现有点儿复杂,HTTP相对比较简单。
灵活性方面:HTTP更灵活,不需要关系实现的细节,可以跨平台,跨语言。

未来发展方向
微服务,强调独立,自治,灵活。RPC限制较多,因此微服务框架中,一般都会采用基于HTTP的rest风格服务。
 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Spring Cloud是一个开源的分布式系统框架,用于构建和管理基于微服务架构的应用程序。RPC(远程过程调用)是一种在分布式系统中用于不同进程之间通信的技术。 在Spring Cloud中,RPC调用方式有几种可选择的方式,包括基于RestTemplate的同步调用和基于Feign的声明式调用。 1. 基于RestTemplate的同步调用:RestTemplate是Spring框架提供的用于发送 HTTP 请求的类,用于实现同步的RPC调用。通过创建RestTemplate对象,我们可以使用其提供的各种方法向特定URL发送请求,并获取响应结果。 使用RestTemplate进行RPC调用的步骤如下: - 创建一个RestTemplate对象。 - 根据需要设置RestTemplate的属性,如超时时间、拦截器等。 - 使用RestTemplate的方法发送HTTP请求并获取响应结果。 2. 基于Feign的声明式调用:Feign是Spring Cloud提供的基于RESTful风格的HTTP客户端,用于简化RPC调用过程。通过在接口上使用注解来定义HTTP请求的方式,Feign会自动帮我们生成实现类,并将接口方法转换为HTTP请求。 使用Feign进行RPC调用的步骤如下: - 在项目中添加Feign的依赖。 - 创建一个接口,使用@FeignClient注解标识服务的名称。 - 在接口中定义需要调用的方法,使用注解来配置HTTP请求的细节。 - 注入该接口的实例,即可调用服务提供者的方法。 总结来说,Spring Cloud提供了多种方式实现RPC调用,包括基于RestTemplate的同步调用和基于Feign的声明式调用。开发人员可以根据具体需求选择适合的方式来进行RPC调用,以实现分布式应用程序的各个微服务之间的通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值