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