Dubbo常用配置项说明

dubbo:application

  对应 org.apache.dubbo.config.ApplicationConfig, 代表当前应用的信息

  1. name: 当前应用程序的名称,在dubbo-admin中我们也可以看到,这个代表这个应用名称。我们
    在真正时是时也会根据这个参数来进行聚合应用请求。
  2. owner: 当前应用程序的负责人,可以通过这个负责人找到其相关的应用列表,用于快速定位到责
    任人。
  3. qosEnable : 是否启动QoS 默认true
  4. qosPort : 启动QoS绑定的端口 默认22222
  5. qosAcceptForeignIp: 是否允许远程访问 默认是false

dubbo:registry

  org.apache.dubbo.config.RegistryConfig, 代表该模块所使用的注册中心。一个模块中的服务可以将
其注册到多个注册中心上,也可以注册到一个上。后面再service和reference也会引入这个注册中心。

  1. id : 当当前服务中provider或者consumer中存在多个注册中心时,则使用需要增加该配置。在一
    些公司,会通过业务线的不同选择不同的注册中心,所以一般都会配置该值。
  2. address : 当前注册中心的访问地址。
  3. protocol : 当前注册中心所使用的协议是什么。也可以直接在address 中写入,比如使用
    zookeeper,就可以写成zookeeper://xx.xx.xx.xx:2181
  4. timeout : 当与注册中心不再同一个机房时,大多会把该参数延长。

dubbo:protocol

  org.apache.dubbo.config.ProtocolConfig, 指定服务在进行数据传输所使用的协议。

  1. id : 在大公司,可能因为各个部门技术栈不同,所以可能会选择使用不同的协议进行交互。这里
    在多个协议使用时,需要指定。
  2. name : 指定协议名称。默认使用dubbo 。

dubbo:service

  org.apache.dubbo.config.ServiceConfig, 用于指定当前需要对外暴露的服务信息,后面也会具体讲
解。和dubbo:reference 大致相同。

  1. interface : 指定当前需要进行对外暴露的接口是什么。
  2. ref : 具体实现对象的引用,一般我们在生产级别都是使用Spring去进行Bean托管的,所以这里面
    一般也指的是Spring中的BeanId。
  3. version : 对外暴露的版本号。不同的版本号,消费者在消费的时候只会根据固定的版本号进行消
    费。

dubbo:reference

  org.apache.dubbo.config.ReferenceConfig, 消费者的配置,这里只做简单说明,后面会具体讲解。

  1. id : 指定该Bean在注册到Spring中的id。
  2. interface: 服务接口名
  3. version : 指定当前服务版本,与服务提供者的版本一致。
  4. registry : 指定所具体使用的注册中心地址。这里面也就是使用上面在dubbo:registry 中所声
    明的id。

dubbo:method

  org.apache.dubbo.config.MethodConfig, 用于在制定的dubbo:service 或者dubbo:reference 中的
更具体一个层级,指定具体方法级别在进行RPC操作时候的配置,可以理解为对这上面层级中的配置针
对于具体方法的特殊处理。

  1. name : 指定方法名称,用于对这个方法名称的RPC调用进行特殊配置。
  2. async: 是否异步 默认false

dubbo:service和dubbo:reference详解

  这两个在dubbo中是我们最为常用的部分,其中有一些我们必然会接触到的属性。并且这里会讲到一些
设置上的使用方案。

  1. mock: 用于在方法调用出现错误时,当做服务降级来统一对外返回结果, 设为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。
  2. timeout: 用于指定当前方法或者接口中所有方法的超时时间。我们一般都会根据提供者的时长来
    具体规定。比如我们在进行第三方服务依赖时可能会对接口的时长做放宽,防止第三方服务不稳定
    导致服务受损。
  3. check: 用于在启动时,检查生产者是否有该服务。我们一般都会将这个值设置为false,不让其进行检查。因为如果出现模块之间循环引用的话,那么则可能会出现相互依赖,都进行check的话,那么这两个服务永远也启动不起来。
  4. retries: 用于指定当前服务在执行时出现错误或者超时时的重试机制。
  1. 注意提供者是否有幂等,否则可能出现数据一致性问题
  2. 注意提供者是否有类似缓存机制,如出现大面积错误时,可能因为不停重试导致雪崩
  1. executes: 用于在提供者做配置,来确保最大的并行度。
  1. 可能导致集群功能无法充分利用或者堵塞
  2. 但是也可以启动部分对应用的保护功能
  3. 可以不做配置,结合后面的熔断限流使用

其它配置 参考官网

schema 配置参考手册

Dubbo管理控制台 dubbo-admin

作用

主要包含:服务管理 、 路由规则、动态配置、服务降级、访问控制、权重调整、负载均衡等管理功能如我们在开发时,需要知道Zookeeper注册中心都注册了哪些服务,有哪些消费者来消费这些服务。可以通过部署一个管理中心来实现。其实管理中心就是一个web应用,原来是war(2.6版本以前)包需要部署到tomcat即可。现在是jar包可以直接通过java命令运行。

控制台安装步骤

1.从git 上下载项目 https://github.com/apache/dubbo-admin
2.修改项目下的application.properties文件
注意admin.registry.address对应的值需要对应当前使用的Zookeeper的ip地址和端口号

  • admin.registry.address=zookeeper://zk所在机器ip:zk端口
  • admin.config-center=zookeeper://127.0.0.1:2181
  • admin.metadata-report.address=zookeeper://127.0.0.1:2181
  • dubbo.admin.root.password=root
  • dubbo.admin.guest.password=guest

3.切换到项目所在的路径 使用mvn 打包
mvn clean package -Dmaven.test.skip=true
4.java 命令运行
java -jar 对应的jar包

上面第二步的配置也可以在打包后,在jar的目录下新建config目录,再创建application.properties进行更改

dubbo配置详解 dubbo常用配置_分布式