首页 > 其他分享 >RPC接口与Https接口

RPC接口与Https接口

时间:2023-06-24 15:55:48浏览次数:34  
标签:协议 调用 HTTP 接口 RPC Https http

RPC(remote procedure call)远程过程调用;Http:超文本传输协议。RPC是一种方法,http是一种协议。RPC服务主体要工作在tcp协议上,而http服务工作在http协议上,由于http协议基于tcp协议,所以rpc服务比http更轻量,效率更高

RPC远程过程调用

RPC效率优势明显,在实际开发中,客户端和服务端在技术方案中约定客户端的调用参数和服务端的返回参数之后就可以各自开发,任何客户端只要按照接口定义的规范发送入参都可以调用该RPC服务,服务端也能按接口定义的规范出参返回计算结果。这样既实现了客户端和服务端之间的解耦,也使得RPC接口可以在多个项目中重复利用

流行rpc框架

dubbo:阿里开源的rpc框架,协议和序列化都可以插拔

gRPC:是google开源项目,基于http2.0协议,gRPC底层使用netty框架

Thrift:是facebook开源项目

Http服务

通过http url调用的服务。

HTTP服务开发即开发ERESTful风格的服务接口。在接口不多、系统之间交互较少的情况下,是一种信息传递的常用通信手段。HTTP接口的优点是简单、直接、开发方便,利用现成的HTTP协议进行传输。在服务开发的时候,约定一个接口文档,严格定义输入和输出,明确每一个接口的请求方法和需要的请求参数及其格式。

在内部子系统较多、接口较多的情况下,RPC框架的好处就凸显出现了,首先是长连接,不必每次通信都要像HTTP那样三次握手,减少了网络开销;其次是RPC框架一般都有注册中心,有丰富的监控发布方法;RPC接口的发布、下线、动态扩展等对调用方是无感知的、统一化的操作。

 

RPC接口和HTTP接口的区别与联系

RPC接口即相当于调用本地接口一样调用远程服务的接口;HTTP接口是基于http协议的post接口和get接口(等等,2.0版本协议子支持更多)。

传输协议

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

传输效率

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

性能消耗

RPC:可以基于thrift实现高效的二进制传输
HTTP:大部分是通过json实现的,字节大小和序列化耗时都比thrift要更消耗性能

负载均衡

RPC:基本都自带了负载均衡策略
HTTP:需要配置Nginx,HAProxy实现

服务治理(下游服务新增,重启,下线时如何不影响上游调用者)

RPC:能做到自动通知,不影响上游
HTTP:需要事先通知,修改Nginx/HAProxy配置
RPC主要用于公司内部服务调用,性能消耗低,传输效率高,服务治理方便。HTTP主要用于对外的异构环境,浏览器调用,APP接口调用,第三方接口调用等等。

 

RPC和HTTP都可以用于实现远程过程调用,如何选择

从速度上看,RPC比HTTP更快,虽然底层都是TCP,但是http协议的信息往往比较臃肿,不过可以采用gzip压缩
从难度上看,RPC实现较为复杂,http相对简单
从灵活性上看,HTTP更胜一筹,因为它不关心实现细节,跨平台,跨语言
两者有不同的使用场景:

如果对效率要求更高,并且开发过程使用统一的技术栈,那么RPC还是不错的
如果需要更加灵活,跨语言、跨平台,显然HTTP更合适

标签:协议,调用,HTTP,接口,RPC,Https,http
From: https://www.cnblogs.com/enhance/p/17501209.html

相关文章

  • 若依微服务swagger如何不显示某个模块的接口文档?
    在若依微服务项目中,如果不想暴露某个模块的swagger的接口文档,需要怎么做?本文以ruoyi-gen模块进行举例说明。  默认情况下,可以看到这里包含了ruoyi-gen模块,我们要做的是,要将ruoyi-gen进行隐藏。最终的预期结果如下图所示,可以看见,下图中,是不包含ruoyi-gen这个模块的。那我们具体应......
  • 【五子棋实战】第6章 调用接口进行联调
    【五子棋实战】第6章调用接口进行联调Ajax调用接口调用五子棋接口点击优化尾声更多待开发的功能Ajax调用接口  引入Jquery,使用JQ封装的ajax,demo如下:<scriptsrc="jquery-3.5.0.min.js"></script><script>$.ajax({ url:'http://localhost:5000/api/next_step',......
  • 【五子棋实战】第4章 部署五子棋计算接口到Window、Linux上
    【五子棋实战】第4章部署五子棋计算接口到Window、Linux上python项目打包成exe可执行文件##步骤一、安装pyinsatller##步骤二、使用pyinstaller打包Python程序##操作演示##注意事项!!python的Flask接口部署(Linux)##步骤一、安装必要的软件依赖##步骤二、安装Flask和......
  • OpenFeign服务接口调用
    官网解释:https://cloud.spring.io/spring-cloud-static/Hoxton.SR1/reference/htmlsingle/#spring-cloud-openfeignFeign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加简单。它的使用方法是定义一个服务接口然后在上面添加注解。Feign也支持可拔插式的......
  • getFavicon 自建icon api图片接口
    本文转载自:getFavicon自建iconapi图片接口更多内容请访问钻芒博客:https://www.zuanmang.net1项目地址:GitHub–owen0o0/getFaviconatwww.iowen.cn本站演示:动态获取https://api.w4i.cn/i/get.php?url=https://www.k1v.cn/静态缓存https://api.w4i.cn/i/www.k1v.cn.png安......
  • 【电商平台京东api接口系列】api获取商品详情Java请求返回值说明
    前言京东商品详情API接口的作用是获取京东平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据,方便进行数据分析、价格比较、爬取等操作。通过该接口获取到的商品详情数据可以结合其他数据进行深度挖掘,例如可以......
  • 电商平台接口大全,拿走,不谢!
    什么是电商平台API接口?    API(ApplicationProgrammingInterface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。电商API是服务电商的API接口,一般有淘宝、天猫、......
  • 【电商平台京东api接口系列】api获取商品详情Java请求返回值说明
    ​前言京东商品详情API接口的作用是获取京东平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据,方便进行数据分析、价格比较、爬取等操作。通过该接口获取到的商品详情数据可以结合其他数据进行深度挖掘,例......
  • 【电商平台拼多多api接口】根据ID获取商品详情原数据API返回值说明
    前言拼多多商品详情原数据API接口的作用是获取拼多多平台上某个商品的详细信息,包括商品标题、价格、图片、规格、参数、店铺信息等。开发者可以通过该接口获取到商品的原始数据,方便进行数据分析、价格比较、爬取等操作。通过该接口获取到的商品详情数据可以结合其他数据进行深度挖......
  • 通过商品ID获取当当网商品详情数据,当当商品详情接口,当当商品 API 接口
    获取当当网的商品详情数据需要使用其提供的API接口。您需要先注册当当开放平台账号,获得授权并获取API接口的调用凭证,然后按照API文档中的要求进行数据获取操作。以下是大致的步骤:注册当当开放平台账号,并按照要求提交申请获取API接口的调用凭证。获得授权后,您将会收到一组A......