首页 > 其他分享 >Grpc的内部原理、优缺点

Grpc的内部原理、优缺点

时间:2023-12-23 09:02:04浏览次数:24  
标签:服务 调用 HTTP Grpc 优缺点 gRPC IDL 原理 序列化

  gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。gRPC 默认使用protocol buffers,这是Google开源的一套成熟的结构数据序列化机制(也可使用其他数据格式如JSON)
  基于go的一种远程过程调用,RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP或者UDP)、序列化方式(XML/Json/二进制)和通信细节。服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。

优点:
1)高效的远程过程调用(RPC):gRPC使用高效的远程过程调用协议,基于Protocol Buffers(protobuf)进行数据序列化和通信。通过使用二进制协议和高性能的序列化机制,gRPC可以实现快速、高效的跨网络通信。
2)强类型和接口定义语言(IDL):gRPC使用接口定义语言(IDL)来定义服务接口和消息格式。IDL提供了一种规范和标准,可以在客户端和服务器之间共享和交流。通过IDL,可以明确地定义服务接口和消息类型,提高跨平台和多语言的互操作性。
3)支持多种传输协议:gRPC支持多种传输协议,包括基于HTTP/2的传输和传统的TCP传输。HTTP/2作为底层协议,提供了多路复用、流控制和头部压缩等优点,可以提高性能和效率。
4)支持多种编程语言:gRPC支持多种编程语言,包括Java、C++、Python、Go等,可以满足不同语言和技术栈的需求。这使得开发人员可以使用自己熟悉的编程语言来实现和使用gRPC服务。
5)双向流式通信(Bidirectional Streaming):gRPC支持双向流式通信,即客户端和服务器可以同时发送和接收数据流。这使得实时的流式数据传输和通信成为可能,例如聊天应用、实时监控等场景。
6)拦截器和中间件(Interceptors and Middleware):gRPC提供拦截器和中间件的机制,可以在请求和响应的处理过程中插入自定义的逻辑。这样可以实现日志记录、认证授权、错误处理等通用的功能,提高代码复用性和可维护性。
7)可扩展性和服务发现:gRPC支持服务发现和负载均衡机制,可以根据需要动态地扩展服务。通过使用服务发现机制,可以自动发现和管理可用的服务实例,以实现高可用性和负载均衡。
8)自动生成的客户端和服务器代码:使用gRPC的IDL和相关工具,可以自动生成客户端和服务器的代码。这样可以简化开发过程,减少手动编写重复性代码的工作量。
缺点:
1)GRPC尚未提供连接池,需要自行实现
2)尚未提供“服务发现”、“负载均衡”机制
3)因为基于HTTP2,绝大部多数HTTP Server、Nginx都尚不支持,即Nginx不能将GRPC请求作为HTTP请求来负载均衡,而是作为普通的TCP请求。(nginx1.9版本已支持)
4)Protobuf二进制可读性差(貌似提供了Text_Fromat功能)默认不具备动态特性(可以通过动态定义生成消息类型或者动态编译支持)
5)难以调试和跟踪,在排查问题时,可能需要额外的工具和技术来解析和查看数据

标签:服务,调用,HTTP,Grpc,优缺点,gRPC,IDL,原理,序列化
From: https://www.cnblogs.com/beatle-go/p/17922679.html

相关文章

  • ThreadLocal和InheritableThreadLocal详解,基本原理及注意项 父子线程数据共享
    一、ThreadLocal介绍在多线程环境下访问同一个线程的时候会出现并发问题,特别是多个线程同时对一个变量进行写入操作时,为了保证线程的安全,通常会进行加锁来保证线程的安全,但是加锁又会造成效率的降低;ThreadLocal是jdk提供的除了加锁之外保证线程安全的方法,其实现原理是在Thread类......
  • 《TVM编译器原理与实践》新书推荐
    《TVM编译器原理与实践》新书推荐作者:吴建明,吴一昊;出版社:机械工业出版社;出版时间:2023年12月 本书已经出版,目前在淘宝天猫,京东,当当上可以购买。谢谢!天猫:https://detail.tmall.com/item.htm?abbucket=8&id=757068341348&ns=1&spm=a21n57.1.0.0.2b9b523ckBk0aH京东:https://it......
  • Hive-mapjoin详解(mapjoin原理)
    笼统的说,Hive中的Join可分为CommonJoin(Reduce阶段完成join)和MapJoin(Map阶段完成join)。本文简单介绍一下两种join的原理和机制。一.CommonJoin如果不指定MapJoin或者不符合MapJoin的条件,那么Hive解析器会将Join操作转换成CommonJoin,即在Reduce阶段完成join。CommonJoin整个......
  • k8s组件、工作原理详解
    1.k8s组件  Master组件:kube-apiserver(APIServer):角色:提供集群的唯一入口,处理所有API请求。原理:接收来自客户端(kubectl、UI界面)和其他组件的请求,验证和授权请求,然后将其转发到其他组件或更新etcd中的数据。etcd:角色:分布式键值存储,保存整个集群的状......
  • 前端 JS 安全对抗原理与实践
    作者:vivo互联网安全团队-LuoBingsong前端代码都是公开的,为了提高代码的破解成本、保证JS代码里的一些重要逻辑不被居心叵测的人利用,需要使用一些加密和混淆的防护手段。一、概念解析1.1什么是接口加密如今这个时代,数据已经变得越来越重要,网页和APP是主流的数据载体,如果......
  • 计算机组成原理知识总结
    DDR和DRAM的关系DDR(DoubleDataRate)和DRAM(DynamicRandomAccessMemory)是两个相关但不同的概念,它们通常一起使用,但表示的是不同的层面。DRAM(DynamicRandomAccessMemory):定义:DRAM是一种随机存取存储器,用于在计算机系统中存储数据和程序。它属于一种动态存储器,意味着需......
  • synchronized原理之Monitor 概念
    Java对象头以32位虚拟机为例普通对象|--------------------------------------------------------------||ObjectHeader(64bits)||------------------------------------|-------------------------||MarkWord(32bits)|KlassWord(32bits)||----------------......
  • 基于rv1126 rkmeida 一路多出 原理
    基于rv1126rkmeida一路多出的坑首先说要的是介绍一下rkmedia相关内容​ RKMedia提供了一种媒体处理方案,可支持应用软件快速开发。RKMedia在各模块基础API上做进一步封装,简化了应用开发难度。该平台支持以下功能:VI(输入视频捕获)、VENC(H.265/H.264/JPEG/MJPEG编码)、VDEC(H.2......
  • MT6785/MT6359/MT6360/MT6186/MT6631 UFS_LPDDR4X原理图
    联发科MT6785核心板是一款高度集成的基带平台,集成了蓝牙、FM、WLAN和GPS模块,旨在支持LTE/LTE-A和C2K智能手机应用。这款芯片采用了两个最高频率可达到2.05GHz的ARM®Cortex-A76核心和六个最高频率可达到2.0GHz的ARM®Cortex-A55核心,搭载ArmMali-G76MC4GPU运行速度可提升至......
  • php 在laravel中集成grpc
    在laravel中集成使用grpc一、安装:1、macOSphp扩展:peclinstallgrpc,peclinstallprotobufprotocbuf:brewinstallprotobufetcd:brewinstalletcd2、ubuntu:php扩展:peclinstallgrpc(如果遇到[Makefile:1038:src/core/lib/comp......