grpc gateway 存在的意义是什么

4 天前
 chaleaochexist

AI 的回答不能让我信服. 它总是在强调, 大项目 vs 小项目, 以及灵活性等等.

我想知道它存在的真正的, 实际的意义是什么? 或者说,我为什么要为一个 api 提供两种协议?

在譬如, 为了给浏览器使用? 为什么不单独写一个 BFF 层. 本来 grpc 服务就是给内部使用的.

谢谢.

2403 次点击
所在节点    程序员
23 条回复
seth19960929
4 天前
一套代码两套运行机制, 比如团队里对 GRPC 很熟悉, 并且基于此搭建了整套服务, (甚至可能客户端和服务端通信使用 rpc)

这时候三方想要和你们合作, 给你们 1kw, 让你们暴露 HTTP 接口分享资源给他们, 直接开发一套 HTTP 肯定麻烦, 直接用 grpc-gateway 包装一层, 写文档给他们用
chaleaochexist
4 天前
@seth19960929 你这个假设不太实际啊, 真给我 1kw 我绝逼单独开发一套...保准让客户满意.
seth19960929
4 天前
@chaleaochexist 太真实存在了, 单独开发一套绝对不是这么简单的
1. 项目太复杂, 老项目已经运行了好几年
2. 时间太赶, 需求方要你下周提供
3. 1kw 给的不是你, 给的是公司, 你只需要提供最快的实现方式
mooyo
4 天前
@chaleaochexist 你再单独开发一套,是不是就同时维护了两份代码?有考虑过可维护性么?

而且,即使团队想全用 GRPC ,也不可避免地会遇到只能使用 HTTP 的场景,比如内网用 lua 调用接口
seth19960929
4 天前
本质就是一套代码, 提供两种调用方式,
你所说的 BFF, 是指启一个 HTTP 服务, 然后内部连接 rpc, 代理一层?
那你为何这样做, grpc-gateway 就是这样的一个标准解决方案
chaleaochexist
4 天前
@seth19960929 代理一层 是因为 rpc 提供的服务是不考虑 客户端实际场景的, 是站在自己人内部调用的角度.

如果是考虑外部调用的话, 我就不会用 grpc 了. 不知道我表达的是否清晰.
chaleaochexist
4 天前
@seth19960929 或者说为什么会有人一开始用 grpc 开发一套系统给外部调用?
chaleaochexist
4 天前
@mooyo 有道理!!!
seth19960929
4 天前
@chaleaochexist #6 你搜一下, 挺多物联网用的, 我认识的一个做儿童音箱的公司就在用
fuzzsh
4 天前
不用 gateway ,你让切图仔直接传 protobuf ?
AoEiuV020JP
4 天前
我也纠结,如果一开始就有支持 web 的需求,是不是不应该选择 grpc ,
如果不需要流式的话直接 jsonrpc 还简单方便,
有什么方案支持 web 还支持流式常用的?
akira
4 天前
为了偷懒省事啊
chaleaochexist
4 天前
@fuzzsh 下载前端早就不是切图仔了, 用 json-web
另外如果是和前端配合, 后端一开始就不可能用 grpc.


@seth19960929 大佬你指的是哪句话 "挺多物联网用的(什么?),"
chaleaochexist
4 天前
下载 --> 现在
json-web --> grpc-web
seth19960929
4 天前
@chaleaochexist #13 可能没表达清楚, 你说 rpc 只在内部使用, 物联网公司有在用, 音箱(客户端)和服务端通信用的 rpc
roundgis
4 天前
@seth19960929 音箱內置一個單片機?
chaleaochexist
4 天前
@seth19960929 明白, 所以当后续有新的第三方需要 http 的场景的时候, 就是 grpc-gateway 大放光彩的时候了?

受教, 多谢.
seth19960929
4 天前
@roundgis 普通音箱我不太了解, 做的是智能音箱
@chaleaochexist #17 我 #1 楼的回答就差不多是这个意思
COW
4 天前
@chaleaochexist grpc-gateway 应该保持轻量,只做协议转换,看中的是高兼容性,bff 更强调的 API 聚合能力,当然 bff 里也可以做协议转换,但两者不冲突。
skiy
4 天前
协议定好。服务治理方便。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1151388

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX