Java学习笔记系列

简述 Dubbo 配置

2018-08-07  本文已影响0人  SonyaBaby

下载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项目需要三种模块:

服务提供方配置文件 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平台

上一篇下一篇

猜你喜欢

热点阅读