当前位置:   article > 正文

Dubbo学习总结(三)配置_dubbo:reference中url配置

dubbo:reference中url配置

1.schema说明:

  •  dubbo:service:服务提供者暴露服务配置。对应的配置类:org.apache.dubbo.config.ServiceConfig
  • dubbo:reference:服务消费者引用服务配置。对应的配置类: org.apache.dubbo.config.ReferenceConfig
  • dubbo:protocol:服务提供者协议配置。对应的配置类: org.apache.dubbo.config.ProtocolConfig。同时,如果需要支持多协议,可以声明多个 <dubbo:protocol> 标签,并在 <dubbo:service> 中通过 protocol 属性指定使用的协议。
  • dubbo:registry:注册中心配置。对应的配置类: org.apache.dubbo.config.RegistryConfig。同时如果有多个不同的注册中心,可以声明多个 <dubbo:registry> 标签,并在 <dubbo:service> 或 <dubbo:reference> 的 registry 属性指定使用的注册中心。
  • dubbo:monitor:监控中心配置。对应的配置类: org.apache.dubbo.config.MonitorConfig
  • dubbo:application:应用信息配置。对应的配置类:org.apache.dubbo.config.ApplicationConfig
  • dubbo:module:模块信息配置。对应的配置类 org.apache.dubbo.config.ModuleConfig
  • dubbo:provider:服务提供者缺省值配置。对应的配置类: org.apache.dubbo.config.ProviderConfig。同时该标签为 <dubbo:service> 和 <dubbo:protocol> 标签的缺省值设置。
  • dubbo:consumer:服务消费者缺省值配置。配置类: org.apache.dubbo.config.ConsumerConfig 。同时该标签为 <dubbo:reference> 标签的缺省值设置。
  • dubbo:method:方法级配置。对应的配置类: org.apache.dubbo.config.MethodConfig。同时该标签为 <dubbo:service> 或 <dubbo:reference> 的子标签,用于控制到方法级。
  • dubbo:argument:方法参数配置。对应的配置类: org.apache.dubbo.config.ArgumentConfig。该标签为 <dubbo:method> 的子标签,用于方法参数的特征描述。
  • dubbo:parameter:选项参数配置。对应的配置类:java.util.Map。同时该标签为<dubbo:protocol><dubbo:service><dubbo:provider><dubbo:reference><dubbo:consumer>的子标签,用于配置自定义参数,该配置项将作为扩展点设置自定义参数使用。

dubbo提供了多个配置:xml API  注解 属性。

项目中注解配置用的比较多点:

@Service----> 暴露服务  org.apache.dubbo.config.annotation.Service

@DubboComponentScan(basePackages = "接口所在的包路径") 

@Reference ---> org.apache.dubbo.config.annotation.Reference

2.配置原则

    

JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。

2.1重试次数

失败自动切换,当出现失败,重试其它服务器,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。

  1. 重试次数配置如下:
  2. <dubbo:service retries="2" />
  3. <dubbo:reference retries="2" />
  4. <dubbo:reference>
  5. <dubbo:method name="findFoo" retries="2" />
  6. </dubbo:reference>

2.2超时时间

由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间。

消费端:

  1. 全局超时配置
  2. <dubbo:consumer timeout="5000" />
  3. 指定接口以及特定方法超时配置
  4. <dubbo:reference interface="com.foo.BarService" timeout="2000">
  5. <dubbo:method name="sayHello" timeout="3000" />
  6. </dubbo:reference>

服务端:

  1. 全局超时配置
  2. <dubbo:provider timeout="5000" />
  3. 指定接口以及特定方法超时配置
  4. <dubbo:provider interface="com.foo.BarService" timeout="2000">
  5. <dubbo:method name="sayHello" timeout="3000" />
  6. </dubbo:provider>

2.3版本号

当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。

可以按照以下的步骤进行版本迁移:

在低压力时间段,先升级一半提供者为新版本

再将所有消费者升级为新版本

然后将剩下的一半提供者升级为新版本

 

  1. 老版本服务提供者配置:
  2. <dubbo:service interface="com.foo.BarService" version="1.0.0" />
  3. 新版本服务提供者配置:
  4. <dubbo:service interface="com.foo.BarService" version="2.0.0" />
  5. 老版本服务消费者配置:
  6. <dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />
  7. 新版本服务消费者配置:
  8. <dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />
  9. 如果不需要区分版本,可以按照以下的方式配置:
  10. <dubbo:reference id="barService" interface="com.foo.BarService" version="*" />

dubbo推荐在Provider上尽量多配置Consumer端属性:

1、作服务的提供者,比服务使用方更清楚服务性能参数,如调用的超时时间,合理的重试次数,等等
2、在Provider配置后,Consumer不配置则会使用Provider的配置值,即Provider配置可以作为Consumer的缺省值。否则,Consumer会使用Consumer端的全局设置,这对于Provider不可控的,并且往往是不合理的.

配置的覆盖规则:
1. 方法级优先,接口级次之,全局配置再次之。
2.如果级别一样,则消费方优先,提供方次之, 
Consumer 端配置优于 Provider 配置,优于全局配置,最后是Dubbo 硬编码的配置值.
3.服务提供方配置,通过
URL 经由注册中心传递给消费方。
建议由服务
提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。

3.协议说明

协议说明
dubbo://单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况
rmi://JDK 标准的 java.rmi.* 实现,采用阻塞式短连接和 JDK 标准序列化方式
hessian://集成 Hessian 的服务,Hessian 底层采用 Http 通讯,采用 Servlet 暴露服务,Dubbo 缺省内嵌 Jetty 作为服务器实现
http://基于 HTTP 表单的远程调用协议,采用 Spring 的 HttpInvoker 实现
webservice://基于 WebService 的远程调用协议,基于 Apache CXF 的 frontend-simple 和 transports-http 实现
thrift://对 thrift 原生协议 的扩展,在原生协议的基础上添加了一些额外的头信息,比如 service name,magic number 等
memcached://基于 memcached  实现的 RPC 协议 
redis://基于 Redis实现的 RPC 协议
rest://基于标准的Java REST API——JAX-RS 2.0(Java API for RESTful Web Services的简写)实现的REST调用支持

参考来源:http://dubbo.apache.org/zh-cn/docs/user/configuration/xml.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/165745
推荐阅读
相关标签
  

闽ICP备14008679号