框架功能比较
功能 |
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 |
Weibo |
Apache |
Google |
Apache |
Alibaba |
Dangdang |
Apache |
实际场景中选择
- Spring Cloud : Spring 全家桶,用起来很舒服,只有你想不到,没有它做不到。可惜因为发布的比较晚,国内还没出现比较成功的案例,大部分都是试水,不过毕竟有 Spring 作背景,还是比较看好。
- Dubbox:相对于 Dubbo 支持了 REST,估计是很多公司选择 Dubbox 的一个重要原因之一,但如果使用 Dubbo 的 RPC 调用方式,服务间仍然会存在 API 强依赖,各有利弊,懂的取舍吧。
- Thrift: 如果你比较高冷,完全可以基于 Thrift 自己搞一套抽象的自定义框架吧。
- Montan:可能因为出来的比较晚,目前除了新浪微博 16 年初发布的,
- Hessian:如果是初创公司或系统数量还没有超过 5 个,推荐选择这个,毕竟在开发速度、运维成本、上手难度等都是比较轻量、简单的,即使在以后迁移至 SOA,也是无缝迁移。
- rpcx/gRPC:在服务没有出现严重性能的问题下,或技术栈没有变更的情况下,可能一直不会引入,即使引入也只是小部分模块优化使用。