首页 > 其他分享 >RPC api与Rest api的区别 微服务 正反向代理

RPC api与Rest api的区别 微服务 正反向代理

时间:2024-07-10 17:19:08浏览次数:13  
标签:HTTP 请求 代理 Rest RPC api http 客户端

参考链接:https://blog.csdn.net/weixin_43871785/article/details/129922143

 

 

RPC:本地化

REST:国际化

HTTP 与 RPC 的关系就好比国际化与地方化的关系(可以认为标准的国际拳击手和随意的自由拳击手)。

要进行跨企业服务调用时,往往都是通过 HTTP API, 虽然效率不高,但是通用,没有太多沟通的学习成本。但是在企业内部还是 RPC 更加高效,因为http学习的成本实在是太高了。

注:PRC和PRC协议 不是同一个意思 ,PRC是一个过程,而实现PRC的协议有很多,可以是tcp或http协议。而HTTP也类似PRC,但他是基于HTTP协议。

N.2 RPC-Api与HTTP-Api
————————————————————————

 

————————————————————————

两种风格的API区别,总结一下其实非常简单:

(1)RPC-api面向过程,只发送 GET 和 POST 请求。GET用来查询信息,其他情况下一律用POST。请求参数是"动词",直接描述动作本身。当然RPC不仅仅是一种API设计风格,它的概念比这要广得多,就不一介绍。

(2)RESTful-api面向资源(http使用的是RESTful,需要注意的是http协议的框架就是rest框架。

。),使用 POST、DELETE、PUT、GET 请求,分别对应增、删、改、查操作。请求参数是"名词",这个名词就是“增删改查”想要操作的对象。
————————————————

 

N.3 RPC与HTTP的不同点
在HTTP和RPC的选择上,可能有些人是迷惑的,主要是因为,有些RPC框架配置复杂,如果走HTTP也能完成同样的功能,那么为什么要选择RPC,而不是更容易上手的HTTP来实现了。

本文主要来阐述HTTP和RPC的异同,让大家更容易根据自己的实际情况选择更适合的方案。

1)传输协议

RPC,可以基于TCP协议,也可以基于HTTP协议

HTTP,基于HTTP协议(在TCP协议之上进行封装)

2)传输效率

RPC,使用自定义的TCP协议,可以让请求报文体积更小,或者使用HTTP2协议,也可以很好的减少报文的体积,提高传输效率HTTP,如果是基于HTTP1.1的协议,请求中会包含很多无用的内容,如果是基于HTTP2.0,那么简单的封装以下是可以将http作为一个RPC来使用的,这时标准RPC框架更多的是服务治理 。

3)性能消耗,主要在于序列化和反序列化的耗时

RPC,可以基于thrift实现高效的二进制传输

HTTP,大部分是通过json来实现的,字节大小和序列化耗时都比thrift要更消耗性能

当然 还有别的区别 这里 就不一样说明。

4)总结:

RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便。

HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

5)既然两种方式都可以实现远程调用,我们该如何选择呢?

(1)速度来看,RPC要比http更快,虽然底层都是TCP,但是http协议的信息往往比较臃肿,不过可以采用gzip压缩。

(2)难度来看,RPC实现较为复杂,http相对比较简单

(3)灵活性来看,http更胜一筹,因为它不关心实现细节,跨平台、跨语言。

因此,两者都有不同的使用场景:

(4)如果对效率要求更高,并且开发过程使用统一的技术栈,那么用RPC还是不错的。

(5)如果需要更加灵活,跨语言、跨平台,显然http更合适微服务,更加强调的是独立、自治、灵活。而RPC方式的限制较多,因此微服务框架中,一般都会采用基于Http的Rest风格服务 。

http就相当于是普通话,rpc相当于方言。

 

 

 

--------------------微服务---------------------

 

 

--------------------正反向代理--------------

正向代理

  • 定义:正向代理(Forward Proxy)是位于客户端和目标服务器之间的代理服务器,它代表客户端向目标服务器发送请求。客户端需要配置代理服务的地址、端口、账号密码等信息才能使用正向代理。
  • 作用:正向代理可以隐藏真实的客户端,使得服务端无法得知真实的客户端信息,只能得知代理客户端的信息。它还可以用于访问被限制的内容、过滤和加速请求等。

反向代理

  • 定义:反向代理(Reverse Proxy)是位于目标服务器和客户端之间的代理服务器,它代表目标服务器向客户端提供服务。当客户端发送请求时,请求会先经过反向代理服务器,然后由代理服务器将请求转发给目标服务器,并将目标服务器返回的响应返回给客户端。
  • 作用:反向代理的主要作用是隐藏目标服务器的真实身份和位置,提供负载均衡、缓存静态资源、提供安全性和高可用性等。它可以将请求分发给多个目标服务器,实现负载均衡,提高系统的性能和可扩展性。同时,反向代理还可以作为防火墙,过滤恶意请求,保护目标服务器的安全。

客户端与反向代理的关系

  • 客户端并不直接“拥有”或“使用”反向代理,而是通过网络请求间接地与反向代理交互。
  • 反向代理是从服务端或网络架构的角度来配置的,用于优化服务提供、增强安全性和实现负载均衡等目的。
  • 客户端在发送请求时,通常不知道或不需要知道后端是否使用了反向代理,它们只是将请求发送到它们认为的服务地址(这个地址可能是反向代理的地址)。

综上所述,没有“客户端的反向代理”这一说法,因为反向代理是服务端或网络架构中的一个组件,用于处理来自客户端的请求并将其转发给后端服务器。客户端在请求过程中并不直接涉及到反向代理的配置或使用。

 

标签:HTTP,请求,代理,Rest,RPC,api,http,客户端
From: https://www.cnblogs.com/yoyoma0355/p/18294379

相关文章

  • 从IBM ESB升级到RestCloud iPaaS的全面指南
    前言在当今快速变化的商业环境中,企业对集成解决方案的需求越来越高。传统的企业服务总线(ESB)虽然在过去提供了强大的集成能力,但随着技术的发展和业务需求的变化,越来越多的企业选择迁移到集成平台即服务(iPaaS)。RestCloud iPaaS,作为一款领先的iPaaS解决方案,提供了全面的功能和灵活......
  • Java-常用API
    1-JavaAPI:指的就是JDK中提供的各种功能的Java类。2-Scanner基本使用Scanner:一个简单的文本扫描程序,可以获取基本类型数据和字符串数据构造方法:Scanner(InputStreamsource):创建Scanner对象System.in:对应的是InputStream类型,可以表示键盘输入Scannersc=n......
  • .net 6及以上版本 WebAPI 初始化项目介绍
    从ZR.Admin里面摘出一部分作为参考 1.Program.cs publicclassProgram{publicstaticvoidMain(string[]args){varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontainer.......
  • api文字识别智能录入、身份证识别、接口识别​
    OCR技术和由此带来的文字识别自动化程度不断增加,不少人预计该技术将对相当一部分的行业、工作产生影响,其中有一部分是颠覆性的。比如文字录入的工作,现在不少企业为自己的系统、产品集成了OCR技术核心,不仅能够减少人工录入的压力,正确率及录入速度等都得到了大幅的提升。可......
  • 面试官:Dubbo一次RPC调用会经过哪些环节?
    大家好,我是三友~~今天继续探秘系列,扒一扒一次RPC请求在Dubbo中经历的核心流程。本文是基于Dubbo3.x版本进行讲解一个简单的Demo这里还是老样子,为了保证文章的完整性和连贯性,方便那些没有使用过的小伙伴更加容易接受文章的内容,这里快速讲一讲Dubbo一个简单的Demo如果你已经......
  • 如何在 Rust 中安全地处理 Openresty中的字符串?
    HelloWorldRust以简洁高效安全而闻名,那么我们怎么集成到C的项目中呢。尤其是字符串数据结构,该如何正确地交互。借此机会整理一下工作中遇到的难题,希望可以帮助大家走出坑。我们先回顾一下C中字符串的结构。在C语言中,字符是一个连续的内存地址空间以\0结尾。C语言的......
  • .Net Core WebApi项目 Development模式下报错 System.InvalidOperationException 解决
    .NetCoreWebApi项目Development模式下报错System.InvalidOperationException:“Cannotresolvescopedservice'Microsoft.Extensions.Options.IOptionsSnapshot`1[Infrastructure.OptionsSetting]'fromrootprovider.” 但是在Production模式下,运行正常因为未设置的......
  • ABAP中生产会计凭证的BAPI函数的使用方法
    在ABAP中,用于生产会计凭证的BAPI(BusinessApplicationProgrammingInterface)主要有两个:BAPI_ACC_GL_POSTING_POST和BAPI_ACC_DOCUMENT_POST。这些BAPI允许外部系统或ABAP程序向SAP系统发送请求,以创建或修改会计凭证。一、BAPI介绍BAPI_ACC_GL_POSTING_POST:主要用于处理......
  • ABAP中创建销售订单的BAPI函数的使用方法
    在ABAP中,用于创建销售订单的BAPI是BAPI_SALESORDER_CREATEFROMDAT2。这个BAPI允许你根据提供的数据创建一个新的销售订单。要使用BAPI_SALESORDER_CREATEFROMDAT2BAPI创建销售订单,你需要按照以下步骤操作:准备输入数据:订单头信息(BAPIVBRK结构)。订单行项目(BAPIVBRP表)。订......
  • Unity入门之重要组件和API(4) : Input
    前言Input类主要处理用户输入设备相关操作;输入设备包括鼠标、键盘、触屏、手柄、陀螺仪(重力感应)。1.鼠标1.1鼠标在屏幕的位置print(Input.mousePosition);1.2检测鼠标输入0-左键1-右键2-中键if(Input.GetMouseButtonDown(0)){ print("鼠标按下");}if(Input......