简述 Dubbo 配置

作者: SonyaBaby | 来源:发表于2018-08-07 10:20 被阅读0次

    下载dubbo-admin-x.x.x并解压

    Dubbo 采用全Spring配置方式,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。

    pom添加相关依赖(zookeeper dubbo interface):

    <dependencies>
      ...
      <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
        <version>${zookeeper.version}</version>
      </dependency>
      <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
        <version>${zkclient.version}</version>
      </dependency>
      <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>${dubbo.version}</version>
      </dependency>
      ...
      <!-- 以及interface依赖 -->
    </dependencies>
    

    dubbo项目需要三种模块:

    • interface 模块。
    • provider 模块。暴露服务的服务提供方。
    • consumer 模块。调用远程服务的服务消费方。

    服务提供方配置文件 spring-provider.xml:

    <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-2.5.xsd
      http://code.alibabatech.com/schema/dubbo 
      http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
      <!-- 应用名 -->
      <dubbo:application name="dubbodemo-provider"/>
      <!-- 连接到注册中心 -->
      <dubbo:registry id="dubbodemo" address="${dubbo.registry.address:zookeeper://localhost:2181"}/>
      <!-- 通过dubbo协议,在zookeeper注册中心28080端口暴露服务 -->
      <dubbo:protocol name="dubbo" port="28080"/>
      <!-- 注册服务 即声明需要暴露的服务接口-->
      <dubbo:service registry="dubbodemo" timeout="3000" interface="com.xxx.service.XxxService" ref="xxxService"/>
      <dubbo:service interface="com.xxx.MemberService" ref="memberService" register="${dubbo.registry.register:true}"  timeout="100000" />
    </beans>
    

    服务消费方配置文件 spring-consumer.xml:

    <beans xmlns="http://www.springframework.org/schema/beans"
     ...
    
      <!-- 应用名 -->
      <dubbo:application name="dubbodemo-consumer"/>
      ...
      <!-- 生成远程服务代理,可以和本地bean一样使用xxxService -->
      <dubbo:reference id="xxxService" interface="com.xxx.service.XxxService"/>
    
    </beans>
    

    主要参数:
    application 声明当前应用信息,用来给 zookeeper 注册中心计算应用间依赖关系。
    registry 声明一个注册中心(注意:如果是使用本地服务器,保证与本地配置属性值一致)
    protocol 声明该应用通过dubbo协议可以在端口28080暴露服务,其他应用可以通过这个端口调用服务
    service 声明需要暴露的服务接口XxxService,并将接口注册到dubbodemo注册中心
    reference 声明引用一个服务。

    常用属性

    提供者:

    <!-- 提供者公共配置 -->
    <dubbo:provider retries="0" protocol="rest"
        delay="${dubbo.provider.delay:-1}" threads="${dubbo.provider.threads:100}"
        timeout="${dubbo.rest.timeout:10000}" />
    

    消费者:

    <!-- check为true的时候,如果该接口挂了,本应用就跑不起来了-->
    <dubbo:reference interface="com.foo.BarService" check="false" />
    <!-- 提供者公共配置 -->
    <!-- 关闭所有服务的启动时检查 -->
    <dubbo:consumer check="false" />
    <!-- 配置重试次数,最好只用于读的重试,写操作可能会引起多次写入。默认retries="0"-->
    <dubbo:service retries="2" />
    <dubbo:reference retries="2" />
    <dubbo:reference>
       <dubbo:method name="findFoo" retries="2" />
    </dubbo:reference>
    

    也可以使用properties文件(DUBBO 在读取配置的时候会先读取 XML文件中的配置,如果没找到就会默认去读取resources目录下的 dubbo.properties 文件。):

    # 应用名
    dubbo.application.name = dubbodemo-consumer
    # 注册中心地址
    dubbo.registry.address = zookeeper://localhost:2181
    # 调用协议地址
    dubbo.protocol.name = dubbo
    dubbo.protocol.port = 28080
    

    同样也可以在web.xml中引入自定义.properties文件,consumer.xml或provider.xml

    <context:property-placeholder location="classpath:xxx-web.properties" file-encoding="utf-8" ignore-resource-not-found="true" />
    
    <import resource="classpath:/META-INF/xxx-consumer.xml" />
    

    底层Dubbo详细分析 可以参考: 从头开始搭建一个dubbo+zookeeper平台

    相关文章

      网友评论

        本文标题:简述 Dubbo 配置

        本文链接:https://www.haomeiwen.com/subject/wojgvftx.html