spring cloud和普通rpc框架的区别
补了一部分,后续再补
背景
其实本文标题有点不对,Spring Cloud也是一种RPC框架,但是区别是它使用的是http协议的传输,整体技术和普通RPC如dubbo/thrift有很大区别,所以一般会分开说。但实际上比如美团的pigeon类似于dubbo,但是它也是支持http协议调用的。
什么是RPC
名称解释是:Remote Procedure Call。一般市场上如阿里的dubbo,点评的pigeon,谷歌的thrift,都是普通意义上的RPC框架。那RPC框架的作用是什么呢?RPC要解决的两个问题:
- 解决分布式系统中,服务之间的调用问题。
- 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。
首先来一张RPC的整体架构图:
下面,我们来梳理以下,RPC框架的必备条件。
传输协议
SpringCloud:http
序列化
注册中心
服务路由
负载均衡
IO框架
心跳机制
服务鉴权
服务隔离
服务治理
监控埋点
项目 | thrift | SpringCloud | dubbo | gRPC |
---|---|---|---|---|
代码规范 | 基于thrift的IDL生成代码 | 基于JAX-RS规范 | 无代码入侵 | 基于.Proto生成代码 |
通讯协议 | TCP | HTTP | TCP | HTTP/2 |
序列化协议 | thrift | JSON | 多协议支持,默认hessian | protobuf |
IO框架 | ||||
负载均衡 | ||||
跨语言 | ||||
可扩展性 | ||||