主流RPC框架

dubbo

是阿里巴巴公司开源的一个 Java 高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。dubbo 已经与 12 年年底停止维护升级。总体原理如下:

03_主流RPC框架.png

dubbox

是当当团队基于 dubbo 升级的一个版本。是一个分布式的服务架构,可直接用于生产环境作为 SOA 服务框架。

motan

是新浪微博开源的一个 Java 框架。它诞生的比较晚,起于 2013 年,2016 年 5 月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。

Hessian

基于 HTTP 的远程方法调用,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian 的使用则与 RMI 类似,区别在于淡化了 Registry 的角色,通过显示的地址调用,利用 HessianProxyFactory 根据配置的地址 create 一个代理对象,另外还要引入 Hessian 的 Jar 包。

04_主流RPC框架.png

主流RPC框架对比

Hessian Montan rpcx gRPC Thrift Dubbo Dubbox Spring Cloud
开发语言 跨语言 Java Go 跨语言 跨语言 Java Java Java
分布式(服务治理) × × ×
多序列化框架支持 hessian √(支持Hessian2、Json,可扩展) × 只支持protobuf) ×(thrift格式)
多种注册中心 × × ×
管理中心 × × ×
跨编程语言 ×(支持php client和C server) × × × ×
支持REST × × × × × ×
关注度
上手难度
运维成本
开源机构 Caucho Sina Weibo Apache Google Apache Alibaba Dangdang Apache

上面的 RPC 框架可以分为两类,一类是服务治理类框架,这类框架能够提供包括服务注册、管理中心在内的整套的微服务技术架构支持。典型代表包括 Spring Cloud、Dubbo、Dubbox、Montan。

另外一类 RPC 框架无法提供微服务治理功能,更多的关注于跨语言服务调用,典型代表有 Hessian、 gRPC、 Thrift。

之前公司项目所使用的框架是 Apache 开源 Spring Cloud,该框架支持微服务治理,基于 HTTP 传输协议和 JSON 序列化协议(也可以支持其他),本质上也是 RPC 框架的一种。