(五)Dubbo协议

1.协议类型

Dubbo支持多种协议的注册、也支持协议的扩展,Dubbo默认的协议是Dubbo协议,也是官方建议使用的协议。

Dubbo提供以下几种协议:

  • dubbo协议
  • rmi协议
  • hessian协议
  • http协议
  • webservice协议
  • thrift协议
  • memcached协议
  • redis协议

 

 

1.1、Dubbo协议:(官方建议适用Dubbo协议)

优点:Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
缺点:Dubbo缺省协议不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。

1.2、RMI协议:

优点:RMI协议采用JDK标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式。
缺点:如果正在使用RMI提供服务给外部访问(公司内网环境应该不会有攻击风险),同时应用里依赖了老的common-collections包(dubbo不会依赖这个包,请排查自己的应用有没有使用)的情况下,存在反序列化安全风险。
请检查应用:
将commons-collections3 请升级到3.2.2版本:https://commons.apache.org/proper/commons-collections/release_3_2_2.html
将commons-collections4 请升级到4.1版本:https://commons.apache.org/proper/commons-collections/release_4_1.html
新版本的commons-collections解决了该问题

1.3、hessian协议:

优点:
Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。
Hessian是Caucho开源的一个RPC框架:http://hessian.caucho.com,其通讯效率高于WebService和Java自带的序列化。

1.4、http协议:

基于http表单的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:表单序列化
适用范围:传入传出参数数据包大小混合,提供者比消费者个数多,可用浏览器查看,可用表单或URL传入参数,暂不支持传文件。
适用场景:需同时给应用程序和浏览器JS使用的服务。
优点:采用Spring的HttpInvoker实现
缺点:
协议的端口<dubbo:protocol port="8080" />必须与servlet容器的端口相同,
协议的上下文路径<dubbo:protocol contextpath="foo" />必须与servlet应用的上下文路径相同。

1.5、webservice协议:

基于WebService的远程调用协议。
连接个数:多连接
连接方式:短连接
传输协议:HTTP
传输方式:同步传输
序列化:SOAP文本序列化
适用场景:系统集成,跨语言调用。
 基于CXF的frontend-simple和transports-http实现。
 CXF是Apache开源的一个RPC框架:http://cxf.apache.org,由Xfire和Celtix合并而来 。 

 

2.协议注册

2.1、单协议注册

<!-- 用dubbo协议在20880端口暴露服务 --> 
<dubbo:protocol name="dubbo" port="20881" />
<dubbo:service interface="com.lyh.tea.manager.api.IInfoAPI" ref="infoAPIService" timeout="10000"/>
设置连接时间,在开发调试过程中设置Timeout

2.2、多协议注册

(1) 不同服务不同协议

<!-- 多协议配置 -->
 <dubbo:protocol name="dubbo" port="20880" />
 <dubbo:protocol name="rmi" port="1099" />
 <!-- 使用dubbo协议暴露服务 -->
 <dubbo:service interface="com.alibaba.hello.api.HelloService" version="1.0.0" ref="helloService" protocol="dubbo" />
 <!-- 使用rmi协议暴露服务 -->
 <dubbo:service interface="com.alibaba.hello.api.DemoService" version="1.0.0" ref="demoService" protocol="rmi" />

(2) 多协议暴露服务

  <dubbo:protocol name="dubbo" port="20880" />
  <dubbo:protocol name="hessian" port="8080" />
 <!-- 使用多个协议暴露服务 -->
  <dubbo:service id="helloService" interface="com.alibaba.hello.api.HelloService" version="1.0.0" protocol="dubbo,hessian" />


 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值