首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >“RPC 和RESTful ” 不要再选错了!

“RPC 和RESTful ” 不要再选错了!

作者头像
二哥聊运营工具
发布于 2021-12-17 11:11:36
发布于 2021-12-17 11:11:36
7730
举报
文章被收录于专栏:程序员泥瓦匠程序员泥瓦匠

RPC主要是基于TCP/IP协议的,而HTTP服务主要是基于HTTP协议的,我们都知道HTTP协议是在传输层协议TCP之上的,所以效率来看的话,RPC当然是要更胜一筹啦!下面来具体说一说RPC服务和HTTP服务。

OSI网络七层模型

在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型(虽然实际应用中基本上都是五层),它可以分为以下几层:(从上到下)

  • 第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
  • 第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
  • 第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
  • 第四层:传输层。管理着网络中的端到端的数据传输;
  • 第五层:网络层。定义网络设备间如何传输数据;
  • 第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
  • 第七层:物理层。这一层主要就是传输这些二进制数据。

实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面。因为HTTP是应用层协议,而TCP是传输层协议。好,知道了网络的分层模型以后我们可以更好地理解为什么RPC服务相比HTTP服务要Nice一些!

RPC服务

从三个角度来介绍RPC服务:分别是RPC架构,同步异步调用以及流行的RPC框架。

RPC架构

先说说RPC服务的基本架构吧。允许我可耻地盗一幅图哈~我们可以很清楚地看到,一个完整的RPC架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub以及Server Stub,这个Stub大家可以理解为存根。分别说说这几个组件:

  • 客户端(Client),服务的调用方。
  • 服务端(Server),真正的服务提供者。
  • 客户端存根,存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
  • 服务端存根,接收客户端发送过来的消息,将消息解包,并调用本地的方法。

RPC主要是用在大型企业里面,因为大型企业里面系统繁多,业务线复杂,而且效率优势非常重要的一块,这个时候RPC的优势就比较明显了。实际的开发当中是这么做的,项目一般使用maven来管理。比如我们有一个处理订单的系统服务,先声明它的所有的接口(这里就是具体指Java中的interface),然后将整个项目打包为一个jar包,服务端这边引入这个二方库,然后实现相应的功能,客户端这边也只需要引入这个二方库即可调用了。为什么这么做?主要是为了减少客户端这边的jar包大小,因为每一次打包发布的时候,jar包太多总是会影响效率。另外也是将客户端和服务端解耦,提高代码的可移植性。

同步调用与异步调用

什么是同步调用?什么是异步调用?同步调用就是客户端等待调用执行完成并返回结果。异步调用就是客户端不等待调用执行完成返回结果,不过依然可以通过回调函数等接收到返回结果的通知。如果客户端并不关心结果,则可以变成一个单向的调用。这个过程有点类似于Java中的callable和runnable接口,我们进行异步执行的时候,如果需要知道执行的结果,就可以使用callable接口,并且可以通过Future类获取到异步执行的结果信息。如果不关心执行的结果,直接使用runnable接口就可以了,因为它不返回结果,当然啦,callable也是可以的,我们不去获取Future就可以了。

流行的RPC框架

目前流行的开源RPC框架还是比较多的。下面重点介绍三种:

1、gRPC是Google最近公布的开源软件,基于最新的HTTP2.0协议,并支持常见的众多编程语言。我们知道HTTP2.0是基于二进制的HTTP协议升级版本,目前各大浏览器都在快马加鞭的加以支持。这个RPC框架是基于HTTP协议实现的,底层使用到了Netty框架的支持。

2、Thrift是Facebook的一个开源项目,主要是一个跨语言的服务开发框架。它有一个代码生成器来对它所定义的IDL定义文件自动生成服务代码框架。用户只要在其之前进行二次开发就行,对于底层的RPC通讯等都是透明的。不过这个对于用户来说的话需要学习特定领域语言这个特性,还是有一定成本的。

3、Dubbo是阿里集团开源的一个极为出名的RPC框架,在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是及其鲜明的特色。同样 的远程接口是基于Java Interface,并且依托于spring框架方便开发。可以方便的打包成单一文件,独立进程运行,和现在的微服务概念一致。

HTTP服务

其实在很久以前,我对于企业开发的模式一直定性为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议进行传输。我们记得之前本科实习在公司做后台开发的时候,主要就是进行接口的开发,还要写一大份接口文档,严格地标明输入输出是什么?说清楚每一个接口的请求方法,以及请求参数需要注意的事项等。比如下面这个例子:

POST http://www.httpexample.com/restful/buyer/info/share

接口可能返回一个JSON字符串或者是XML文档。然后客户端再去处理这个返回的信息,从而可以比较快速地进行开发。但是对于大型企业来说,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控管理;发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作。

总之

RPC服务和HTTP服务还是存在很多的不同点的,一般来说,RPC服务主要是针对大型企业的,而HTTP服务主要是针对小企业的,因为RPC效率更高,而HTTP服务开发迭代会更快。总之,选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估,从而在仔细比较两种开发框架对于整个项目的影响,最后再决定什么才是最适合这个项目的。一定不要为了使用RPC而每个项目都用RPC,而是要因地制宜,具体情况具体分析。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员泥瓦匠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
REACT:在语言模型中协同推理与行动,使其能够解决各种语言推理和决策任务。
“ 谷歌的研究人员提出了一种通用的方法,将推理(Reson)和行动(Acting)相结合,使得语言模型能够处理多种语言推理和决策任务。该研究表明,采用“推理+动作”范式(ReAct)要优于仅有推理或仅有动作的范式。通过紧密结合推理和动作,这种方法呈现出与人类类似的任务解决方式,从而提升了模型的可解释性、可诊断性和可控性。”
技术人生黄勇
2024/07/19
4410
REACT:在语言模型中协同推理与行动,使其能够解决各种语言推理和决策任务。
Agent 应用于提示工程
如果Agent模仿了人类在现实世界中的操作方式,那么,能否应用于提示工程即Prompt Engingeering 呢?
半吊子全栈工匠
2023/10/30
5630
Agent 应用于提示工程
当GPT-4反思自己错了:性能提升近30%,编程能力提升21%
机器之心报道 机器之心编辑部 GPT-4 的思考方式,越来越像人了。 人类在做错事时,会反思自己的行为,避免再次出错,如果让 GPT-4 这类大型语言模型也具备反思能力,性能不知道要提高多少了。 众所周知,大型语言模型 (LLM) 在各种任务上已经表现出前所未有的性能。然而,这些 SOTA 方法通常需要对已定义的状态空间进行模型微调、策略优化等操作。由于缺乏高质量的训练数据、定义良好的状态空间,优化模型实现起来还是比较难的。此外,模型还不具备人类决策过程所固有的某些品质,特别是从错误中学习的能力。 不过现在
机器之心
2023/03/29
2400
当GPT-4反思自己错了:性能提升近30%,编程能力提升21%
大模型自主智能体爆火,OpenAI也在暗中观察、发力,这是内部人的分析博客
最近几个月,随着大语言模型的持续火爆,利用其构建 AI 智能体的研究陆续进入人们的视线。AI 智能体这个概念也流行开来,不断突破人们的想象力。
机器之心
2023/08/07
6610
大模型自主智能体爆火,OpenAI也在暗中观察、发力,这是内部人的分析博客
​这次重生,AI要夺回网文界的一切
MidReal 可以根据用户提供的情景描述,生成对应的小说内容。情节的逻辑与创造力都很优秀。它还能在生成过程中生成插图,更形象地描绘你所想象的内容。互动功能也是亮点之一,你可以选择想要的故事情节进行发展,让整体更加贴合你的需求。
机器之心
2024/01/04
3650
​这次重生,AI要夺回网文界的一切
一文带你了解基于大模型的Agent
在当前信息时代,大型语言模型(Large Language Models,LLMs)的发展速度和影响力日益显著。大模型强大的推理以及生成能力成为了搭建智能体的最好的组件。本内容来源于Datawhale的开源的“生成大模型基础(so-large-lm)”,一个致力于探索和理解大型模型发展的前沿课程:https://github.com/datawhalechina/so-large-lm
Datawhale
2024/04/24
1.7K0
一文带你了解基于大模型的Agent
每日论文速递 | ReAct Meets ActRe: Agent规划自主解释
摘要:语言代理通过对基础模型进行推理,展示了自主决策能力。最近,人们开始利用多步骤推理和行动轨迹作为训练数据,努力训练语言代理以提高其性能。然而,收集这些轨迹仍然需要大量人力,要么需要人工注释,要么需要实现各种提示框架。在这项工作中,我们提出了 A
zenRRan
2024/04/11
4930
每日论文速递 | ReAct Meets ActRe: Agent规划自主解释
每日论文速递 | Agent-Pro:通过策略级反思和优化学习进化
摘要:大型语言模型对不同的任务表现出强大的解决问题的能力。然而,大多数基于LLM的代理都被设计为具有复杂提示工程的特定任务求解器,而不是能够通过交互学习和进化的代理。这些任务求解器需要手动制作的提示来告知任务规则并调节LLM行为,固有地使其无法解决复杂的动态场景,例如,大型互动游戏。有鉴于此,我们提出了Agent-Pro:一个基于LLM的Agent,具有策略级反射和优化,可以从交互式体验中学习丰富的专业知识,并逐步提升其行为策略。具体而言,它涉及到一个动态的信念生成和反思过程的政策演变。Agent-Pro不是行动层面的反思,而是迭代地反思过去的轨迹和信念,微调其非理性信念,以制定更好的政策。此外,深度优先搜索用于策略优化,确保策略收益的持续增强。代理专业评估两个游戏:二十一点和德州扑克,优于香草LLM和专业模型。我们的研究结果表明,Agent-Pro可以在复杂和动态的场景中学习和发展,这也有利于许多基于LLM的应用程序。
zenRRan
2024/03/02
5170
每日论文速递 | Agent-Pro:通过策略级反思和优化学习进化
“提示工程”的技术分类
尽管大模型非常强大,但仍然有着自身的局限。大模型可以生成看起来非常值得信赖的内容并引用外部资源,但是,大模型本身并不能直接访问互联网也不能访问互联网的资源。偏见往往会使大模型产生某些定型的内容。当被问到一个不知道答案的问题时,大模型有时会产生“幻觉”或者产生错误的信息, 很多时候,即使是最简单的数学或常识的问题, 大模型仍然要挣扎一番。另外,通过操纵提示词,以忽略开发人员的指令并生成特定的内容。
半吊子全栈工匠
2024/08/01
2370
“提示工程”的技术分类
智能体的「一方有难八方支援」,一种分布式AI计算新范式诞生了
最近大型语言模型(LLM)的成功促使越来越多的人探索通过它解决各种复杂的任务,其中 LLM 增强的自主 agent(LAA)尤为引人瞩目。LLA 将 LLM 的智能扩展到了顺序动作执行中,在通过收集观察结果与环境交互并解决复杂任务方面展现出了优越性能。这类代表性工作有 BabyAGI、AutoGPT3、ReAct、Langchain 等。
机器之心
2023/09/08
2700
智能体的「一方有难八方支援」,一种分布式AI计算新范式诞生了
万字长文深度解析LLM Agent反思工作流框架Reflexion上篇:安装与运行
在上一篇文章LLM Agent提效进阶1:反思工作流—91%精度大超GPT-4 24%中,我们深入探讨了三篇开创性的论文,它们共同描绘了大语言模型中反思设计智能体的宏伟蓝图。今天,我们将迈出从理论到实践的关键一步——通过安装和测试Reflexion框架,我们将揭开智能体工作流的神秘面纱,实现知识的深度融合与应用。由于框架东西较多,我们暂定分为上中下三篇来讲解。
AgenticAI
2025/03/18
1480
万字长文深度解析LLM Agent反思工作流框架Reflexion上篇:安装与运行
【愚公系列】《AI Agent技术、应用与商业》006-Al Agent的架构和组成
在人工智能的快速发展中,智能代理(AI Agent)成为了推动各行各业智能化转型的重要力量。无论是在智能客服、智能推荐,还是在自动化决策系统中,智能代理都扮演着至关重要的角色。然而,很多人对智能代理的内部架构和组成部分仍然感到陌生。它们是如何工作的?又由哪些关键组件构成?
愚公搬代码
2025/03/15
5690
DeepResearcher论文解读报告
论文单位:上海交通大学 2 上海人工智能研究院 3 全球人工智能与机器人峰会 项目地址:https://github.com/GAIR-NLP/DeepResearcher 发表时间:2025年4月
致Great
2025/07/12
870
DeepResearcher论文解读报告
每日学术速递3.29
1.Grid-guided Neural Radiance Fields for Large Urban Scenes
AiCharm
2023/05/15
2680
每日学术速递3.29
华为诺亚 | 发布盘古智能体框架:Pangu-Agent,让Agent学会结构化推理
自 AI 诞生以来,开发能够解决和适应复杂工作的多任务智能体(Agent)一直是个重要的目标。
ShuYini
2023/12/28
1.2K0
华为诺亚 | 发布盘古智能体框架:Pangu-Agent,让Agent学会结构化推理
【论文解读】针对机器人技术的大模型
大型语言模型(LLM)经历了显著的发展,并越来越多地跨各个领域集成。值得注意的是,在机器人任务规划领域,LLM利用其先进的推理和语言理解能力,基于自然语言指令制定精确和高效的行动规划。然而,对于机器人与复杂环境交互的具体化任务,由于与机器人视觉感知缺乏兼容性,纯文本LLM经常面临挑战。本研究提供了一个新兴的LLM和多模态LLM集成到各种机器人任务的全面概述。此外,论文还提出了一个利用多模式GPT-4V,通过结合自然语言指令和机器人视觉感知来增强具身任务规划的框架。基于不同数据集的结果表明,GPT-4V有效地提高了机器人在具体化任务中的性能。对各种机器人任务中的LLM和多模态LLM的广泛调查和评估丰富了对以LLM为中心的具身智能的理解,并为弥合人类-机器人-环境交互中的差距提供了前瞻性的见解。
合合技术团队
2024/06/06
3500
【论文解读】针对机器人技术的大模型
突破!自然语言强化学习(NLRL):一个可处理语言反馈的强化学习框架
本论文由伦敦大学学院、上海交通大学、布朗大学、布里斯托大学、新加坡国立大学以及萨里大学的研究者合作完成。
机器之心
2025/02/14
1640
突破!自然语言强化学习(NLRL):一个可处理语言反馈的强化学习框架
LLM+模仿学习,解决真实世界中的复杂任务:AI2提出SwiftSage
GPT-4 等大型语言模型(LLM)在许多推理任务上表现出色,然而,大部分现有研究仅关注静态环境下的任务,如回答问题或解数学题。那么,LLM 能否在真实世界中完成复杂的交互式任务呢?例如,如果我们想制作一个智能体(agent),让它在物理世界里完成一些实验,比如测试一个物体是否导电,我们可以使用 LLM 吗?这类复杂交互式任务(complex interactive tasks)具有很大的挑战性,因为它要求 LLM 不仅能理解动态变化的真实场景,还需要具备诸如长期规划(long-horion planning)、任务分解(task 的 composition)、记忆储存(memorization)、常识推理(commonsense reasoning)、异常处理(exception handling)等高阶认知和推理能力。
机器之心
2023/08/07
4500
LLM+模仿学习,解决真实世界中的复杂任务:AI2提出SwiftSage
一文读懂 Agentic RAG 技术点滴
Hello folks,我是 Luga,今天我们来聊一下人工智能应用场景 - 提升大型语言模型(LLMs)的知识获取和生成能力的 Agentic RAG(智能增强检索生成)技术。
Luga Lee
2025/04/04
4330
一文读懂 Agentic RAG 技术点滴
AI Agent技术的最新进展与改变世界的典型项目巡礼
在学术探索的浩瀚星空中,机器人技术领域的璀璨明珠莫过于Agent技术的深入研究,这一领域历来是创新与突破的温床。回溯至大模型浪潮兴起之前,Agent技术的辉煌篇章便已悄然铺展,诸如Alphago这样的里程碑式案例,以其卓越的环境感知、精准决策与高效行动能力,生动诠释了Agent技术的闭环魅力。同时,DeepMind的Agent57在强化学习领域的游戏挑战中崭露头角,而随后问世的Gato则展现了更为广泛的适用性,乃至OpenAI在“躲猫猫”游戏中展现的多智能体协作,无不预示着Agent技术的无限潜力。
汀丶人工智能
2024/07/08
7920
AI Agent技术的最新进展与改变世界的典型项目巡礼
推荐阅读
相关推荐
REACT:在语言模型中协同推理与行动,使其能够解决各种语言推理和决策任务。
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档