到目前为止,咱们讲了四种RPC,分别是ONC RPC、基于XML的SOAP、基于JSON的RESTful和Hessian2。
通过学习,我们知道,二进制的传输性能好,文本类的传输性能差一些;二进制的难以跨语言,文本类的可以跨语言;要写协议文件的严谨一些,不写协议文件的灵活一些。虽然都有服务发现机制,有的可以进行服务治理,有的则没有。
我们也看到了RPC从最初的客户端服务器模式,最终演进到微服务。对于RPC框架的要求越来越多了,具体有哪些要求呢?
-
首先,传输性能很重要。因为服务之间的调用如此频繁了,还是二进制的越快越好。
-
其次,跨语言很重要。因为服务多了,什么语言写成的都有,而且不同的场景适宜用不同的语言,不能一个语言走到底。
-
最好既严谨又灵活,添加个字段不用重新编译和发布程序。
-
最好既有服务发现,也有服务治理,就像Dubbo和Spring Cloud一样。
Protocol Buffers
这是要多快好省地建设社会主义啊。理想还是要有的嘛,这里我就来介绍一个向“理想”迈进的GRPC。
GRPC首先满足二进制和跨语言这两条,二