rpc框架选型主要考虑因素:
1.I/O调度模型
同步阻塞I/O(BIO)还是非阻塞I/O(NIO)
2.序列化框架
3.线程调度模型
4.承载通道的通讯协议
1.dubbo框架
dubbo阿里巴巴公司开源的一个Java高性能优秀的服务框架,
dubbo协议:
连接个数:单连接
连接方式:长连接
传输协议:TCP
传输方式:NIO异步传输
序列化:Hessian二进制序列化
2.springCloud
springCloud是http协议的rest api传输
json 格式传输
3.dubbo 和 springCloud 对比
1.dubbo tcp协议基于二进制传输消耗带宽小。springCloud基于http的restApi json格式传输 占用带宽大。
2.dubbo 基本停止维护但是社区强大,中文文档和案例丰富。springCloud 比较新生,中文文档和案例少。
3.dubbo主要是服务治理的组件,但是springCloud具备微服务的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 | Apache | Apache | Alibaba | Dangdang | Apache |