是阿里巴巴公司开源的一个 Java 高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。dubbo 已经与 12 年年底停止维护升级。总体原理如下:
是当当团队基于 dubbo 升级的一个版本。是一个分布式的服务架构,可直接用于生产环境作为 SOA 服务框架。
是新浪微博开源的一个 Java 框架。它诞生的比较晚,起于 2013 年,2016 年 5 月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。
基于 HTTP 的远程方法调用,在性能方面还不够完美,负载均衡和失效转移依赖于应用的负载均衡器,Hessian 的使用则与 RMI 类似,区别在于淡化了 Registry 的角色,通过显示的地址调用,利用 HessianProxyFactory 根据配置的地址 create 一个代理对象,另外还要引入 Hessian 的 Jar 包。
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 | Apache | Alibaba | Dangdang | Apache |
上面的 RPC 框架可以分为两类,一类是服务治理类框架,这类框架能够提供包括服务注册、管理中心在内的整套的微服务技术架构支持。典型代表包括 Spring Cloud、Dubbo、Dubbox、Montan。
另外一类 RPC 框架无法提供微服务治理功能,更多的关注于跨语言服务调用,典型代表有 Hessian、 gRPC、 Thrift。
之前公司项目所使用的框架是 Apache 开源 Spring Cloud,该框架支持微服务治理,基于 HTTP 传输协议和 JSON 序列化协议(也可以支持其他),本质上也是 RPC 框架的一种。