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

news/2024/11/17 10:47:44/文章来源:https://www.cnblogs.com/yoyoma0355/p/18294379

参考链接: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://www.hqwc.cn/news/741804.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

易优CMS模板标签arcview单条文档输出单页模型栏目的详细内容

[基础用法]标签:arcview描述:获取单条文档数据用法: {eyou:arcview aid=文档ID} <a href="{$field.arcurl}">{$field.title}</a> {/eyou:arcview} 属性: aid= 指定文档ID,如果没有指定则获取当前文档内容页的文档ID id= 可以任意指定循环里的变量…

[二、状态管理]2管理组件拥有的状态(2)@Prop装饰器:父子单向同步

@Prop装饰的变量可以和父组件建立单向的同步关系。@Prop装饰的变量是可变的,但是变化不会同步回其父组件。说明从API version 9开始,该装饰器支持在ArkTS卡片中使用。概述 @Prop装饰的变量和父组件建立单向的同步关系:@Prop变量允许在本地修改,但修改后的变化不会同步回父组…

SQL漏洞--简介及数字型注入

数据库注入漏洞主要指开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄露的一种漏洞。 一、数字型注入: 通过pikachu搭建的靶场进行SQL数字型注入测试:一、 数字…

易优eyoucms标签ad报错:该广告ID(5)不存在

标签ad报错:该广告ID(5)不存在 错误原因: 把广告管理里面的广告删除导致 解决方法: 重新添加广告 在修改模板里面的广告位id本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18294555

12bit 两通道5.2G或单通道10.4G pcie采集卡

12bit 两通道5.2G或单通道10.4G pcie采集卡是一款同时支持交流耦合与双极性宽带信号输入的高精度高速数据采集卡,它提供12位双通道5.2GS/s或单通道10.4GS, A/D采样变换,全功率模拟带宽(-3 dB)8GHz。板载FPGA具备实时信号处理能力,板载DDR4内存容量达8GB,可以进行大数据量…

易优CMS网站导入指定模板文件

基础用法] 标签:include描述:导入指定模板文件 用法:{eyou:include file="header.htm" /}属性: file= 指定模板文件路径 涉及标字段: 无 示例:在首页模板index.htm引入公共头部模板文件,可以使用include标签调用{eyou:include file="header.htm" /}…

你真的懂多线程吗?多线程 并行处理 CPU 操作系统

了解多线程、并行处理首先需要了解什么CPU、CPU核数、操作系统CPU物理数 即电脑拥有的物理CPU数量,普通电脑一般只有一个CPU插槽,也就是只有一个物理CPU。我们日常说的CPU,就是指封装好的一个物理CPU,作为商品进行售卖。但在编程讨论时,某些情况下,我们说的CPU含义又是指…

易优cms网站后台登录不上

请仔细检查以下问题: 1、磁盘空间大小是否100%; 2、站点目录权限是否为755; 3、站点所有目录的权限,禁止用root:root; 4、如还没解决,请联系技术支持本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18294466

THM-Skynet-Writeup

通过学习相关知识点:攻破Linux目标机器并完成提权操作。部署并渗透目标机器 step1 使用Nmap扫描端口 nmap -p- -sC -sV -T4 -v 10.10.164.81139/445端口开放,可知目标机开启了SMB服务枚举SMB共享 smbclient -L \\10.10.164.81获取到一些可能能访问的SMB服务账号:anonymous、…

CAD可以转成PDF吗?有哪些转换的方法?

在CAD制图过程中,我们可能会遇到这样的问题:完成CAD制图后,为了方便阅览,经常会直接输出成PDF格式,输出完成后,打开一看,发现和原来的图纸差距很大,输出PDF文字显示不全,遇到这种情况该如何处理呢?给大家分享2个CAD转PDF的好用的转换方法。 方法一:使用转换工具 ilo…

易优cms安装数据库提示写入表ey_archives记录失败,请刷新重试

清空数据库,重新试试!不行清空后可以切换下其它版本的数据库。 实在因为空间环境问题,可以直接导入数据库方法安装,然后改下网站配置文件就可以了。补充:有一种特殊情况是防火墙拦截了, 还有一种可能是空间满了, 需要挨个排查一下。本文来自博客园,作者:黄文Rex,转载…

易优cms网站友情链接,设置新窗口打开无效

<a href="{$field.url}" {$field.target} target="_blank" title="{$field.title}">{$field.title}</a>在模板里面 友情链接里面得A标签里面添加{$field.target} 标签 即可 {eyou:flink type=text row=100 titlelen=20} <a href=…