赞
踩
1.schema说明:
org.apache.dubbo.config.ServiceConfig
org.apache.dubbo.config.ReferenceConfig
org.apache.dubbo.config.ProtocolConfig
。同时,如果需要支持多协议,可以声明多个 <dubbo:protocol>
标签,并在 <dubbo:service>
中通过 protocol
属性指定使用的协议。org.apache.dubbo.config.RegistryConfig
。同时如果有多个不同的注册中心,可以声明多个 <dubbo:registry>
标签,并在 <dubbo:service>
或 <dubbo:reference>
的 registry
属性指定使用的注册中心。org.apache.dubbo.config.MonitorConfig
org.apache.dubbo.config.ApplicationConfig
org.apache.dubbo.config.ModuleConfig
org.apache.dubbo.config.ProviderConfig
。同时该标签为 <dubbo:service>
和 <dubbo:protocol>
标签的缺省值设置。org.apache.dubbo.config.ConsumerConfig
。同时该标签为 <dubbo:reference>
标签的缺省值设置。org.apache.dubbo.config.MethodConfig
。同时该标签为 <dubbo:service>
或 <dubbo:reference>
的子标签,用于控制到方法级。org.apache.dubbo.config.ArgumentConfig
。该标签为 <dubbo:method>
的子标签,用于方法参数的特征描述。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 的相应配置项才会生效,通常用于共享公共配置,比如应用名。
失败自动切换,当出现失败,重试其它服务器,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。
- 重试次数配置如下:
- <dubbo:service retries="2" />
- 或
- <dubbo:reference retries="2" />
- 或
- <dubbo:reference>
- <dubbo:method name="findFoo" retries="2" />
- </dubbo:reference>
由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间。
消费端:
- 全局超时配置
- <dubbo:consumer timeout="5000" />
-
- 指定接口以及特定方法超时配置
- <dubbo:reference interface="com.foo.BarService" timeout="2000">
- <dubbo:method name="sayHello" timeout="3000" />
- </dubbo:reference>
服务端:
- 全局超时配置
- <dubbo:provider timeout="5000" />
-
- 指定接口以及特定方法超时配置
- <dubbo:provider interface="com.foo.BarService" timeout="2000">
- <dubbo:method name="sayHello" timeout="3000" />
- </dubbo:provider>
当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
可以按照以下的步骤进行版本迁移:
在低压力时间段,先升级一半提供者为新版本
再将所有消费者升级为新版本
然后将剩下的一半提供者升级为新版本
- 老版本服务提供者配置:
- <dubbo:service interface="com.foo.BarService" version="1.0.0" />
-
- 新版本服务提供者配置:
- <dubbo:service interface="com.foo.BarService" version="2.0.0" />
-
- 老版本服务消费者配置:
- <dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />
-
- 新版本服务消费者配置:
- <dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />
-
- 如果不需要区分版本,可以按照以下的方式配置:
- <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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。