`

dubbo 笔记三 配置文件详解

    博客分类:
  • soa
阅读更多

示例:

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans        http://www.springframework.org/schema/beans/spring-beans.xsd        http://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
 
    <dubbo:application name="hello-world-app"  />
 
    <dubbo:registry address="multicast://224.5.6.7:1234" />
 
    <dubbo:protocol name="dubbo" port="20880" />
 
    <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoServiceLocal" />
 
    <dubbo:reference id="demoServiceRemote" interface="com.alibaba.dubbo.demo.DemoService" />
 
</beans>

 

 

  • <dubbo:service/> 服务配置,用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。
  • <dubbo:reference/> 引用配置,用于创建一个远程服务代理,一个引用可以指向多个注册中心。
  • <dubbo:protocol/> 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受。
  • <dubbo:application/> 应用配置,用于配置当前应用信息,不管该应用是提供者还是消费者。
  • <dubbo:module/> 模块配置,用于配置当前模块信息,可选。
  • <dubbo:registry/> 注册中心配置,用于配置连接注册中心相关信息。
  • <dubbo:monitor/> 监控中心配置,用于配置连接监控中心相关信息,可选。
  • <dubbo:provider/> 提供方的缺省值,当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值,可选。
  • <dubbo:consumer/> 消费方缺省配置,当ReferenceConfig某属性没有配置时,采用此缺省值,可选。
  • <dubbo:method/> 方法配置,用于ServiceConfig和ReferenceConfig指定方法级的配置信息。
  • <dubbo:argument/> 用于指定方法参数配置。

 

服务调用超时 设置:



 

  • 上图中以timeout为例,显示了配置的查找顺序,其它retries, loadbalance, actives等类似。
    • 方法级优先,接口级次之,全局配置再次之。
    • 如果级别一样,则消费方优先,提供方次之。
  • 其中,服务提供方配置,通过URL经由注册中心传递给消费方。
  • 建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置。
  • 理论上ReferenceConfig的非服务标识配置,在ConsumerConfig,ServiceConfig, ProviderConfig均可以缺省配置。

 

启动时检查:

Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认check=true。

 
如果你的Spring容器是懒加载的,或者通过API编程延迟引用服务,请关闭check,否则服务临时不可用时,会抛出异常,拿到null引用,如果check=false,总是会返回引用,当服务恢复时,能自动连上。

可以通过check="false"关闭检查,比如,测试时,有些服务不关心,或者出现了循环依赖,必须有一方先启动。

关闭某个服务的启动时检查:(没有提供者时报错)

<dubbo:reference interface="com.foo.BarService" check="false" />

关闭所有服务的启动时检查:(没有提供者时报错)  写在定义服务消费者一方

<dubbo:consumer check="false" />

关闭注册中心启动时检查:(注册订阅失败时报错)

<dubbo:registry check="false" />

 

 

引用缺省是延迟初始化的,只有引用被注入到其它Bean,或被getBean()获取,才会初始化。
如果需要饥饿加载,即没有人引用也立即生成动态代理,可以配置:

<dubbo:reference interface="com.foo.BarService" init="true" />

 

只订阅

  问题
为方便开发测试,经常会在线下共用一个所有服务可用的注册中心,这时,如果一个正在开发中的服务提供者注册,可能会影响消费者不能正常运行。
解决方案
可以让服务提供者开发方,只订阅服务(开发的服务可能依赖其它服务),而不注册正在开发的服务,通过直连测试正在开发的服务。

禁用注册配置:

<dubbo:registry address="10.20.153.10:9090" register="false" />

或者:

<dubbo:registry address="10.20.153.10:9090?register=false" />

 

回声测试(测试服务是否可用)

回声测试用于检测服务是否可用,回声测试按照正常请求流程执行,能够测试整个调用是否通畅,可用于监控。

所有服务自动实现EchoService接口,只需将任意服务引用强制转型为EchoService,即可使用。

例子:

<dubbo:reference id="memberService" interface="com.xxx.MemberService" />

 

MemberService memberService = ctx.getBean("memberService"); // 远程服务引用
EchoService echoService = (EchoService) memberService; // 强制转型为EchoService
String status = echoService.$echo("OK"); // 回声测试可用性
assert(status.equals("OK"))
 

延迟连接:

延迟连接,用于减少长连接数,当有调用发起时,再创建长连接。

只对使用长连接的dubbo协议生效。

<dubbo:protocol name="dubbo" lazy="true" />

 

令牌验证:



 

  • 防止消费者绕过注册中心访问提供者
  • 在注册中心控制权限,以决定要不要下发令牌给消费者
  • 注册中心可灵活改变授权方式,而不需修改或升级提供者

可以全局设置开启令牌验证:

<!--随机token令牌,使用UUID生成-->
<dubbo:provider interface="com.foo.BarService" token="true" />
<!--固定token令牌,相当于密码-->
<dubbo:provider interface="com.foo.BarService" token="123456" />
也可在服务级别设置:
<!--随机token令牌,使用UUID生成-->
<dubbo:service interface="com.foo.BarService" token="true" />
<!--固定token令牌,相当于密码-->
<dubbo:service interface="com.foo.BarService" token="123456" />
还可在协议级别设置:
<!--随机token令牌,使用UUID生成-->
<dubbo:protocol name="dubbo" token="true" />
<!--固定token令牌,相当于密码-->
<dubbo:protocol name="dubbo" token="123456" />
 

日志适配:

缺省自动查找:

  • log4j
  • slf4j
  • jcl
  • jdk

可以通过以下方式配置日志输出策略:

dubbo:application logger="log4j"/>
 

访问日志:

如果你想记录每一次请求信息,可开启访问日志,类似于apache的访问日志。

此日志量比较大,请注意磁盘容量。

将访问日志输出到当前应用的log4j日志:

<dubbo:protocol accesslog="true" />

将访问日志输出到指定文件:

<dubbo:protocol accesslog="http://10.20.160.198/wiki/display/dubbo/foo/bar.log" />

 

 

配置上Dubbo缓存文件

配置方法如下:

<dubbo:registryfile=”${user.home}/output/dubbo.cache” />

注意:

  1. 文件的路径,应用可以根据需要调整,保证这个文件不会在发布过程中被清除。
  2. 如果有多个应用进程注意不要使用同一个文件,避免内容被覆盖

这个文件会缓存:

  1. 注册中心的列表
  2. 服务提供者列表

有了这项配置后,当应用重启过程中,Dubbo注册中心不可用时则应用会从这个缓存文件读取服务提供者列表的信息,进一步保证应用可靠性。

  • 大小: 188 KB
  • 大小: 73.7 KB
分享到:
评论

相关推荐

    dubbo的配置文件详解(推荐)

    在使用Dubbo时,配置文件起着至关重要的作用,它们定义了服务的元信息、协议、注册中心、监控中心等关键参数。下面我们将详细探讨这些配置元素。 1. **服务配置和服务引用**: - `&lt;dubbo:service&gt;` 元素用于暴露...

    Dubbo约束XSD配置文件

    【Dubbo约束XSD配置文件】是Dubbo框架中用于定义服务配置的规范性文档,它使用XML Schema Definition (XSD)语言编写,为Dubbo的XML配置提供了一套完整的语法规则。在Dubbo的XML配置文件中,开发者通过引用这个XSD...

    Java的dubbo.xsd配置文件

    在Eclipse中配置Dubbo时,`dubbo.xsd`配置文件扮演着至关重要的角色。这个文件定义了Dubbo服务的所有配置元素和属性,遵循XML Schema(XSD)规范,确保XML配置文件的正确性和一致性。 `dubbo.xsd`文件包含了一系列...

    Apache Dubbo:Dubbo配置与参数详解

    ### Apache Dubbo:Dubbo配置与参数详解 #### 一、Dubbo概述 Apache Dubbo是一款高性能、轻量级的微服务框架,主要用于构建服务化的应用程序和服务治理平台。它提供了全面的服务治理解决方案,包括服务发布、发现...

    dubbo的.xsd文件分享

    《Dubbo的.xsd文件详解》 Dubbo作为一款高性能、轻量级的Java开源服务框架,其在设计和实现过程中广泛使用了XML Schema(简称XSD)来定义服务接口和配置规范。XSD文件是XML文档的模式定义,它为XML提供了结构约束和...

    dubbo配置文件

    dubbo的配置文件

    dubbo配置scheme文件

    dubbo配置scheme文件

    dubbo扫描提供者配置文件

    dubbo提供者配置文件,扫描可用,先要打开扫描注释&lt;context:annotation-config /&gt;

    分布式 ssm-dubbo配置文件

    分布式SSM-Dubbo配置文件详解 SSM-Dubbo是一个基于Java的开源框架组合,由Spring、SpringMVC和Dubbo三部分组成,主要用于构建大型分布式应用程序。在微服务架构中,SSM-Dubbo扮演着至关重要的角色,它帮助开发者...

    dubbo学习笔记.pdf

    【Dubbo学习笔记】 Dubbo是一款高性能、轻量级的Java RPC框架,它旨在提供面向接口的远程方法调用、智能容错与负载均衡、服务自动注册与发现等核心功能,帮助开发者构建分布式服务架构。以下是对Dubbo基础知识、...

    Dubbo监控系统配置

    ### Dubbo监控系统配置详解 #### 一、Dubbo监控系统概述 Dubbo是一款高性能、轻量级的开源服务框架,旨在提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo提供了包括服务自动注册与发现、...

    dubbo的校验xsd文件

    在Dubbo中,`dubbo.xsd`文件是一个重要的组成部分,它是Dubbo配置的XML Schema定义文件,用于验证和解析Dubbo的XML配置文件,确保配置的正确性和规范性。 `dubbo.xsd`包含了一系列Dubbo服务的元素和属性定义,这些...

    Dubbo阅读笔记

    【Dubbo阅读笔记】 在深入理解Dubbo框架的过程中,我们首先需要了解其核心概念和服务模型。Dubbo是一款高性能、轻量级的Java RPC框架,它致力于简化分布式服务开发,为服务提供者(Provider)和服务消费者...

    Dubbo配置文件依赖的本地DTD

    在使用Dubbo时,我们需要编写配置文件来定义服务提供者和服务消费者的相关信息。配置文件通常采用XML格式,其中包含了关于服务接口、实现类、注册中心、协议等关键元素的声明。 XML文档类型定义(DTD,Document ...

    dubbo.xsd文件

    而`dubbo.xsd`文件在Dubbo框架中扮演着至关重要的角色,它是Dubbo的XML配置文件的schema定义,用于验证和解析XML配置信息,确保XML配置的正确性。 当我们遇到描述中的错误——"cvc-complex-type.2.4.c: The ...

    dubbo上传文件+oss上传文件服务.zip

    Dubbo服务提供者通常会包含服务接口定义、实现类以及相关的配置文件,如`dubbo.xml`或`application.xml`,用于配置服务元数据、注册中心信息等。 其次,OSS是阿里云提供的一个分布式存储服务,它可以存储大量的非...

    dubbo.xsd分布式dubbo的约束文件

    `dubbo.xsd`是Dubbo的核心配置约束文件,它的存在使得开发人员能够按照预设的规则编写配置,避免了因错误配置导致的运行时异常。这个文件包含了所有Dubbo服务组件和参数的定义,例如服务提供者(Provider)、消费者...

    dubbo-xsd的配置文件

    本主题将聚焦于"Dubbo-xsd的配置文件",具体包括`dubbo.xsd`和`applicationContext-service.xml`,这两个文件在构建和管理Dubbo服务中扮演着关键角色。 首先,`dubbo.xsd`是Dubbo的XML Schema定义文件,它定义了...

Global site tag (gtag.js) - Google Analytics