智客公社

标题: 聊聊:高手,云集在于REST、gRPC 和 GraphQL之间! [打印本页]

作者: 岁月如歌    时间: 2022-12-27 07:57
标题: 聊聊:高手,云集在于REST、gRPC 和 GraphQL之间!

R是比较常用的API交互手段,SB对其进行了高度的集成。它通过语义化的URL,使用比较通用的HTTP协议,完成状态的请求交互。R、GQL、RPC,是目前对W暴露API常用的种组织方式。子域名查询的相关问题可以到网站了解下,我们是业内领域专业的平台,您如果有需要可以咨询,相信可以帮到您,值得您的信赖!https://www.ip133.com/


每当看着这些词,我都会进入选择困难症。这些丰富多彩的协议填满了我们的工具箱,同时也抛出了一个难题:如果我想要自己的程序健康长久,就不得不了解它们到底是什么东西。

这很让人讨厌,因为它们就像是螺丝螺母的型号,你做的工作只不过是从一堆零件里挑合适的出来,让它们配对,并让它们组合成你想要的功能。

很趣,也非常没有价值。但看在钱的面子上,又不得不学。本文就是让你速进行选择,不拖泥带水,赶紧完成工作,喝杯茶也比瞎纠结有趣的多。

RR是比较常用的API交互手段,SB对其进行了高度的集成。它通过语义化的URL,使用比较通用的HTTP协议,完成状态的请求交互。

R是R的简称,使用HTTP的POST、GET、PUT、PATCH和DELETE来定义对资源的操作。

虽然有这么的操作意义,但在平常的使用中,我们习惯只使用它的POST和GET方法,对应在S里就是@GM和@PM注解。没别的原因,只因为R看似很强大,但在企业开发中曲线相对较高,很多聚合资源和复杂的操作,根本法抽象成资源。

但R变种也算R,它依然是使用比较广泛的模式。

选择R的原因是因为它的生态太好了。从R到J、从G到R,几乎没有语言不支持R。如果你想要开发一个W系统,那几行代码,非常容易的就能把你的API暴露出去。而且,它与关的集成度非常高,各种负载均衡组件对HTTP的协议可以说是炉火纯青,如果你选择它的话,真的是非常的省事。

但是,R也意味着效率低下。由于它要兼容HTTP10,频繁的短链接也造成了资源的浪费。即使是长链接,HTTP臃肿的体积也让它在追求高性能的场景中稍逊一筹。加上它是状态的,如果你想传递一些伴随着用户的数据比如JWTT,那么你不得不放在HTTPH或者C中,这加重了整体的传输负担。

总之,R是一个速的开始,但在高性能、有状态的场景下,你不得不选择其他。

RPCRPC当然是G的作品,因为它传输的数据就是另外一个产品所编码的。提到RPC就不得不提到,它们是一样的东西。但由于的光环,RPC更加流行。

RPC的开发就不像R那么灵活,它需要你定义一份合同,然后在和端同时引用和传输它。

有了这份合同,就可以压缩数据。比如我们常用的,其冗余信息特别多。如果把的字段使用固定的代替,或者放在固定的位置进行传递,那么字段称就根本不需要占用那么大的空间。

RPC提供了多种数据传输模式。

类似于R的HTTP的一问一答模式;C-S客户端发送数据是流的方式,然后以特定信息结尾,然后S返回结果;S-SC请求了服务端,服务端持续发送数据到C,直到通知它结束;BS双工通道,那就是普通的TCP链接了,全部是流的方式;RPC发展了这么多年(2022),对负载均衡的支持也非常好。相对于传统的R,它使用HTTP2来传输数据,减少了一问一答的等待,减少了链接的占用。

如果你在搞物联,或者一些弱环境的数据收集,这种高压缩比的数据定然让你事半功倍。当然,如果你的微服务体系追求较高的性能,结果R就占了一半,那么RPC是你的不二选择。

当然,弱点也是有的。那就是调试的时候,不如HTTP的生态全面,各种自动化工具缺乏,二进制也通常会让人头晕目眩。

GQLGQL也比较年轻,到了2022年才诞生,它规定了一种只取“所需要”数据的能力。

在传统的R请求上,访问特定的URL,你会获得相对固定的结果。不管返回的数据里有多少用的字段,R请求都会把请求吐给你。

GQL的客户端可以决定取出哪些数据,甚至是取数据的方式和格式--也就是只取它所需要的数据,而不会产生过多的用数据。

G就是GQL的集大成者。在上,详细的列出了这些接口。

下面就是一个典型的带有变量的查询语法。可以看到,这使得请求端比如J有了类似编程的能力。

($__:I!){{(__){{}}}}{"__":3}当然它的弱点也是显而易见的。相对于直接请求某个地址,这些查询语句使得请求的构造变的复杂,学习曲线相对陡峭。

对于复杂的资源查询,尤其是字段非常多,且层次非常深的资源查询,GQL不失为一种好的方式。

E以上就是这种主要方式的简单介绍。目前,R毫疑问是使用比较多的,原因就是因为简单;RPC有着迅猛的发展势头,尤其在微服务领域已经得到广泛应用;GQL很复杂,当然对复杂的业务数据来说是一个好的工具。

当你的业务纯粹是功能为主,访问量一般,那就毫疑问的使用R来速现,拿钱完事;如果你的业务对性能要求很高,交互方式上又有流的表现形式,那可以选择RPC,这一般发生在项目初期,否则还是遵循的基础建设为主;GQL就相对比较高级了,引入它很痛,周期也较长,是否使用它来组织数据,就看你的决心了。

但论如何,比起绣花针刺大象,永远不要使用大炮打蚊子。那可能轰不着蚊子,而会炸了自己。

作者简介:小姐姐味道(),一个不允许程序员走弯路的。聚焦基础架构和L。十年架构,日百亿流量,与你探讨高并发世界,给你不一样的味道。




欢迎光临 智客公社 (http://bbs.cnaiplus.com/) Powered by Discuz! X3.4