RPC 只是一种设计而已

RPC 只是一种概念、一种设计,就是为了解决 不同服务之间的调用问题, 它一般会包含有 传输协议序列化协议 这两个。

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

HTTP 和 TCP

可能现在很多对计算机网络不太熟悉的朋友已经被搞蒙了,要想真正搞懂,还需要来简单复习一下计算机网络基础知识:

我们通常谈计算机网络的五层协议的体系结构是指:应用层、传输层、网络层、数据链路层、物理层。

应用层(application-layer)的任务是通过应用进程间的交互来完成特定网络应用。HTTP 属于应用层协议,它会基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。HTTP协议工作于客户端-服务端架构为上。浏览器作为HTTP客户端通过 URL 向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求后,向客户端发送响应信息。HTTP协议建立在 TCP 协议之上。

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

RPC框架功能更齐全

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

相关阅读:

  • http://www.ruanyifeng.com/blog/2016/08/http.html (HTTP 协议入门- 阮一峰)

一个常见的错误观点

很多文章中还会提到说 HTTP 协议相较于自定义 TCP 报文协议,增加的开销在于连接的建立与断开,但是这个观点已经被否认,下面截取自知乎中一个回答,原回答地址:https://www.zhihu.com/question/41609070/answer/191965937。

首先要否认一点 HTTP 协议相较于自定义 TCP 报文协议,增加的开销在于连接的建立与断开。HTTP 协议是支持连接池复用的,也就是建立一定数量的连接不断开,并不会频繁的创建和销毁连接。二一要说的是 HTTP 也可以使用 Protobuf 这种二进制编码协议对内容进行编码,因此二者最大的区别还是在传输协议上。

既有 HTTP ,为啥用 RPC 进行服务调用?相关推荐

  1. c# 调用restful json_微服务调用为啥用RPC框架,http不更简单吗?

    背景 在一次的面试交谈中,聊到业务实现的技术架构.不管系统大小,一般都是微服务的架构,所以就产生了一个问题,为什么服务之间调用,选择用RPC,http 不也能实现服务之间的通信吗?怎么不用呢?或者 R ...

  2. linux rpc.statd服务 获取系统性能统计 简介

    大家在安装好RHEL/CentOS系统后,用netstat查看及端口情况,可能会发现有个rpc.statd服务,是不是不知道是哪个服务启动的啊?如何关掉RHEL/CentOS的rpc.statd服务呢 ...

  3. rpc wmi 服务不可用_golang 基础(5) RPC

    ![golang_real.jpg](https://upload-images.jianshu.io/upload_images/8207483-659e64f6f71b221d.jpg?image ...

  4. lzg_ad:XPE中的Remote Procedure Call (RPC) Locator服务无法启动

    XPE下的控制面板->服务下的Remote Procedure Call (RPC) Locator服务启动不了,提示缺少文件,不知道缺少什么文件,要启动这个服务需要添加什么组建? 该问题的原因 ...

  5. hyperf搭建与使用RPC微服务

    文章目录 前言 一.微服务的场景演化 1.一开始 2.随着业务发展... 3.改造... 二.微服务与单体架构风格之间的区别 三.关于微服务存在的一些问题 四.RPC的那些事 1.概念 2.RPC或者 ...

  6. 利用java实现简单的RPC服务调用

    一.前言 RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输 ...

  7. 不满足于RPC,详解Dubbo的服务调用链路

    系列文章目录 [收藏向]从用法到源码,一篇文章让你精通Dubbo的SPI机制 面试Dubbo ,却问我和Springcloud有什么区别? 超简单,手把手教你搭建Dubbo工程(内附源码) Dubbo ...

  8. dubbo consumer 端口_基于Springboot+Dubbo+Nacos 注解方式实现微服务调用

    今天跟大家分享基于Springboot+Dubbo+Nacos 注解方式实现微服务调用的知识. 1 项目结构 |-- spring-boot-dubbo-demo (父级工程) |-- spring- ...

  9. 你必须懂也可以懂的微服务系列三:服务调用

    在了解服务注册与反注册后,就该到服务调用环节了. 进行服务调用之前,需要组装请求头.请求体,构建客户端对象,通过服务提供方url地址调用远程服务.此方式虽然可以实现远程调用,但是需要使用者了解底层调用 ...

最新文章

  1. heroku_了解如何使用Heroku部署全栈Web应用程序
  2. Kendo UI常用示例汇总(九)
  3. 数据返回nan_NumPy 的 nan 如何理解?
  4. 中心城镇问题(长链剖分优化树形dp)
  5. Android studio gradle 无法获取 pom文件
  6. python怎么判断输入的是不是数字_如何在PYTHON里判断字符串是否为数字
  7. 关于Spring.net+NHibernate的事务控制
  8. json与对象互转:json转实体类、实体类转json、json转List、List转json
  9. 小程序和H5真的有孰优孰劣吗?详解两者的适用场景
  10. 何通过ArcCatalog本地发布地图服务
  11. 如何删除Windows我的电脑地址栏搜索记录
  12. C语言歌手评分系统(入门水平)
  13. 坐标转换中的七参数详谈
  14. php怎么使用sendcloud,SendCloud的介绍以及一些使用的注意事项
  15. Unity 3D模型展示之拖拽
  16. 计算机音乐数字乐谱梦中的婚礼,乐谱梦中的婚礼代码是什么-天谕手游梦中的婚礼歌曲最新乐谱代码分享 - QT软件园...
  17. BLE学习(4):蓝牙地址类型和设备的隐私
  18. Win10家庭版 傻瓜安装datahub的备忘一则
  19. SLAB SLUB
  20. MATLAB输出格式控制 %d,%f,%c,%s的用法

热门文章

  1. sparksql自定义函数
  2. 【java机器学习】词向量在贝叶斯中的概念
  3. 加法变乘法(蓝桥杯)
  4. 函数调用过程简单分析
  5. Phoenix 关联映射 Hbase表 获取不到数据,upsert hbase 列名为16进制字符
  6. Flink 1.11 与 Hive 批流一体数仓实践
  7. 从零入门Serverless|一文搞懂函数计算及其工作原理
  8. DataWorks 如何撑起阿里99%的数据开发?
  9. 微服务治理实践:如何对单点异常进行自动摘除
  10. 为了帮助卖家成交,闲鱼工程师做了些什么?