我这边没用过 grpc ,之前用过 dubbo ,维护过一个大型 ToB 项目,简直折磨,如果大家都按照规范来,我觉得还好,但是这项目 5 年了,经历了好几代程序员的维护,现在打开都恶心。 后来所有的新项目都搞 Feign 了。但是这个也有点恶心的。最近新开了一个大型项目也是 ToB 。在做技术选型和对比,团队人员目前比较稳定,大概 40 人左右。 想问一下,有没有用 grpc 做过大型项目或维护过这种项目的,有多少坑,坑大小?对比 Feign 好处有哪些。 PS: 别杠,你杠就你对。
1
workqing2023 247 天前
grpc 也好,dubbo 也好,feign 也好,和项目恶心应该关系不大。。。。没啥区别,看公司内部对哪个的支持力度更大一点就好了
|
2
deorth 247 天前 via Android
你说得对
|
3
yannxia 247 天前
滥用都好不到哪里去,因为 API 瞎定义的事情是框架解决不了的。
GRPC 对比 Feign 的好处就是性能好一点,区别也不是很大,其实我觉得项目规模不大的情况下,我喜欢 HTTP ,容易调用。 |
4
lsk569937453 247 天前
grpc 的 protobuf 比 json 啥的占用空间小,传输速度快。所以对性能要求很高的可以用 grpc,其他的 Feign( http 协议+json)就可以了。
|
5
tool2dx 247 天前
不太一样,feign 就只是 HTTP API 的声明,而 grpc 是对于 Protobuf 的封装。
如果你们以前项目里不怎么用 Protobuf ,那用处并不是很大。 |
6
cheng6563 247 天前
性能较高,没了。对于管理比较混沌的团队还是忍着恶心用 Feign 吧
|
7
28Sv0ngQfIE7Yloe 247 天前
|
8
QlanQ 247 天前
区别不是很大,那点性能可能对你的新项目也没多少影响,建议用团队以前用熟悉的
|
10
yeyang5211 247 天前
如果是个咸鱼项目 没多少人用 feign spring 全家桶风险小, 并发大 有异构调用的需要可以考虑 grpc
|
11
Goooooos 247 天前
toB 项目,如果对序列化性能没要求,还是建议 http+json
|
12
pkoukk 247 天前
项目恶心用什么都很恶心
grpc 就是性能高,没啥别的 |
13
bianhui 247 天前
没啥特别突出的地方吧,就是优化了一些 rpc 的诟病吧,比如说序列化(类型? json 也有 Schema 版本),通讯(可以用 http3 ?),开箱即用,性能没有想象那么高,最业界比较公认性能有意的是 facebook 的 Thrift ,坑也挺多的。如果跑在内网可以,跑公网不建议(比如说 udp 国内丢包你懂得),就 json+http 最省心了,或者 Protobuf +http 也行吧。
|
14
datoujiejie221 247 天前
主要 grpc 对多语言支持比较好,如果其他语言比如 python 或者 go 用 feign 调用的话就比较麻烦了
还有就是 grpc 支持流式传输,feign 就不太了解了 |
15
hui9000 OP |
17
justplaymore 247 天前 1
|
18
OMGZui 247 天前
还是继续 Feign 吧
|
19
shilyx 246 天前
gRPC 在 C++环境下尤其烂
污染性很强,完全不如 thrift |
20
Akitora 246 天前
一个是跨语言,一个是自带 schema
|
21
me1onsoda 246 天前
feign 是七层 http 协议,grpc 是四层 tcp 。
对性能来说,那肯定是 rpc 性能好,你见过和哪个中间件通信用 http 的? 易用性可维护性,那还是 feign 这种声明式更好。 |
22
kenvix 246 天前
grpc 恶心是因为 protobuf 恶心,这个玩意生成的代码就是一坨屎,污染整个项目
|
23
lambdaq 246 天前 1
grpc 的好处就是面向简历编程,以及技术选型有「 google 都在用」这个黄金招牌。
你选别的 rpc 方案,出了问题就是你选型的责任; 你选 grpc ,出了问题,那得你们公司反思为啥 google 能你们就不能。 这根 yylx 一样的底层逻辑。 |
24
lambdaq 246 天前
@kenvix u1s1 ,pb 是有好处的。如果写 C 艹 ,没 pb 你会写出来更恶心的代码。
问题就在于 c 艹本来就是个很傻的生态。pb 属于补救,但是别的语言无脑套用 pb 这就纯跟风和巨厂号召力吧。 |
25
hui9000 OP @lambdaq 有道理,后期项目复盘,锅都是自己买的。太惨了,现在 tm 都是这样,有啥事都能把锅甩到技术上,你跟他们解释也解释不通,说白了,人家已经把答案写好了。
|
26
flowerains 246 天前 1
我感觉代码恶心不恶心和人关系很大,和架构关系不大
|
29
coderxy 246 天前
grpc 最大的优点就是有一个好亲爹, 超强背书。
|
31
hui9000 OP @flowerains 软件工程的思想在国内大部分公司都是没有的,基本都不会按照规范写,每个人的理解又不一样。又不是不能跑,要是有一个人在工程里拉了一坨大的,其他人是不会管的,因为谁都是看见屎都想吐。
|
32
jsq2627 246 天前
目前公司用 grpc + thrift ,甩开了 protobuf 的负担,感觉体验良好。
有 schema 对项目长期维护很重要。 跨语言也很重要。因为保不准团队里就有人想用其他语言来写一部分服务。 我公司内主要是 go ,后来陆续引入了 java/python/nodejs ,大家都在 grpc+thrift 下工作良好。thrift 的代码生成效果也不错。 不过缺点是 thrift 生态还是比 protobuf 差了一些。 |