这是一个很长的问题,前面有些人说的 json+http 走遍天下,首先对计算机历史而言,json 是一个很新的技术,以前的人就没这玩意可用。再者,很多时候 json 走不遍天下。如果你们公司有 10 种编程语言,用 json 你需要人肉维护 10 种 json 的 struct,如果有类型变化或者字段新增,也需要人肉去维护这个变更,这在大规模 RPC 服务场景下是不太可能的。何况有些字段是 required,靠人力手动在 10 种编程语言里实现这个约束是不现实的。而这个仅仅是序列化层面的事情,
我建议把这几个问题串起来看 RPC 在这几十年中的演变会更加明白其中的意义,最新在写一个 RPC 系列:
https://blog.joway.io/tags/rpc/ ,可以看看序列化和连接这部分,就能够明白为什么 RPC 是一个语言强相关的活,很难用一个语言 implement 走遍天下(现在的 Service Mesh 其实就是想要用一个语言实现走天下)。