服务之间调用为什么不用HTTP而用RPC

RPC解决了什么问题?

主要解决了让分布式或者微服务系统中不同服务之间的调用向本地调用一样简单。

常见的RPC框架总结?

RMI(JDK自带):JDK自带的RPC,很多局限性,不推荐使用。

Dubbo:是阿里巴巴开源的一个高性能优秀服务框架,使得应用可通过高性能的rpc实现服务的输入与输出,可以和spring框架无缝集成。目前dubbo是springCloud alibaba的官方组件。

Thrift: Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。

gRPC :gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。

Hessian: Hessian是一个轻量级的remoting on http工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

既然有HTTP,为啥用RPC进行服务调用?

rpc只是一种设计而已

RPC

RPC只是一种概念,一种设计,为了解决不同服务之间的调用问题,他一般会包括传输协议序列化协议

但是,HTTP是一种协议,RPC框架可以使用HTTP协议作为传输协议或者直接使用TCP作为传输协议,使用不同的协议一般也是为了适应不同的场景。

HTTP和TCP

我们先复习一下计算机网络基础

我们通常谈的计算网络五层协议:应用层、传输层、网络层、数据链路层、物理层。

应用层任务时通过应用进程间的交互来完成特定网络交互,HTTP属于应用层协议,基于TCP/IP通信协议来传递数据。HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。WEB服务器根据接收到的请求后,向客户端发送响应信息。HTTP协议建立在TCP协议之上。

传输层的主要任务就是负责向两台主机进程之间的通信提供通用的数据传输服务,TCP是传输层协议,主要解决数据如何在网路中传输。相比UDP,TCP面向连接,可靠的数据传输服务。


RPC框架功能更齐全

成熟的 RPC框架还提供好了“服务自动注册与发现”、"智能负载均衡"、“可视化的服务治理和运维”、“运行期流量调度”等等功能,这些也算是选择 RPC 进行服务注册和发现的一方面原因吧

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值