gRPC(gRPC Remote Procedure Call)是由 Google 开发的开源 RPC 框架,它基于 HTTP/2 标准,使用 Protocol Buffers 作为接口定义语言(IDL)。gRPC 提供了一种高效、跨语言、跨平台的远程过程调用(RPC)解决方案,被广泛应用于构建分布式系统和微服务架构。以下是选择使用 gRPC 的一些主要原因:

1. 性能高效

  • HTTP/2 协议:gRPC 使用 HTTP/2 协议作为底层的传输协议,相比于 HTTP/1.x 具有更低的延迟、更高的效率和更好的性能。
  • 多路复用:HTTP/2 支持多路复用,允许多个请求同时在一个连接上进行,避免了 HTTP/1.x 中的线头阻塞(Head-of-line blocking)问题。
  • 二进制传输:使用 Protocol Buffers 作为默认的序列化格式,相较于 JSON 和 XML 具有更高的编解码效率,减小了数据传输的体积。

2. 跨语言和跨平台

  • gRPC 的接口定义语言(IDL)使用 Protocol Buffers,支持多种编程语言,如 Java、Go、C++、Python、Ruby 等,使得不同语言的服务能够无缝地进行通信。
  • gRPC 不仅可以在不同的编程语言中使用,还可以在不同的操作系统上运行,包括 Linux、Windows、macOS 等。

3. 接口定义简单

  • 使用 Protocol Buffers 进行接口定义,语法简洁清晰,易于阅读和维护。
  • 支持请求和响应中的复杂数据结构,并提供了方便的工具来生成客户端和服务端的代码。

4. 自动化工具支持

  • gRPC 提供了丰富的工具,如 Protocol Buffers 编译器、gRPC 插件等,使得接口的生成和维护更加方便。
  • 支持使用工具生成客户端和服务端的代码,避免手动编写重复性的代码。

5. 强大的生态系统

  • gRPC 不仅提供了核心的 RPC 功能,还支持服务发现、负载均衡、中间件等功能,使其成为构建微服务架构的理想选择。
  • 有丰富的社区支持,支持的语言和平台不断增加,相关工具和库也在不断完善。

6. 支持流式传输

  • gRPC 支持基于流的传输,允许客户端和服务端通过一个连接同时发送多个消息。
  • 支持单向流、双向流和请求-响应的多种通信模式,适用于各种复杂的应用场景。

7. 安全性

  • gRPC 支持基于 TLS 的安全连接,确保数据在传输过程中的机密性和完整性。
  • 支持多种身份验证机制,包括基于令牌的身份验证、SSL/TLS 证书身份验证等。

8. IDL-First 开发模式

  • gRPC 提倡 Interface Definition Language(IDL)优先的开发模式,通过定义接口的形式来约定服务的行为,确保客户端和服务端之间的一致性。
  • IDL-First 的开发方式使得服务的定义更加清晰,更容易进行版本管理和演化。

选择使用 gRPC 的公司和项目包括 Google、Netflix、Square 等,它在构建高性能、跨语言、分布式系统方面表现出色,成为了现代分布式架构中的一个重要组成部分。


声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。

Author: mengbin

blog: mengbin

Github: mengbin92

cnblogs: 恋水无意

腾讯云开发者社区:孟斯特


Why gRPC ?的更多相关文章

  1. gRPC源码分析1-SSL/TLS

    引子 前几天看到微信后台团队分享了TLS相关文章,正好gRPC里TLS数据加密是很重要的一块,于是整理出了这篇文章. 在gRPC里,如果仅仅是用来做后端微服务,可以考虑不加密.本文太长,先给个大纲. ...

  2. gRPC源码分析2-Server的建立

    gRPC中,Server.Client共享的Class不是很多,所以我们可以单独的分别讲解Server和Client的源码. 通过第一篇,我们知道对于gRPC来说,建立Server是非常简单的,还记得 ...

  3. gRPC源码分析0-导读

    gRPC是Google开源的新一代RPC框架,官网是http://www.grpc.io.正式发布于2016年8月,技术栈非常的新,基于HTTP/2,netty4.1,proto3.虽然目前在工程化方 ...

  4. 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

    Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能.开源.通用的RPC框架.Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开 ...

  5. gRPC .NET Core跨平台学习

    前些天发布gRPC C# 学习,在.NET Framework 中使用gRPC ,今天来学习 .NET Core gRPC. gRPC 的.NET Core 包在NuGet 上发布了,结合.NET C ...

  6. gRPC C#学习

    前些天gRPC 发布1.0 版本,代表着gRPC 已经正式进入稳定阶段. 今天我们就来学习gRPC C# .而且目前也已经支持.NET Core 可以实现完美跨平台. 传统的.NET 可以通过Mono ...

  7. .net core 用grpc实现微服务

    GRPC 是Google发布的一个开源.高性能.通用RPC(Remote Procedure Call)框架.提供跨语言.跨平台支持.以下以.NET Core 使用控制台.docker中演示如何使用G ...

  8. rpc框架之gRPC 学习 - hello world

    grpc是google在github于2015年开源的一款RPC框架,虽然protobuf很早google就开源了,但是google一直没推出正式的开源框架,导致github上基于protobuf的r ...

  9. Android开发笔记之《远程控制(MQTT|mosquitto) && (ProtocalBuffer | GRPC)》

    Android推送方案分析(MQTT/XMPP/GCM): http://www.open-open.com/lib/view/open1410848945601.htmlMQTT官网: http:/ ...

  10. gRPC+etcd的优势分析

    相比webService等可跨平台,跨语言的服务相比,gRPC更增加了以下优势 1.可以采用二进制传输,速度更快 (使用TCP传输层,而不是Http2应用层) 2.集群服务,统一注册,可靠性高( 好的 ...

随机推荐

  1. Solon Web 开发:四、认识请求上下文(Context)

    Handler + Context 架构,是Solon Web 的基础.在 Context (org.noear.solon.core.handle.Context)里可以获取: 请求相关的对象与接口 ...

  2. PPT 没有电脑如何制作PPT

    没有电脑如何制作PPT

  3. PPT 求职应聘:如何利用时间轴去展示

    顺序逻辑的梳理 线条 竖直排列 图形结合

  4. 【docker】运维相关名词 Iaas-Paas和Saas docker镜像设置 启动与停止常用命令 镜像相关命令 容器相关命令

    目录 上节回顾 今日内容 1 什么是Iaas-Paas和Saas 2 docker 启动设置镜像 2.1 启动与停止常用命令 3 镜像相关命令 4 容器相关命令 练习 上节回顾 # 1 flask-s ...

  5. cookie与session简介 django操作cookie django操作session

    目录 cookie与session简介 早期cookies 随机字符串解决cookies安全问题 禁止浏览器保存cookies django操作cookie set_cookie set_signed ...

  6. 2017年第八届 蓝桥杯A组 C/C++决赛题解

    蓝桥杯历年国赛真题汇总:Here 1. 平方十位数 由0~9这10个数字不重复.不遗漏,可以组成很多10位数字. 这其中也有很多恰好是平方数(是某个数的平方). 比如:1026753849,就是其中最 ...

  7. 基于AHB_BUS的eFlash控制器的微架构设计

    eFlash微架构设计 1.回顾架构设计 2.Flash时序仿真 2.1 ahb_flashc项目目录 docs rtl sim tb model 2.2 docs 架构设计文档 微架构设计文档 集成 ...

  8. AHB-SRAMC Design-02

    AHB-SRAMC Design SRAMC(另外一种代码风格)解析 SRAM集成,顶层模块尽量不要写交互逻辑 module ahb_slave_if( input hclk, input hrest ...

  9. JMS微服务开发示例(八)双机热备

    双机热备,指两个一模一样的微服务,两个同时在运行,但是只有一个在工作,当工作中的微服务垮掉后,另一个会自行补上. 要实现这个,只需要设置 SingletonService = true. var mi ...

  10. 阿里云ECS自建K8S_IPV6重启后异常问题解决过程

    阿里云ECS自建K8S_IPV6重启后异常问题解决过程 背景 最近安装了一个单节点的K8S_IPV6 昨天不知道何故 突然宕机了. 然后只能在阿里云的控制台后台重启了ECS 启动之后看K8S的状态一开 ...