gRPC Ecosystem 初探

news2025/7/20 14:39:43

grpc是目前使用很广泛的远程过程调用库,在使用过程中,我们通常会使用protoc命令将proto文件转成特定的代码进行使用。那一些复杂点的应用有没有可以支撑的工具或类库呢。

前段时间在进行自定义grpc tls证书认证的过程中,知道了有一个github项目,叫gRPC Ecosystemhttps://github.com/grpc-ecosystem

这个项目里提供了很多和grpc相关的支撑库,今天去了解了大概,写一篇文章记录一下,方便有需要的同学可以按图索骥。

项目名称所属分类开发语言Star数量介绍
grpc-ecosystem/grpc-gateway网关服务Go15000+

gRPC到JSON网关

该库为生成器,也就是通过proto在生成grpc服务器的同时,生成一个json的网关程序

同时,该生成器还会生成openapiv2版本的网关功能描述文件

grpc-ecosystem/grpc-health-probe健康探测服务  Go1200+

A command-line tool to perform health-checks for gRPC applications in Kubernetes etc.

该客户端主要是探测gRPC服务的健康度,依循GRPC Health Checking Protocol​​

按介绍的说法,使用的前提是服务器段要是实现该协议的服务器。 

grpc-ecosystem/protoc-gen-grpc-gateway-ts网关服务

Go(实现语言)

Typescript(目标语言)

102

 protoc-gen-grpc-gateway-ts is a Typescript client generator for the grpc-gateway project. It generates idiomatic Typescript clients that connect the web frontend and golang backend fronted by grpc-gateway. 

和第一个Gateway项目配合的Typescript版本的客户端的生成器。

有点绕,就是说生成的客户端的语言是Typescript,生成器本身是Go

本质是一种代码生成器,生成的Typescript库可以直接引用,并对外暴露gRpc描述的函数方法。

grpc-ecosystem/go-grpc-middleware扩展支持库Go5200+

Golang gRPC Middlewares: interceptor chaining, auth, logging, retries and more. (github.com)

为grpc服务器提供增强功能的扩展库,使用后,会方便TLS客户端认证等服务器高级使用的体验感,这个库应该对grpc开发会比较有帮助。

具体功能见附录1

grpc-ecosystem/grpcdebug调试工具Go59一个命令行的调试工具,关注人较少,和第二个类似,也需要服务器端整合到代码里一个服务器端,这个工具作为一个客户端,连接后,获得服务端的调试信息
grpc-ecosystem/java-grpc-prometheus扩展支持库Java212

Java interceptors which can be used to monitor Grpc services using Prometheus. (github.com)

和gRPC java实现相配合的Prometheus日志整合库

grpc-ecosystem/awesome-grpc样例多种6200+学习资料库
GitHub - grpc-ecosystem/grpc-httpjson-transcoding网关服务C++143另一个C写的提供JSON网关的库,Star数量很少,要配合istio使用,看起来用的人不多
grpc-ecosystem/polyglot通用客户端Java10一个采用Java的通用grpc客户端实现,奇怪,干嘛不用go
更多用处不大的库列表见此,gRPC Ecosystem (github.com)

这里面第一个gRPC JSON Gateway应该是用处比较大的一个了,如果需要直接把gRPC服务作为常见API服务提供给用户的话,可以使用。

另外就是Middlewares在自定义认证,扩展日志功能等方面用处较大,自定义认证主要是面向采用TLS进行客户端认证的gRPC服务,如果需要对客户端证书进行自定义的认证过程,或者采用http basic auth等方式进行客户端认证,会需要用到这个库提供的功能,再进行二次开发。

而扩展日志引用后,会把grpc内部流程进行日志的存储,对于方便调试错误用户较大。

附录1:go-grpc-middleware主要功能项

Auth

  • grpc_auth - 用于自定义认证过程的帮助库

Logging

  • grpc_ctxtags - 在Content种增加一个Tag,用于增强信息交换
  • grpc_zap - zap 日志集成.
  • grpc_logrus -  logrus 日志集成
  • grpc_kit -  integration of go-kit/log 日志集成
  • grpc_grpc_logsettable - 一个运行运行时替换日志器的封装库

Monitoring

  • grpc_prometheus⚡ - Prometheus 监控集成
  • otgrpc⚡ - OpenTracing 监控集成
  • grpc_opentracing - OpenTracing 监控集成
  • otelgrpc - OpenTelemetry 监控集成

Client

  • grpc_retry - 客户端重试机制的辅助类(grpc客户端确实有必要实现重试,因为并不能保证100%成功,且失败后因为grpc封装较深,不太好追踪)

Server

  • grpc_validator - 检验器
  • grpc_recovery - gRPC失败恢复机制(避免panic)
  • ratelimit - grpc限速

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

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

相关文章

【重庆邮电大学协办】2023年第六届数据挖掘与知识发现国际会议(DMKD 2023)

【重庆邮电大学协办】2023年第六届数据挖掘与知识发现国际会议(DMKD 2023) 重要信息 会议网址:www.icdmkd.org 会议时间:2023年6月24-26日 召开地点:中国-重庆 截稿时间:2023年5月24日 录用通知:投稿后2周内 收录…

测试部门来了个99年的卷王之王,老油条感叹真干不过,但是...

在程序员职场上,什么样的人最让人反感呢? 是技术不好的人吗?并不是。技术不好的同事,我们可以帮他。 是技术太强的人吗?也不是。技术很强的同事,可遇不可求,向他学习还来不及呢。 真正让人反感的,是技术平平&…

实战-缓存数据一致+binlog初始+cannel监听+数据迁移,数据一致性架构设计

前言 一. 解决缓存不命中(高并发操作击穿打挂DB的风险) 当并发量打的时候,当我们的缓存过期时,就算到数据库的比例偏小的时候,我们的请求时比较大的。那也会存在数据库崩掉的情况。解决方案想法如下(总体…

电商共享购模式,消费增值返利,app开发

在当今以市场需求为主导的数字经济时代,消费者需求呈现出精细化管理和多元化的特性,目标市场日渐完善,另外在大数据技术迅速进步和运用的驱动下,总体行业的发展节奏感也在不断加速。因而,企业需要建立一套灵活多变的经…

【Leedcode】数据结构中链表必备的面试题(第五期)

【Leedcode】数据结构中链表必备的面试题(第五期) 文章目录【Leedcode】数据结构中链表必备的面试题(第五期)1.题目2.思路图解(1)第一步:复制每一个结点,插入到原结点和下一个结点之…

OAK相机如何将yolox模型转换成blob格式?(0.1.1pre 及之后版本)

编辑:OAK中国 首发:oakchina.cn 喜欢的话,请多多👍⭐️✍ 内容可能会不定期更新,官网内容都是最新的,请查看首发地址链接。 ▌前言 Hello,大家好,这里是OAK中国,我是助手…

新能源充电桩控制板迭代升级,打开充电桩行业发展新机遇

作为新能源汽车可持续发展的关键因素,充电桩的基础建设和完善一直备受关注。伴随着新能源汽车充电桩规模的扩大和停车位的增加,传统的充电桩控制板已经无法满足人们的充电需求,同时急需加强对新能源汽车充电桩的有效管理,新能源充…

Kali Linux使用Metasploit生成木马入侵安卓系统

额,这是我最后一篇文章了,周一我们开学了 文章目录前言一、Metasploit是什么?演示环境二、生成可执行木马文件1.生成2.运行命令并生成木马配置参数入侵安卓手机命令1.查看对方手机系统信息查看对方手机安装哪些app文件总结前言 前言&#xf…

Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙

Sophos Firewall OS (SFOS) 19.5 MR1 - 同步下一代防火墙 请访问原文链接:https://sysin.org/blog/sfos-19-5/,查看最新版。原创作品,转载请保留出处。 作者主页:www.sysin.org Sophos Firewall v19.5 现已推出 Sophos Firewall…

H5视频上传与播放

背景 需求场景: 后台管理系统: (1)配置中支持上传视频、上传成功后封面缩略图展示,点击后自动播放视频; (2)配置中支持上传多个文件; 前台系统: &#…

游戏增长专题-构建游戏分析技术Game Analytic Pipeline与量江湖分享

文章目录亚马逊云科技游戏孵化营-游戏增长主题从事数据分析的起因加入游戏孵化营构建游戏分析技术Game Analytic Pipeline游戏公司的数据分析需求需要收集的数据游戏数据分类Game Analytics Pipline解决方案Game Analytics Pipline演示量江湖 CEO 赵晔 分享专题总结亚马逊云科技…

vue前端项目分享facebook、twitter、linkedin

背景 如果你FaceBook和twitter的分享机制就知道,当你分享数据到他们的网站,会有爬虫机器人一直在读取并解析你的数据(meta里面的),所以怎么让你的meta数据被抓到? 问题 Vue的页面公用一个HTML&#xff0…

Golang学习Day2

Go语言中的函数go语言中函数特性go语言有三种函数:普通函数、匿名函数(没有名称的函数)方法(定义在struct上的函数)。receivergo语言中不运算函数重载(overload),也就是说不允许函数…

Vulnhub靶场----7、DC-7

文章目录一、环境搭建二、渗透流程三、思路总结一、环境搭建 DC-7下载地址:https://download.vulnhub.com/dc/DC-7.zip kali:192.168.144.148 DC-7:192.168.144.155 二、渗透流程 nmap -T5 -A -p- -sV -sT 192.168.144.155思路: …

【Opencv项目实战】目标检测:自动检测出现的所有动态目标

文章目录一、项目思路二、算法详解2.1、计算两个数组或数组与标量之间的每个元素的绝对差。2.2、轮廓检测 绘制物体轮廓 绘制矩阵轮廓2.3、连续窗口显示2.4、读取视频,显示视频,保存视频三、项目实战:实时动态目标检测实时动态目标检测一、…

[蓝桥杯 2018 省 A] 付账问题 贪心题

几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出…

Joomla未授权访问漏洞(CVE-2023-23752)

漏洞简介 ​ 在 Joomla! 版本为4.0.0 到 4.2.7中发现了一个漏洞&#xff0c;在Joomla受影响的版本中由于对Web服务端点的访问限制不当&#xff0c;远程攻击者可以绕过安全限制获得Web应用程序敏感信息。 影响版本 4.0.0 < Joomla < 4.2.7 环境搭建 文件下载地址 ht…

Python 函数式编程

函数式编程&#xff1a;允许把函数本身作为参数传入另一个函数&#xff0c;还允许返回一个函数&#xff01; 1.高阶函数 一个函数可以接收另一个函数作为参数&#xff0c;这种函数称之为高阶函数 abs(-10) 是函数调用 abs是函数本身 abs函数名其实是一个变量名 变量可以…

C++基础入门丨8. 结构体——还需要知道这些

Author&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…

SpringCloud - Nacos注册发现

目录 服务注册到Nacos 服务分级存储模型 NacosRule负载均衡 服务实例的权重设置 环境隔离 Nacos与Eureka的对比 添加Nacos配置 微服务配置拉取 配置热更新 多环境配置共享 服务注册到Nacos 1.在父工程引入SpringCloudAlibaba的依赖 2.注释掉order-service和user-ser…