grpc gateway 存在的意义是什么

80 天前
 chaleaochexist

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

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

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

谢谢.

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

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

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

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


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

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

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

https://www.v2ex.com/t/1151388

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

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

© 2021 V2EX