服务间通信三巨头:Feign vs Dubbo vs gRPC——10,000 并发实测
引言 系统拆成微服务后第一个要回答的问题就是:服务之间怎么调? 这个选择 90% 的团队是在"沿用上一代的习惯"中度过的——Java 老项目接着用 Dubbo,Spring Cloud 全家桶自然 Feign,新起的多语言团队上 gRPC。但真到大促压测时,选型的差异会以三个维度同时砸到你脸上:一个下单接口拆成"订单调库存"两段后,吞吐掉了 40%——这 40% 是消耗在了网络、序列化还是连接管理上?换一个框架能追回来多少? 带着这个真实场景的问题,我们做了一次严格对照的压测:同一套业务接口(扣减库存),用 Feign、Dubbo、gRPC 三种方式各实现一遍,在同一台机器、同一套 JMeter 10,000 并发口径下跑。这篇文章完整记录测试方法、数据、三个框架各自的胜场与代价,最后给一张选型决策表。 一、三位选手速览 1.1 一句话定位 框架一句话定位本质协议 FeignHTTP 声明式客户端,Spring Cloud 标配,写接口像调本地方法HTTP/1.1 + JSON Dubbo阿里出品的高性能 RPC 框架,TCP 长连接 + 自定义序列化TCP + Dubbo ....