gRPC简介: Google的高性能RPC框架

news2024/11/25 4:59:55

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁
🦄 博客首页——猫头虎的博客🎐
🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐
🌊 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~💐

🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

文章目录

  • gRPC简介: Google的高性能RPC框架
    • gRPC的核心设计思路
      • 1. 网络通信
      • 2. 传输协议
      • 3. 数据序列化
      • 4. 代理的创建
    • gRPC与ThriftRPC的对比
      • 共性
      • 区别
    • gRPC与传统RPC的区别
    • gRPC的优势
    • 总结:
    • 参考资料 :
  • 原创声明

在这里插入图片描述

gRPC简介: Google的高性能RPC框架

摘要:
gRPC是Google开源的高性能RPC框架,起源于Google内部的RPC系统——Stubby。本文详细探讨了gRPC的核心设计思路、与ThriftRPC和传统RPC的区别,以及gRPC的主要优势。

引言:
在分布式系统和微服务架构日益盛行的今天,远程过程调用(RPC)技术变得越来越重要。gRPC,作为Google推出的一个开源RPC框架,已经成为了这个领域的一个标准。本文旨在深入探讨gRPC的设计、特点和其在现代应用中的价值。

gRPC是由Google开源的一个高性能的RPC框架,起源于Google内部的RPC系统——Stubby。在2015年,它被正式开源,成为云原生时代的一个RPC标准。

gRPC的核心设计思路

1. 网络通信

gRPC自己封装了网络通信的部分,并为多种语言提供了网络通信的封装,包括C、Java(基于Netty)和Go。

2. 传输协议

gRPC使用HTTP2作为其传输协议,支持二进制数据内容的传输。它还支持双向流(双工)以及连接的多路复用。

3. 数据序列化

  • 基本文本和JSON
  • Java原生的序列化方式
  • Thrift的二进制序列化
  • 压缩二进制序列化

特别地,gRPC使用protobuf(Protocol Buffers)作为其主要的序列化方式。这是Google开源的一种序列化方式,其时间效率和空间效率是JSON的3到5倍。它使用IDL语言进行描述。

4. 代理的创建

gRPC通过创建代理(stub)使得调用者可以像调用本地方法那样去调用远端的服务方法。

gRPC与ThriftRPC的对比

共性

两者都支持异构语言的RPC。

区别

  1. 网络通信:Thrift使用TCP和其专属协议,而gRPC使用HTTP2。
  2. 性能角度:ThriftRPC的性能高于gRPC。
  3. 背书与应用广泛性:gRPC得到了大厂Google的背书,在云原生时代与其他组件的合作更为顺利,因此gRPC的应用更为广泛。

gRPC与传统RPC的区别

RPC (Remote Procedure Call) 是一种远程过程调用技术,它允许程序调用另一个地址空间(通常是在共享网络的另一台机器上)的过程或函数,就像调用本地的过程或函数一样。

  1. 传输协议:传统的RPC可能使用多种协议,包括HTTP、TCP或专有协议,而gRPC固定使用HTTP2。
  2. 数据序列化:传统RPC支持多种序列化方式,而gRPC主要使用protobuf。
  3. 性能:由于protobuf和HTTP2的使用,gRPC通常比传统的RPC具有更高的性能。
  4. 语言支持:gRPC支持多种语言,而某些传统的RPC实现可能只支持有限的语言。
  5. 流式通信:gRPC支持双向流通信,而许多传统的RPC不支持或只支持有限的流通信。

gRPC的优势

  1. 高效地进行进程间通信。
  2. 支持多种语言,原生支持C、Go和Java实现。在C语言版本上,还扩展了对C++、C#、NodeJS、Python、Ruby和PHP的支持。
  3. 支持多平台运行,包括Linux、Android、IOS、MacOS和Windows。
  4. 使用高效的protobuf序列化方式。
  5. 采用HTTP2协议。
  6. 得到了大厂的背书,如Google。

以上就是关于gRPC的简要介绍,它作为一个高性能的RPC框架,在现代的分布式系统和微服务架构中有着广泛的应用。

总结:

gRPC凭借其高效的protobuf序列化方式、HTTP2协议的使用以及广泛的语言和平台支持,为现代分布式系统提供了一个强大且高效的通信工具。与传统的RPC和其他现代RPC框架相比,gRPC具有明显的优势,特别是在性能、扩展性和云原生应用的集成方面。得益于Google的背书和开源社区的支持,gRPC的未来前景看起来非常光明。

参考资料 :

  1. gRPC官方文档: https://grpc.io/docs/
  2. Protocol Buffers官方文档: https://developers.google.com/protocol-buffers
  3. “gRPC: Up and Running” - Kasun Indrasiri, Danesh Kuruppu
  4. “Introduction to gRPC: A general RPC framework” - Richard Belleville, Wenbo Zhu

在这里插入图片描述

原创声明

======= ·

  • 原创作者: 猫头虎

作者wx: [ libin9iOak ]

学习复习

本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

作者保证信息真实可靠,但不对准确性和完整性承担责任

未经许可,禁止商业用途。

如有疑问或建议,请联系作者。

感谢您的支持与尊重。

点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自定义mybatis拦截器,在若依springboot项目中不起作用的原因

自定义mybatis拦截器,在若依springboot项目中不起作用的原因 找到 MyBatisConfig 配置类,引入自定义配置 在sqlSessionFactory中添加自定义拦截器,就可以正常使用了 package com.lingxu.framework.config;import com.lingxu.common.core.…

AAAI 2024,14000篇投稿,大家都写了啥?

夕小瑶科技说 原创 作者 | python 8月16日截稿的AAAI 2024,从投稿ID看,已超14000篇投稿。这么多投稿,大家都写了啥?今年什么话题最火?和往年相比,今年的投稿趋势又有什么变化? 本文中&#xf…

<c++开发>通信工具 -之-SOME/IP移植部署 第一篇文章

<c开发>通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议,主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSAR(AUTomotive Open …

微信小程序列表加载更多

概述 基于小程序开发的列表加载更多例子。 详细 一、前言 基于小程序开发的列表加载更多例子。 二、运行效果 运行效果(演示的小视频,点击播放即可) 三、实现过程 总体思路如何: 1、通过scroll-view组件提供的bindscroll方法…

Blazor 依赖注入妙用:巧设回调

文章目录 前言依赖注入特性需求解决方案示意图 前言 依赖注入我之前写过一篇文章,没看过的可以看看这个。 C# Blazor 学习笔记(10):依赖注入 依赖注入特性 只能Razor组件中注入所有Razor组件在作用域注入的都是同一个依赖。作用域可以看看我之前的文章。 需求 …

【Visual Studio】生成.i文件

环境 VS版本:VS2013 问题 如何生成.i预编译文件? 步骤 1、打开VS项目属性,打开C/C\预处理器页面,【预处理到文件】选择是,开启。 2、生成文件如下。 3、正常编译需要关闭此选项。

ProtoBuf3语法详解

目录: 需求:字段规则消息类型的定义与使用通讯录2.0的写⼊实现TestRead.java(通讯录2.0)TestRead.java(通讯录2.0) 另⼀种验证⽅法--toString()enum类型升级通讯录⾄2.1版本Any类型oneof类型map类型默认值更新消息保留字段reserved未知字段选项option 通…

企业国际大数据传输必须了解的5种跨国快速传输大文件工具

信息技术的迅速发展,带来了数据量的持续增长,从而日益增加了对大文件传输的需求。特别是在跨国传输大数据时,网络拥堵和地理限制等问题也逐渐浮现。为了解决这一难题,人们开始寻找更为高效、迅捷和安全的方法来进行跨国大文件传输…

Electron之初体验

Electron是一款使用Html、Css、JS开发跨平台桌面应用的框架。 话不多说直接开搞。 必坑指南: node版本>18.0使用淘宝镜像安装npm相关包;把下面两行配置放到你的npmrc文件中electron_mirrorhttps://npm.taobao.org/mirrors/electron/ ELECTRON_MIRRO…

C++STL之string类

​ 食用指南:本文在有C基础的情况下食用更佳 🍀本文前置知识:C基础 ♈️今日夜电波:喜劇—星野源 1:06 ━━━━━━️💟──────── 3:51 …

5G手机终端省电方案

5G终端带宽大、频率高,天线一般为4接收2发射,因此功耗比较高。 5G Power Saving技术为3GPP的一大主要课题,本文介绍几种5G省电技术。 CDRX(Connected Discontinuous reception)是让终端定期休眠不监听PDCCH。 WUS&a…

C语言学习系列-->看淡指针(3)

文章目录 一、字符指针变量二、数组指针变量2.1 概述2.2 数组指针初始化 三、二维数组传参本质四、函数指针五、typedef关键字六、函数指针数组 一、字符指针变量 在指针的类型中我们知道有⼀种指针类型为字符指针 char* 一般使用&#xff1a; #include<stdio.h>int main…

【COMP282 LEC6 LEC7 LEC8】

LEC 6 Example container: Map Things are stored in ascending order (based on <) by default on the first component (the string) Map access 让一个键名为“one”的值为1 添加一个键值对&#xff0c;键名是“two”&#xff0c;值为2 functor 功能原件 LEC 7

2023企业Hyper-V备份解决方案!

虚拟技术已成为IT基础设施的核心元素&#xff0c;企业长期依赖虚拟机&#xff08;VM&#xff09;为应用程序提供工作负载。Hyper-V是一款广受欢迎的虚拟化平台&#xff0c;多年来已日臻完善&#xff0c;并在各类规模的公司中得到广泛应用。 随着虚拟机使用的普及&…

【0基础入门Python Web笔记】三、python 之函数以及常用内置函数

三、python 之函数以及常用内置函数 函数函数定义函数调用函数参数返回值 常用内置函数input()函数range()函数其它 更多实战项目可进入下方官网 函数 函数是一种用于封装可重复使用代码块的工具&#xff0c;能够将一系列操作组织成一个逻辑单元。 函数定义 在Python中&…

Linux_11_系统启动和内核管理

目录 1 C entOS 6 的启动管理1.1 Linux 组成1.2 内核设计流派1.3 CentOS 6启动流程1.3.1 CentOs 6 启动流程1.3.1 硬件启动POST1.3.2 bootloader 启动/引导加载器1.3.2.1 grub 功能和组成1.3.2.2 CentOS 6 grub 安装1.3.2.3 grub legacy 管理 1.3.3 加载 kernel1.3.4 init 初始…

循环购模式:打破传统消费模式,让每一次购物成为可持续性的循环

品牌做私域运营&#xff0c;只会不断促销是没有用的&#xff0c;反而会让用户渐渐无感。更高级的私域运营玩法应该是通过场景策略来做私域&#xff0c;直击用户的痛点&#xff0c;让用户自我说服&#xff0c;提高转化率。 循环购消费模式是一种创新的商业模式&#xff0c;它能…

PostgreSQL-研究学习-介绍与安装

PostgreSQL-预研 是个很厉害的数据库的样子 ψ(*&#xff40;ー)ψ 官方文档&#xff1a;http://www.postgres.cn/docs/12/ 总的结论和备注 PgSQL 支持对JSON的支持很强大&#xff0c;以及提供了很多数学几何相关的数据类型【例&#xff1a;点&#xff0c;线条&#xff0c;几何…

[PyTorch][chapter 51][Auto-Encoder -1]

目录&#xff1a; 简介 损失函数 自动编码器的类型 一 AutoEncoder 简介&#xff1a; 自动编码器是一种神经网络&#xff0c;用于无监督学习任务.(没有标签或标记数据), 例如降维,特征提取和数据压缩. 主要任务&#xff1a; 1&#xff1a; 输入数据 …

怎样做好日志分析?

首先我们要知道日志分析是指检查并理解计算机生成的日志消息&#xff0c;例如日志事件或审计来跟踪记录&#xff0c;通过日志分析可以帮助您诊断和解决计算机系统中的问题&#xff0c;以及监视系统性能和安全性。 如果您想知道您的网络中发生了什么&#xff0c;以便洞察潜在的…