RPC调用和TCP调用的区别
RPC(远程过程调用)和 TCP(传输控制协议)不在同一个层次上
TCP 是传输层协议(负责“怎么把数据可靠地送到”)。
RPC 是应用层的调用范式(负责“怎么让远程调用像本地调用一样”)。
面试或项目中常说的“TCP调用”和“RPC调用”,通常是指下面这两种工程实践的区别:
对比维度 原生 TCP 通信(裸Socket) RPC 框架调用(如 Dubbo/gRPC)
开发效率 极低。需要手写解析器,改个字段要重启整个服务。 极高。只需定义 .proto 或 Java Interface,自动生成桩代码。
服务发现 需硬编码 IP+Port,或自己搭注册中心(极其复杂)。 自带服务注册与发现(如 Nacos、Consul),调用方只需知道“服务名”。
负载均衡 需自己实现轮询/随机算法。 框架内置(如权重、一致性哈希),可插拔。
容错处理 需自己处理超时、重试、熔断。 框架提供现成的降级、重试、超时控制。
适用场景 游戏网关、音视频流传输、极端性能要求下的定制协议。 99% 的微服务业务系统(订单、支付、用户中心)。
TCP 是给你一辆手动挡汽车,方向、离合、刹车全得你自己控制,哪里都能去,但开起来累。
RPC 是给你一辆带自动驾驶的出租车,你只需告诉它“去哪里”(调哪个方法),它自动规划路线(寻址)、遵守交通规则(协议)、遇到堵车自动绕行(熔断降级)。

浙公网安备 33010602011771号