Dubbo使用XML配置(图解)

简介: Dubbo使用XML配置(图解)

Dubbo XML配置

Dubbo的架构

Dubbo一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案。

Dubbo 架构设计抽象出来的角色如下图:

  • Registry : 表示Dubbo的注册中心,实际上Dubbo并没有这样独立的注册中心,只是抽象出了这个概念;
  • Consumer : 是一个抽象概念,是Dubbo抽象出来的消费者角色;
  • Provider : 是一个提供服务的生产者角色;
  • Monitor : 监控类型的一个角色,负责监控服务方与消费者的状态信息

首先 Provider 把一个服务注册到注册中心上,然后Consumer 获取到这些服务,来调用Provider 或者当Provider 提供的服务有变化时,也会相应的通知Consumer ,Provider 和 Consumer 发生调用是都会通知Monitor ;

配置项

头疼,不整理了,下面转载自官网:https://cn.dubbo.apache.org/zh-cn/docsv2.7/user/configuration/xml/

组件名称 描述 范围 是否必须配置
application 指定应用名等应用级别相关信息 一个应用内只允许出现一个 必选
service 声明普通接口或实现类为 Dubbo 服务 一个应用内可以有 0 到多个 service service/reference 至少一种
reference 声明普通接口为 Dubbo 服务 一个应用内可以有 0 到多个 reference service/reference 至少一种
protocol 要暴露的 RPC 协议及相关配置如端口号等 一个应用可配置多个,一个 protocol 可作用于一组 service&reference 可选,默认 dubbo
registry 注册中心类型、地址及相关配置 一个应用内可配置多个,一个 registry 可作用于一组 service&reference 必选
config-center 配置中心类型、地址及相关配置 一个应用内可配置多个,所有服务共享 可选
metadata-report 元数据中心类型、地址及相关配置 一个应用内可配置多个,所有服务共享 可选
consumer reference 间共享的默认配置 一个应用内可配置多个,一个 consumer 可作用于一组 reference 可选
provider service 间共享的默认配置 一个应用内可配置多个,一个 provider 可作用于一组 service 可选
monitor 监控系统类型及地址 一个应用内只允许配置一个 可选
metrics 数据采集模块相关配置 一个应用内只允许配置一个 可选
ssl ssl/tls 安全链接相关的证书等配置 一个应用内只允许配置一个 可选
method 指定方法级的配置 service 和 reference 的子配置 可选
argument 某个方法的参数配置 method的子配置 可选

service 与 reference

servicereference 是 Dubbo 最基础的两个配置项,它们用来将某个指定的接口或实现类注册为 Dubbo 服务,并通过配置项控制服务的行为。

  • service 用于服务提供者端,通过 service 配置的接口和实现类将被定义为标准的 Dubbo 服务,从而实现对外提供 RPC 请求服务。
  • reference 用于服务消费者端,通过 reference 配置的接口将被定义为标准的 Dubbo 服务,生成的 proxy 可发起对远端的 RPC 请求。

一个应用中可以配置任意多个 servicereference

consumer 与 provider

  • 当应用内有多个 reference 配置时,consumer 指定了这些 reference 共享的默认值,如共享的超时时间等以简化繁琐的配置,如某个 reference 中单独设置了配置项值则该 reference 中的配置优先级更高。
  • 当应用内有多个 service 配置时,provider 指定了这些 service 共享的默认值,如某个 service 中单独设置了配置项值则该 service 中的配置优先级更高。

consumer 组件还可以对 reference 进行虚拟分组,不通分组下的 reference 可有不同的 consumer 默认值设定;如在 XML 格式配置中,<dubbo:reference /> 标签可通过嵌套在 <dubbo:consumer /> 标签之中实现分组。provider 与 service 之间也可以实现相同的效果。

配置方式

属性配置

根据属性Key-value生成配置组件,类似SpringBoot的ConfigurationProperties,具体请参考属性配置

属性配置的另外一个重要的功能特性是属性覆盖,使用外部属性的值覆盖已创建的配置组件属性。

如果要将属性配置放到外部的配置中心,请参考外部化配置

除了外围驱动方式上的差异,Dubbo 的配置读取总体上遵循了以下几个原则:

  1. Dubbo 支持了多层级的配置,并按预定优先级自动实现配置间的覆盖,最终所有配置汇总到数据总线URL后驱动后续的服务暴露、引用等流程。
  2. 配置格式以 Properties 为主,在配置内容上遵循约定的 path-based命名规范

API 配置

以Java编码的方式组织配置,包括Raw API和Bootstrap API,具体请参考API配置

public static void main(String[] args) throws IOException {
        ServiceConfig<GreetingsService> service = new ServiceConfig<>();
        service.setApplication(new ApplicationConfig("first-dubbo-provider"));
        service.setRegistry(new RegistryConfig("multicast://224.5.6.7:1234"));
        service.setInterface(GreetingsService.class);
        service.setRef(new GreetingsServiceImpl());
        service.export();
        System.out.println("first-dubbo-provider is running.");
        System.in.read();
}

XML 配置

以XML方式配置各种组件,支持与Spring无缝集成,具体请参考XML配置

<!-- dubbo-provier.xml -->
  <dubbo:application name="demo-provider"/>
  <dubbo:config-center address="zookeeper://127.0.0.1:2181"/>
  <dubbo:registry address="zookeeper://127.0.0.1:2181" simplified="true"/>
  <dubbo:metadata-report address="redis://127.0.0.1:6379"/>
  <dubbo:protocol name="dubbo" port="20880"/>
  <bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
  <dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>

Annotation 配置

以注解方式暴露服务和引用服务接口,支持与Spring无缝集成,具体请参考Annotation配置

// AnnotationService服务实现
  @DubboService
  public class AnnotationServiceImpl implements AnnotationService {
      @Override
      public String sayHello(String name) {
          System.out.println("async provider received: " + name);
          return "annotation: hello, " + name;
      }
  }
## dubbo.properties
dubbo.application.name=annotation-provider
dubbo.registry.address=zookeeper://127.0.0.1:2181
dubbo.protocol.name=dubbo
dubbo.protocol.port=20880

Spring Boot 配置

使用 Spring Boot 减少非必要配置,结合 Annotation 与 application.properties/application.yml 开发 Dubbo 应用,具体请参考Annotation 配置

## application.properties
# Spring boot application
spring.application.name=dubbo-externalized-configuration-provider-sample
# Base packages to scan Dubbo Component: @com.alibaba.dubbo.config.annotation.Service
dubbo.scan.base-packages=com.alibaba.boot.dubbo.demo.provider.service
# Dubbo Application
## The default value of dubbo.application.name is ${spring.application.name}
## dubbo.application.name=${spring.application.name}
# Dubbo Protocol
dubbo.protocol.name=dubbo
dubbo.protocol.port=12345
## Dubbo Registry
dubbo.registry.address=N/A
## DemoService version
demo.service.version=1.0.0


相关文章
|
5月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
3月前
|
XML Java 数据格式
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
Spring 第二节内容补充 关于Bean配置的更多内容和细节 万字详解!
227 18
Spring IOC—基于XML配置Bean的更多内容和细节(通俗易懂)
|
3月前
|
XML Java 应用服务中间件
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
通过一个HelloWorld实例,介绍了SpringMVC的基本概念、执行流程,并详细讲解了如何创建和配置第一个SpringMVC项目(基于XML)。
springMVC01,springMVC的执行流程【第一个springMVC例子(XML配置版本):HelloWorld】
|
2月前
|
XML 分布式计算 资源调度
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(一)
159 5
|
2月前
|
XML 资源调度 网络协议
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
大数据-02-Hadoop集群 XML配置 超详细 core-site.xml hdfs-site.xml 3节点云服务器 2C4G HDFS Yarn MapRedece(二)
104 4
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
大数据-01-基础环境搭建 超详细 Hadoop Java 环境变量 3节点云服务器 2C4G XML 集群配置 HDFS Yarn MapRedece
81 4
|
2月前
|
XML Java 数据格式
手动开发-简单的Spring基于XML配置的程序--源码解析
手动开发-简单的Spring基于XML配置的程序--源码解析
82 0
|
3月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
49 1
|
4月前
|
XML Android开发 UED
"掌握安卓开发新境界:深度解析AndroidManifest.xml中的Intent-filter配置,让你的App轻松响应scheme_url,开启无限交互可能!"
【8月更文挑战第2天】在安卓开发中,scheme_url 通过在`AndroidManifest.xml`中配置`Intent-filter`,使应用能响应特定URL启动或执行操作。基本配置下,应用可通过定义特定URL模式的`Intent-filter`响应相应链接。
115 12
|
4月前
|
Shell Android开发
安卓scheme_url调端:在AndroidManifest.xml 中如何配置 Intent-filter?
为了使Android应用响应vivo和oppo浏览器的Deep Link或自定义scheme调用,需在`AndroidManifest.xml`中配置`intent-filter`。定义启动的Activity及其支持的scheme和host,并确保Activity可由外部应用启动。示例展示了如何配置HTTP/HTTPS及自定义scheme,以及如何通过浏览器和adb命令进行测试,确保配置正确无误。
下一篇
无影云桌面