一、RPC

1.1   RPC概念

RPC = Remote Procedure Call, 即远程过程调用,是一种用于构建分布式系统的理念,在一些资料中被称为“请求-响应”协议。两个进程可以位于同一系统中,也可以位于不同的系统中,通过网络相互连接。

RPC使程序能向网络中另一台计算机上的软件请求服务,而无需了解网络的具体细节。

RPC允许开发人员使用函数调用的方式而非网络细节的方式,简化了网络的复杂性,从而促进了将软件分布在不同系统上的过程。

RPC的工作原理是允许一个程序(客户端)直接调用另一台机器(服务器)上的程序(函数)。客户端发出的程序调用看似是本地的,但实际上是在远程机器上运行的。当进行RPC调用时,调用参数会被打包并通过网络传输到服务器,服务器会解包这些参数,执行所需的程序,并将结果返回给客户端。

1.2   RPC工作过程

1.客户端调用客户端代理程序,并以常规方式传递参数,该客户端程序位于客户端自身地址空间中。

2.客户端代理会将参数封装到消息中。封装过程包括将参数的表示转换为标准格式,并将每一个参数复制到消息中。

3.客户端代理将消息传递到传输层,传输层再将该消息发送到远程服务器。在服务器端,传输层将消息传递给服务器代理,服务器代理会解包参数,并使用常规的调用机制调用所需的服务器例程。

4.当服务器程序执行完毕后,它会返回到服务器代理,然后由该代理将返回值整理成一条消息。

5.然后,服务器代理将消息传递给传输层。传输层将结果消息发送回客户端传输层,而客户端传输层再将该消息传递给客户端代理。

6.客户端代理会对返回参数进行解封装处理,并将执行结果返回给调用者。

二、gRPC

2.1    gRPC概念

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似, gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法 (包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。

2.2    gRPC的优势

1.基于HTTP2长连接,创建高效、可靠的通信服务平台

HTTP/2的优势:

(1) 多路复用:引入帧和流的概念,在一个TCP连接中可以存在多条流,可以区分出多个request/response。下一个请求无需等待上一个响应返回即可发出。

(2) 服务器推送:减少了请求数量。服务端推送能把客户端所需要的资源伴随着请求页面一起发送到客户端,省去了客户端重复请求的步骤。正因为没有发起请求,建立连接等操作,所以静态资源通过服务端推送的方式可以极大地提升速度

(3) 二进制分帧

(4) 首部压缩:利用HPack实现头部压缩。HTTP/2可以维护一个字典,差量更新 HTTP 头部,大大降低因头部传输产生的流量。

gRPC则在此基础上进行了开发,具有连接池功能、健康状态管理、高效使用数据帧以及多路复用等特性。

2. 支持多种编程语言和平台

C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java

3.使用Protocol Buffers作为接口定义语言(IDL),避免了数据格式不一致的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/87855.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/87855.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/87855.shtml

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

相关文章

租车小程序电动车租赁小程序php方案

电动车租赁小程序源码,开发语言后端php,前端uniapp。四个端:用户端门店端分销商端小程序,pc管理后台。一 用户端:可以扫门店码,进入门店详情页。也可以通过地图找车。或者门店列表进入,或者快速…

Python数据分析基础04:预测性数据分析

相关章节: 《Python数据分析基础03:探索性数据分析》 《python数据分析基础02:数据可视化分析》 《Python数据分析基础01:描述性统计分析》 预测性数据分析(Predictive Analytics) 的深度解析&#xff0…

PFAE(Pyramidal Frequency Attention Extraction)通过频域注意力机制提高边界模糊、遮挡等场景的的检测能力

在伪装物体检测中,现有方法多依赖空间局部特征,难以捕捉全局信息,而 Transformer 类方法计算成本高昂。频率域特征因具备全局建模能力,可有效抑制背景噪声、提升伪装物体语义清晰度,但频域与空域的频繁转换会增加计算复…

AE插件安装方法

Adobe After Effects简称AE,是adobe公司开发的一个视频剪辑及设计软件,AE软件能够实现对素材的非线性编辑而完成画面的组接,同时还能对任何一部分进行修改,达到想要的结果。AE含有很多脚本、常用的表达式和插件,做动画…

舵轮时钟-STM32-28路PWM--ESP8266-NTP时间

1.STM32--PWM生成STM32不具备如此多的PWM,因此采用软件定时器的方案实现:使用hal库实现;main.c#include "main.h"#define close1 500#define open 1500#define close 2500// 定时器中断配置(以TIM2为例) voi…

Redis的单线程和多线程(单Worker线程)

Redis的单线程和多线程 Redis6.0之前是单线程的,6.0之后是多线程的,我们先了解6.0版本之前的单线程Redis。但其实无论6.0之前还是6.0之后,redis用于工作的线程也只有一个,所以也可以说redis一直是单线程的。 Redis单线程 Redis 6.…

OSPFv3基础

文章目录 OSPFv3基础OSPFv3的改进OSPFv2 v3相同OSPFv2 v3不同 🏡作者主页:点击! 🤖Datacom专栏:点击! ⏰️创作时间:2025年07月07日22点31分 OSPFv3基础 OSPFv3协议号依然为89,在I…

前端篇——HTML知识点体系

目录 一、基础结构与文本 1. 文档基础 2. 文本元素 二、多媒体元素 1. 图像 2. 音频 3. 视频 三、列表系统 1. 无序列表 2. 有序列表 3. 定义列表 四、表格系统 1. 表格结构 2. 合并单元格 五、表单系统 1. 输入控件 2. 表单元素 3. 高级表单特性 六、布局系…

产品需求管理文档中,需求模块是怎么界定的

产品需求文档中,需求模块的界定方式主要包括:1、基于业务流程的功能划分、2、按用户角色使用场景分类、3、根据系统架构与技术边界拆解、4、对数据实体和功能点进行组合聚类、5、结合未来演进节奏设置独立迭代单元。 其中,“基于业务流程的功…

国内免代理免费使用Gemini大模型实战

文章目录 一、免费申请Gemini API密钥二、使用openai-gemini1、在github上找到openai-gemini2、将openai-gemini部署到Netlify3、在Cherry Studio中配置和使用gemini的模型1)在Cherry Studio中配置gemini API2)在Cherry Studio中使用gemini 的模型 4、在…

day46-tomcat-java业务部署

1. ✅选型1.1. 🎯中间件java web中间件说明tomcat组件,功能多jetty精简,功能少一些......weblogic使用oracle数据库配合weblogic(商业)国产:东方通(TongWEB)1.2. 📌jdkjdk选型说明jdk(oracle jdk)商业版,jd…

[netty5: HttpServerCodec HttpClientCodec]-源码分析

在阅读该篇文章之前,推荐先阅读以下内容: [netty5: ChannelHandler & ChannelHandlerAdapter]-源码解析[netty5: HttpObjectEncoder & HttpObjectDecoder]-源码解析 HttpServerCodec HttpServerCodec 是一个 Netty 编解码器,结合 …

华为OD机试 2025B卷 - 数组组成的最小数字(C++PythonJAVAJSC语言)

2025B卷目录点击查看: 华为OD机试2025B卷真题题库目录|机考题库 + 算法考点详解 2025B卷 100分题型 最新华为OD机试 真题目录:点击查看目录 华为OD面试真题精选:点击立即查看 2025华为od 机试2025B卷-华为机考OD2025年B卷 题目描述 给定一个整型数组,请从该数组中选…

Ubuntu下Tomcat的配置

进入Tomcat的conf目录下 1 备份配置文件 cp server.xml server.xml.2下载server.xml&#xff0c;用notepad文本编辑器打开 2 修改Tomcat的端口号 找到如下内容<Connector port"8080" protocol"HTTP/1.1"connectionTimeout"20000"redirectPort…

Docker部Ollama安装、本地大模型配置与One-API接入

Docker 安装 Ollama Ollama 支持 Docker 安装,极大简化了部署流程。以下是具体步骤: 创建ollama文件夹 创建 docker-compose.yaml 文件新建一个 docker-compose.yaml 文件,内容如下: 编辑文件 …

ABB焊接机器人智能节气仪

在现代焊接工业中&#xff0c;ABB焊接机器人凭借其高精度、高效率等优势被广泛应用。而在焊接过程中&#xff0c;节气是一个重要的考量因素&#xff0c;这就凸显出ABB焊接机器人智能节气仪的重要性。ABB焊接机器人节气是提高焊接生产效益的关键环节。传统的焊接过程中&#xff…

摄影后期:使用Photoshop进行暗角控制

方法一&#xff1a;ctrlshiftR调出镜头校正工具&#xff0c;调整晕影 方法二&#xff1a;

pyhton基础【24】面向对象进阶五

目录 十五.多继承的继承顺序 - mro 调用父类方式不同导致结果不同 单继承中的super 简单总结 面试题 十六.魔术方法 魔术方法概述 魔术方法概览 __getattribute__属性 __getattribute__注意事项 常用的魔术方法 __doc__ __module__和__class__ __init__ __del__…

如何保障MySQL客户端连接数据库安全更安全

公司员工或外协人员&#xff0c;直接使用业务账号或高权限账号连接MySQL服务器&#xff0c;如同让数据在连接时减少风险——账号密码易泄露、操作行为难追溯、安全风险陡增&#xff01;尤其是在客户端连接环节&#xff0c;如何确保每一个接入点都安全可控&#xff0c;每一次操作…

机器学习入门:线性回归详解及Scikit-learn API使用指南

一、线性回归概述线性回归是统计学和机器学习领域中最基础、最广泛应用的预测建模技术之一。自19世纪初由弗朗西斯高尔顿(Francis Galton)首次提出以来&#xff0c;线性回归已成为数据分析的核心工具&#xff0c;在经济学、社会科学、生物统计学、工程学等众多领域发挥着重要作…