RPC : 远程过程调用 remote produce call
网上解释,直接基于TPC/IP协议 ,效率优于HTTP
疑问1:网上又有很多基于HTTP的RPC框架 , 这个和Rest API有什么区别吗?
疑问2:是不是基于TCP的RPC框架,就等于说客户要使用就要装客户端?
RPC : 远程过程调用 remote produce call
网上解释,直接基于TPC/IP协议 ,效率优于HTTP
疑问1:网上又有很多基于HTTP的RPC框架 , 这个和Rest API有什么区别吗?
疑问2:是不是基于TCP的RPC框架,就等于说客户要使用就要装客户端?
常见序列化协议对比
据我个人的了解(我是菜鸡硕士生,别全信我啊!),适合序列化的协议就是Json、Hessian、protobuf。
Json协议是典型的Key-Value明文协议,用起来相当方便,但是用Json序列化后的空间开销比较大,性能不行。所以Json pass掉。
Hessian是动态类型、二进制、紧凑的、可跨语言移植的一种序列化框架,序列化后的二进制数据比JSON紧凑高效多了。而且Hessian的兼容性和通用性也比较强,所以Hessian也很适合采用。(个人没用过Hessian,都是网上看的段子。)
Protobuf序列化体积比Json和Hessian小很多,序列化和反序列化速度也很快,消息格式升级和兼容性也不错。不过这不意味着Protobuf就一定全方位比Hessian强。还是要看具体场景的,对于具有反射和动态能力的语言来说,protobuf用起来就比较费劲。(关于这一点说法,我个人没有研究过,不是很懂Java)
序列化协议选型问题:
其实序列化协议还挺多的,比如kryo和Message pack,那么在选择序列化协议中需要考虑什么?