概述
Dubbo 允许配置多协议,在不同服务上支持不同协议或者同一服务上同时支持多种协议。
除了dubbo协议外, Dubbo框架还支持另外8种服务暴露协议,如rmi协议、 hessian协议、 http协议、等。不同的协议,有不同的特点,适用不同的场景。一般在实际应用中,默认也是使用最多的是dubbo协议。
各协议的特点
- dubbo协议
- 连接数:单连接
- 连接类型:长连接
- 传输协议: TCP
- 传输方式: NIO异步传输
- 适用范围:传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
- rmi协议
- 连接数:多连接
- 连接类型:短连接
- 传输协议: TCP
- 传输方式: BIO同步传输
- 适用范围:传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。
- hessian协议
- 连接数:多连接
- 连接类型:短连接
- 传输协议: HTTP
- 传输方式: BIO同步传输
- 适用范围:传入传出参数数据包较大,提供者比消费者个数多,提供者抗压能力较大,可传文件。
- http协议
- 连接数:多连接
- 连接类型:短连接
- 传输协议: HTTP
- 传输方式: BIO同步传输
- 适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或 URL传入参数,暂不支持传文件。
- webservice协议
- 连接数:多连接
- 连接类型:短连接
- 传输协议: HTTP
- 传输方式: BIO同步传输
- 适用范围:系统集成,跨语言调用
- thrift协议
Thrift是Facebook捐给 Apache的一个RPC框架,其消息传递采用的协议即为thrift协议。 当前dubbo支持的thrift协议是对thrift原生协议的扩展。 Thrift协议不支持null值的传递。
- memcached协议
高效的KV缓存服务器。可以对传输的数据使用相应的技术进行缓存。
- redis协议
同memcached协议类似。
- rest协议
一般开发具有RESTful风格的服务会使用该协议。
不同服务不同协议
不同服务在性能上适用不同协议进行传输,比如大数据用短连接协议,小数据大并发用长连接协议。此时可以根据需要,将不同的服务通过不同的服务进行曝露。
多协议暴露服务
即一个服务支持多种协议,比如可以使用dubbo和rmi协议曝露同一个服务
总结
在Dubbo中,一个服务可以支持多种协议,不同的服务可以使用不同的协议。不同的协议,有不同的特点,适用不同的场景,默认情况下dubbo协议使用的比较多,但应根据项目需求,进行灵活配置。