工作中你会使用到 grpcurl 吗?

简介: 工作中你会使用到 grpcurl 吗?

在平时的开发过程中,我们一般是 http 接口对外, grpc 接口对内部微服务

相信对于如何去请求 http 接口,大家都很熟悉了

  • 如果是 inux 里面使用 curl 命令
  • 在 windows 里面我们可以使用 postman 来请求接口
  • 如果对于一个云上开发的接口的话,我们可能会使用 apifox 来进行请求

那么对于 grpc 服务端提供的接口,我们一般会如何去请求这些接口来自测呢

  • Windows 里面我们可以使用 bloomRPC 工具
  • Linux 里面我们可以使用 grpcurl 工具

DEMO

关于 grpc 的基本知识,感兴趣的可以查看历史文章:

那么我们写一个 demo,一个 grpc 的服务端,提供如下接口

  • 查询租户的详情
  • 查询租户的列表

Demo 目录结构如下:

咱们的 proto 文件可以是这样的:

protoc --go_out=. --go_opt=paths=source_relative --go-grpc_out=. --go-grpc_opt=paths=source_relative tenant.proto

基本简单的代码实现如下:

rpc_services.go 代码如下

这个时候启动咱们的服务端,如何运行 golang 程序就不赘述了

bloomRPC 工具

开始来下载 bloomRPC 工具

对于 bloomRPC 工具,我们可以在这个地址里面去下载,自由选择:

下载安装之后,我们可以看到 bloomRPC 是如下这个界面,非常清爽

导入咱们的 tenant.proto 文件后,可以看到咱们服务端提供的如下两个接口:

  • get_tenant_detail
  • get_tenant_list

这个时候,咱们就可以使用 bloomRPC 工具,请求咱们服务端的接口了,效果如下:

获取租户详情

获取租户列表

Windows 的工具比较简单,我们来看看 linux 里面的 grpcurl 工具

grpcurl 工具

grpcurl 是linux 里面与grpc服务器交互的命令行工具,咱们就可以理解是 curl 工具的 grpc 版本

使用 grpcurl 工具,我们需要在咱们的代码实现中给我们的 grpc 服务端注册一下 reflection

  • 先来看看 grpcurl 工具的安装
go get github.com/fullstorydev/grpcurl
go install github.com/fullstorydev/grpcurl/cmd/grpcurl@latest
  • 然后在我们上述的 rpc_services.go 代码中,注册 reflection

  • 效果验证

这个时候,咱们将上述的 rpc_tool_demo 整个项目放到 linux 中进行运行,启动服务端,当然我的 demo 中 grpc 服务端监听的是 8888 端口,如果咱们 linux 环境这个端口已经被占用了,可以自行更换端口

以本 demo 为例

查看服务列表

grpcurl -plaintext localhost:8899 list

查看指定服务的接口列表

grpcurl -plaintext localhost:8899 list tenant.Tenant

查看某一个 rpc 接口的实际情况

grpcurl -plaintext localhost:8899 describe tenant.Tenant.get_tenant_detail

查看具体某一个结构体的详情

grpcurl -plaintext localhost:8899 describe .tenant.TenantDetailRsp

使用 grpcurl 请求 grpc 服务端的接口

对于 grpcurl 的其他奇淫巧技可以查看帮助清单

grpcurl -h

如果需要查看 demo 源码,可以进入地址:https://github.com/qingconglaixueit/rpc_tool_demo

至此,本篇内容结束

【欢迎查看历史文章】

感谢阅读,欢迎交流,点个赞,关注一波 再走吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

可以进入地址进行体验和学习:https://xxetb.xet.tech/s/3lucCI

目录
打赏
0
0
0
0
64
分享
相关文章
Linux C/C++之IO多路复用(aio)
这篇文章介绍了Linux中IO多路复用技术epoll和异步IO技术aio的区别、执行过程、编程模型以及具体的编程实现方式。
361 1
Linux C/C++之IO多路复用(aio)
无头浏览器与请求签名技术
本文分享了在面对Cloudflare防护(如Amazon网站)时,如何通过无头浏览器、请求签名技术和爬虫代理IP实现数据采集的故障排查与改进方案。首先,介绍了从常规请求失败到引入Selenium无头浏览器的过程,解决了Cookie和User-Agent检测问题。接着,通过生成请求签名绕过二次验证,并利用代理IP规避访问风险。最后,提出了架构改进方案,包括无头浏览器集群化、签名算法优化、代理池管理和多层次容错机制,以提高系统的稳定性和扩展性。示例代码展示了如何设置代理、获取Cookie并生成签名,成功采集商品信息。
147 6
无头浏览器与请求签名技术
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
Java面试题:如何通过JVM参数调整GC行为以优化应用性能?如何使用synchronized和volatile关键字解决并发问题?如何使用ConcurrentHashMap实现线程安全的缓存?
132 0
ads 明细表模型
【8月更文挑战第13天】
177 1
京东双十一高并发场景下的分布式锁性能优化
【10月更文挑战第20天】在电商领域,尤其是像京东双十一这样的大促活动,系统需要处理极高的并发请求。这些请求往往涉及库存的查询和更新,如果处理不当,很容易出现库存超卖、数据不一致等问题。
207 1
【IntelliJ IDEA】UTF-8编码下\u7528\u6237转换为中文汉字,\u9489\u9489\u81EA\u5B9A\u4E49\(Unicode字符与中文的相互转化)
【IntelliJ IDEA】UTF-8编码下\u7528\u6237转换为中文汉字,\u9489\u9489\u81EA\u5B9A\u4E49\(Unicode字符与中文的相互转化)
1258 0
Kafka消息队列原理及应用详解
【5月更文挑战第6天】Apache Kafka是高性能的分布式消息队列,常用于实时数据管道和流应用。它提供高性能、持久化、分布式和可伸缩的消息处理,支持解耦、异步通信和流量控制。Kafka的核心概念包括Broker、Topic、Partition、Producer、Consumer和Consumer Group。其特点是高吞吐、低延迟、数据持久化、分布式架构和容错性。常见应用包括实时数据流处理、日志收集、消息传递和系统间数据交换。
Linux - 记录问题:怎么通过安装包的方式安装gRPC
Linux - 记录问题:怎么通过安装包的方式安装gRPC
202 1
浅析Spring中Bean的作用域及它们之间的区别?
在Spring中Bean的作用域是指Bean实例的生命周期及其可见范围。并提供了以下5种标准作用域:singleton、prototype、request、session、global session。
特征平台(Feature Store):您需要知道的关于特征平台的一切信息(Continuous)
特征平台已于 2021 年问世,成为实现 AI 的一项重要技术。 尽管高科技公司对特征平台充满热情,但大多数传统 ML 平台仍然缺少它们,并且在许多企业公司中相对不为人知。在这里,我们将介绍特征平台的常见功能,以及在你自己的工作中采用这种方法的利弊。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问