• 了解一下RPC,为何诞生RPC,和HTTP有什么不同?


    了解一下RPC,为何诞生RPC,和HTTP有什么不同?

    开篇提问

    1. 什么是RPC?
    2. 为什么需要RPC,用来解决什么问题?
    3. RPC与HTTP有什么不同?
    4. 你知道几种RPC?

    认识RPC

    RPC:Remote Procedure Call,远程过程调用。是指计算机程序使过程在不同的地址空间(通常在共享网络的另一台计算机上)执行时,其编码方式就像是正常的(本地)过程调用,而无需程序员明确为远程交互编码细节。

    RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。

    RPC是进程间通信(IPC)的一种形式,因为不同的进程具有不同的地址空间:如果在同一主机上,即使物理地址空间相同,它们也具有不同的虚拟地址空间;如果它们位于不同的主机上,则物理地址空间是不同的。许多不同的(通常是不兼容的)技术已被用来实现这一概念。

    【简单理解】:两台不同计算机(程序),计算机A有一个约定协议计算机B想调用计算机A需要通过约定协议来进行通讯调用。

    RPC的诞生

    其实早在1982年左右RPC就被人用来做分布式系统的通信,最早发明『远程过程调用』这个词语的人是『布鲁斯·杰伊·尼尔森 (Bruce Jay Nelson)』大约是在1981年。

    我们所熟知的Java在1.1版本提供了Java版本的RPC框架(RMI),此时在1990年后,基本上RPC被广泛用于系统之间的调用。但是只在后端方向熟知,对于大众更多的还是接触HTTP等协议,也因此RPC更晚让大众了解认知。

    RPC与HTTP

    先讲讲HTTP

    HTTP:Hypertext Transfer Protocol即超文本传输协议。

    HTTP协议在1990年才开始作为主流协议出现;之所以被我们所熟知,是因为通常HTTP用于web端,也就是web浏览器和web服务器交互。当ajax和json在前端大行其道的时候,json也开始发挥其自身能力,简洁易用的特性让json成为前后端数据传输主流选择。HTTP协议中以Restful规范为代表,其优势很大。它可读性好,且可以得到防火墙的支持、跨语言的支持

    HTTP的缺点也很快暴露:

    1. 有用信息占比少,HTTP在OSI的第七层,包含了大量的HTTP头等信息
    2. 效率低,因为第七层的缘故,中间有很多层传递
    3. HTTP协议调用远程方法复杂,需要封装各种参数名和参数值以及加密通讯等

    所以RPC好在哪?

    1. 都是有用信息
    2. 效率高
    3. 调用简单
    4. 无需关心网络传输或者通讯问题

    HTTP和RPC其实有联系

    http也是rpc实现的一种方式。

    RPC和HTTP一句话说不同

    RPC就像地区方言,只有内部知道,双方都需要知道方言,不然没法沟通

    HTTP就是普通话,基本都能懂,也会说

    RPC一般用于什么地方?

    微服务、分布式已经成为日常的今天,服务通常都部署在不同的服务器,服务器也在不同地区,这时候就存在跨地域跨服务器调用问题,RPC即用于这样类似的情况

    RPC适用于公司内部使用,性能消耗低,传输效率高,服务治理方便,但是不建议传输较大的文本、视频等。

    篇末提问

    1. 是否让你理解HTTP和RPC的一些不同了?
    2. RPC用来干嘛了解了吗?
    3. 你有在用RPC吗?
  • 相关阅读:
    导入导出
    封装本地文件路径
    读书书单
    Spring源码阅读-BeanFactory体系结构分析
    Spring源码阅读-ApplicationContext体系结构分析
    Spring源码阅读-IoC容器解析
    Spring源码阅读环境搭建
    【spring实战第五版遇到的坑】第14章spring.cloud.config.uri和token配置项无效
    【spring实战第五版遇到的坑】4.2.3中LDAP内嵌服务器不启动的问题
    【spring实战第五版遇到的坑】3.2中配置关系映射时,表名和3.1中不一样
  • 原文地址:https://www.cnblogs.com/sinclairni/p/14277238.html
Copyright © 2020-2023  润新知