RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...

发布时间:2022-07-01 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

文章目录

  • RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...
    • 不可对比性
      • RPC
      • HTTP
      • 其他通信协议
      • 通信协议实质
    • Q&A
    • 附录

RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...

RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架…

之前有小朋友问 RPC 请求和 HTTP 请求有什么区别?

公司里服务之间使用 RPC 、对外服务的接口用 HTTP、跨语言服务交互的时候用基于 HTTP 的 RPC … 很多场景使用不同的方式,这里总的来简单梳理一下,更深一点的等时间充裕了再码文!

不可对比性

RPC 和 HTTP 从本质上根本没有可比性。

  • HTTP 超文本传输协议,是因特网上应用最为广泛的一种网络传输协议。
  • RPC 服务进程通信方式中同步过程调用的一种实现方式统称。

RPC

在应用服务中,为了提高可用性、保障应用价值快速持续的交付,往往会把应用拆分为多个服务,多个服务协同对外提供业务功能支撑。

服务之间相互通信方式统称为 IPC [inter-PRocess communication]。IPC 有两种实现方式,分别是 同步过程调用、异步消息调用。在同步过程调用的具体实现中,有一种实现方式为 RPC 通信方式,远程过程调用[Remote Procedure Call]。RPC 这种方式,可以让两个不同服务的子进程进行交互,就像是调用本地方法一样。

RPC 交互一般为应用内部服务通信,通信双方信息了解,可根据服务业务场景自定义通信协议。目前业界的 RPC 交互框架都分别支持各自定义的协议类型及数据格式。 如,阿里的 Dubbo 框架 支持 thrift、webservice、hessian、dubbo…;百度的 Ral 框架 支持 msgpack、ral、ral2、http…;京东的 JSF 框架 支持 jsf…;微博的 Motan 框架支持 motan、motan2、http…

注意,这里的通信协议中包含了 HTTP 协议。

HTTP

在应用服务对外交互时,通常都是以 HTTP 协议开头,就像我们日常访问的网页、APP、浏览器…等都是通过 URI 定位资路径; 在 原生应用架构中,提倡使用 已发布和版本化的API通信,这些API通常是具有 JSON 序列化的 HTTP REST 风格;……

归结出来,HTTP 更具有通用性,更灵活。其屏蔽了底层服务技实现,而且 REST 风格开发成本低…

其他通信协议

有了 HTTP 协议,为什么还有其他协议呢?像 msgpack、dubbo…

因为 HTTP 臃肿,效率并非最优。

在网络模型中,RPC 你可以理解为 会话层机制。而 HTTP 则属于最上层应用层,通过 三次握手、四次挥手建立连接;协议约束从网络层,每层都会对数据流增加 Header 信息;在传输层会对数据流补充系列校验等信息……

在一些服务内部场景中,HTTP 显得很臃肿,在资源占用、传输效率、数据有效率…等方面略输一筹;故各个团队根据不同的使用场景,开发设计自定义的通信协议,使服务通信效率更高、更快,各种通信协议就诞生了。

通信协议实质

在业界的各种服务治理 RPC 框架中,除了协议本身数据段的约束不同,其内在更代表了不同的通信方式:长短连接、连接个数、序列化方式…

协议名称序列化连接使用场景
dubboHessian 二进制序列化单连接;长连接;TCP;NIO异步传输传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
rmiJava标准二进制序列化多连接;短连接;TCP;同步传输传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件

Q&A

1、如何设计一款 RPC 框架呢?

RPCHTTP 还有很多带挖掘的点,感兴趣的可私信或关注后续博文

附录

忙碌和早起

脚本宝典总结

以上是脚本宝典为你收集整理的RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...全部内容,希望文章能够帮你解决RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架...所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。