前言
rpc全称Remote Precedure Call,是一种通过网络从计算机程序上请求服务的框架。
服务之间的调用,主要需要考虑到点是:
1、网络协议
2、序列化
3、实现框架
协议
服务之间的调用方式,可以选择走http和tcp。
tcp位于传输层,http位于应用层,所以tcp更快速,更高效。但是http带有的请求信息更完整,和平时前端请求一样。
内网调用足够快,所以http带来的一点效率损耗可以忽略不计。
序列化
常见的序列化协议
xml、protobuf、thrift、fastjson、Jackson
1、XML
优点:XML历史悠久,可读性好,可以指定元素的名称。
缺点:冗余标签太多,传输浪费资源。文件格式复杂,java还需要进行解析。
2、Protobuf
protocol buffers由谷歌开源。它将数据结构以.proto文件进行描述,通过代码生成工具可以生成对应数据结构的POJO对象和Protobuf相关属性方法。
优点:
二进制格式,序列化后码流小,传输性能高。
自动化生成代码,简单易用。
跨语言,可自定义数据结构。(只支持java、C++、Python)
缺