AbstractConfig
Dubbo的核心配置类在dubbo-common中。
AbstractConfig是所有配置类的抽象父类,提供了用于解析配置的实用方法和公共方法。可以看到,它有很多实现子类,基本每个子类对应一项核心配置。
RegistryConfig
RegistryConfig就是注册中心相关的配置了,配置说明如下:
public class RegistryConfig extends AbstractConfig {
public static final String NO_AVAILABLE = "N/A";
private static final long serialVersionUID = 5508512956753757169L;
/**
* 注册中心地址
*/
private String address;
/**
* 登录注册中心的用户名
*/
private String username;
/**
* 登录注册中心密码
*/
private String password;
/**
* 注册中心默认端口
*/
private Integer port;
/**
* 注册中心协议
*/
private String protocol;
/**
* 网络传输类型
*/
private String transporter;
private String server;
private String client;
/**
* 影响流量在注册管理机构之间的分配方式,在订阅多个注册管理机构时很有用,可用选项:
* 1. 区域感知,根据流量的来源,某种类型的流量总是进入一个注册管理
*/
private String cluster;
/**
* 注册中心所属的区域,通常用于隔离流量
*/
private String zone;
/**
* 服务注册表所在的组
*/
private String group;
private String version;
/**
* 以毫秒为单位的注册中心请求超时
*/
private Integer timeout;
/**
* 注册中心的会话超时(以毫秒为单位)
*/
private Integer session;
/**
* 注册中心动态列表保存文件
*/
private String file;
/**
* 停止前等待时间
*/
private Integer wait;
/**
* 开机时是否检查注册中心是否可用
*/
private Boolean check;
/**
* 是否允许动态服务在注册中心注册
*/
private Boolean dynamic;
/**
* 是否允许注册服务在注册中心
*/
private Boolean register;
/**
* 是否允许订阅注册中心的服务
*/
private Boolean subscribe;
/**
* 自定义参数
*/
private Map<String, String> parameters;
/**
* 简化注册表。对提供者和使用者都很有用
*
* @since 2.7.0
*/
private Boolean simplified;
/**
* 简化注册表后,应单独添加一些参数。只对服务提供者有效。
* <p>
* such as: extra-keys = A,b,c,d
*
* @since 2.7.0
*/
private String extraKeys;
/**
* 该地址是否作为配置中心工作
*/
private Boolean useAsConfigCenter;
/**
* 该地址是否用作远程元数据中心
*/
private Boolean useAsMetadataCenter;
/**
* 此注册表接受的rpc协议列表,例如,“dubbo,rest”
*/
private String accepts;
/**
* 如果设置为true,则始终首先使用此注册表,这在订阅多个注册表时非常有用
*/
private Boolean preferred;
/**
* 注册表间的流量分布权重,在订阅多个注册表时非常有用
* 仅在未指定首选注册表时生效。
*/
private Integer weight;
/**
* 是否发布接口
*/
private Boolean publishInterface;
/**
* 是否发布实例
*/
private Boolean publishInstance;
}
ProtocolConfig
ProtocolConfig是服务提供者协议相关配置,说明如下:
public class ProtocolConfig extends AbstractConfig {
private static final long serialVersionUID = 6913423882496634749L;
/**
* 协议名
*/
private String name;
/**
* 服务ip地址(当有多个网卡可用时)
*/
private String host;
/**
* 服务端口
*/
private Integer port;
/**
* 上下文路径
*/
private String contextpath;
/**
* 线程池
*/
private String threadpool;
/**
* 线程池名
*/
private String threadname;
/**
* Thread pool core thread size
*/
private Integer corethreads;
/**
* 线程池核心线程大小
*/
private Integer threads;
/**
* IO线程池大小(固定大小)
*/
private Integer iothreads;
/**
* 线程池活动线程最大存活时间,单位毫秒
*/
private Integer alive;
/**
* 线程池的队列长度
*/
private Integer queues;
/**
* 最大可接受连接数
*/
private Integer accepts;
/**
* 协议编解码器
*/
private String codec;
/**
* 序列化
*/
private String serialization;
/**
* 字符集
*/
private String charset;
/**
* 有效载荷最大长度
*/
private Integer payload;
/**
* 缓冲区大小
*/
private Integer buffer;
/**
* 心跳间隔
*/
private Integer heartbeat;
/**
* 访问日志
*/
private String accesslog;
/**
* Transporter
*/
private String transporter;
/**
* 如何交换信息
*/
private String exchanger;
/**
* 线程调度模式
*/
private String dispatcher;
/**
* 网卡
*/
private String networker;
/**
* Sever impl
*/
private String server;
/**
* Client impl
*/
private String client;
/**
* 支持的telnet命令,用逗号分隔。
*/
private String telnet;
/**
* 命令行提示符
*/
private String prompt;
/**
* 状态检查
*/
private String status;
/**
* 是否注册
*/
private Boolean register;
/**
* 是否为持久连接,将此添加到提供方
*/
//TODO add this to provider config
private Boolean keepAlive;
// TODO add this to provider config
private String optimizer;
/**
* 分机
*/
private String extension;
/**
* 自定义参数
*/
private Map<String, String> parameters;
/**
* 是否开启SSL
*/
private Boolean sslEnabled;
}
MonitorConfig
MonitorConfig是dubbo管理控制台相关配置,说明如下:
public class MonitorConfig extends AbstractConfig {
private static final long serialVersionUID = -1184681514659198203L;
/**
* 监视器的协议,如果值为注册表,它将从注册表中心搜索监视器地址,
* 否则,它将直接连接到监控中心
*/
private String protocol;
/**
* 控制台地址
*/
private String address;
/**
* 控制台用户名
*/
private String username;
/**
* 控制台密码
*/
private String password;
/**
* 分组
*/
private String group;
/**
* 版本
*/
private String version;
private String interval;
/**
* 自定义参数
*/
private Map<String, String> parameters;
}
MetadataReportConfig
MetadataReportConfig是元数据中心相关配置,说明如下:
public class MetadataReportConfig extends AbstractConfig {
private static final long serialVersionUID = 55233L;
private String protocol;
/**
* 元数据中心地址
*/
private String address;
/**
* 元数据中心默认端口
*/
private Integer port;
/**
* 元数据中心用户名
*/
private String username;
/**
* 元数据中心密码
*/
private String password;
/**
* 元数据中心超时时间,毫秒
*/
private Integer timeout;
/**
* 元数据中心分组,就像注册中心中的分组一样
*/
private String group;
/**
* 自定义参数
*/
private Map<String, String> parameters;
/**
* 重试次数
*/
private Integer retryTimes;
/**
* 失败多久后重试
*/
private Integer retryPeriod;
/**
* 默认情况下,元数据存储每天重复存储完整的元数据。
*/
private Boolean cycleReport;
/**
* 同步报告,默认异步
*/
private Boolean syncReport;
/**
* 是否集群
*/
private Boolean cluster;
/**
* 注册ID
*/
private String registry;
/**
* 用于保存元数据中心动态列表的文件
*/
private String file;
/**
* 确定初始连接尝试失败时的行为,
* “true”表示一旦失败就中断整个过程。默认值为true
*/
private Boolean check;
}
ModuleConfig
ModuleConfig负责配置模块信息,说明如下:
public class ModuleConfig extends AbstractConfig {
private static final long serialVersionUID = 5508512956753757169L;
/**
* 当前模块名称,用于注册中心计算模块间依赖关系
*/
private String name;
/**
* 当前模块的版本
*/
private String version;
/**
* 模块负责人,用于服务治理,请填写负责人公司邮箱前缀
*/
private String owner;
/**
* 组织名称(BU或部门),用于注册中心区分服务来源,此配置项建议不要使用autoconfig,直接写死在配置中,比如china,intl,itu,crm,asc,dw,aliexpress等
*/
private String organization;
}
ConfigCenterConfig
ConfigCenterConfig是配置中心配置类,说明如下:
public class ConfigCenterConfig extends AbstractConfig {
private final AtomicBoolean initialized = new AtomicBoolean(false);
/**
* 用哪个配置中心:apollo、zookeeper、nacos等。zookeeper://127.0.0.1:2181
*/
private String protocol;
/**
* 配置中心地址。取值参见protocol说明
*/
private String address;
private Integer port;
/**
* 含义视所选定的配置中心而不同。如Apollo中用来区分不同的配置集群
*/
private String cluster;
/**
* 通常用于多租户隔离,实际含义视具体配置中心而不同。如:
* zookeeper – 环境隔离,默认值dubbo;
* apollo – 区分不同领域的配置集合,默认使用dubbo和application
*/
private String namespace;
/**
* 含义视所选定的配置中心而不同。
* nacos – 隔离不同配置集
* zookeeper – 隔离不同配置集
*/
private String group;
/**
* 如果配置中心需要做校验,用户名
*/
private String username;
/**
* 如果配置中心需要做校验,密码
*/
private String password;
/**
* 获取配置的超时时间
*/
private Long timeout;
/**
* 来自配置中心的配置项具有最高优先级,即会覆盖本地配置项。默认true
*
* @deprecated no longer used
*/
private Boolean highestPriority;
/**
* 当配置中心连接失败时,是否终止应用启动。
*/
private Boolean check;
/**
* 全局级配置文件所映射到的key
* zookeeper – 默认路径/dubbo/config/dubbo/dubbo.properties
* apollo – dubbo namespace中的dubbo.properties键
*/
private String configFile;
/**
* the properties file under 'configFile' is global shared while .properties under this one is limited only to this application
*/
private String appConfigFile;
}
ApplicationConfig
应用信息配置。说明如下:
public class ApplicationConfig extends AbstractConfig {
private static final Logger LOGGER = LoggerFactory.getLogger(ApplicationConfig.class);
private static final long serialVersionUID = 5508512956753757169L;
/**
* 当前应用名称,用于注册中心计算应用间依赖关系,注意:消费者和提供者应用名不要一样
*/
private String name;
/**
* 当前应用的版本
*/
private String version;
/**
* 应用负责人,用于服务治理,请填写负责人公司邮箱前缀
*/
private String owner;
/**
* 组织名称(BU或部门),用于注册中心区分服务来源
*/
private String organization;
/**
* 用于服务分层对应的架构。如,intl、china。不同的架构使用不同的分层。
*/
private String architecture;
/**
* 应用环境,如:develop/test/product,不同环境使用不同的缺省值,以及作为只用于开发测试功能的限制条件
*/
private String environment;
/**
* Java字节码编译器,用于动态类的生成,可选:jdk或javassist
*/
private String compiler;
/**
* 日志输出方式,可选:slf4j,jcl,log4j,log4j2,jdk
*/
private String logger;
/**
* 注册中心地址
*/
private List<RegistryConfig> registries;
private String registryIds;
/**
* Monitor中心地址
*/
private MonitorConfig monitor;
/**
* 用于保存线程转储的目录
*/
private String dumpDirectory;
/**
* 是否启用qos
*/
private Boolean qosEnable;
/**
* 要侦听的qos主机
*/
private String qosHost;
/**
* 要侦听的qos主机端口
*/
private Integer qosPort;
/**
* 我们是否应该接受外国知识产权?
*/
private Boolean qosAcceptForeignIp;
/**
* Customized parameters
*/
private Map<String, String> parameters;
/**
* Config the shutdown.wait
*/
private String shutwait;
}
ProviderConfig
服务提供者应用相关配置。说明如下:
public class ProviderConfig extends AbstractServiceConfig {
private static final long serialVersionUID = 6913423882496634749L;
// ======== protocol default values, it'll take effect when protocol's attributes are not set ========
/**
* 服务主机名,多网卡选择或指定VIP及域名时使用,为空则自动查找本机IP,建议不要配置,让Dubbo自动获取本机IP
*/
private String host;
/**
* 服务端口
*/
private Integer port;
/**
* 上下文路径
*/
private String contextpath;
/**
* 线程池类型,可选:fixed/cached/limit(2.5.3以上)/eager(2.6.x以上)
*/
private String threadpool;
/**
* Thread pool name
*/
private String threadname;
/**
* 服务线程池大小(固定大小),默认200
*/
private Integer threads;
/**
* IO thread pool size (fixed size)
*/
private Integer iothreads;
/**
* Thread pool keepAliveTime, default unit TimeUnit.MILLISECONDS
*/
private Integer alive;
/**
* Thread pool queue length
*/
private Integer queues;
/**
* Max acceptable connections
*/
private Integer accepts;
/**
* 协议编码方式,dubbo
*/
private String codec;
/**
* 序列化编码,UTF-8
*/
private String charset;
/**
* 请求及响应数据包大小限制,单位:字节,默认8388608(=8M)
*/
private Integer payload;
/**
* 网络读写缓冲区大小
*/
private Integer buffer;
/**
* Transporter
*/
private String transporter;
/**
* How information gets exchanged
*/
private String exchanger;
/**
* Thread dispatching mode
*/
private String dispatcher;
/**
* Networker
*/
private String networker;
/**
* 协议的服务器端实现类型,比如:dubbo协议的mina,netty等,http协议的jetty,servlet等
*/
private String server;
/**
* 协议的客户端实现类型,比如:dubbo协议的mina,netty等
*/
private String client;
/**
* 所支持的telnet命令,多个命令用逗号分隔
*/
private String telnet;
/**
* Command line prompt
*/
private String prompt;
/**
* Status check
*/
private String status;
/**
* Wait time when stop
*/
private Integer wait;
/**
* Thread num for asynchronous export pool size
*/
private Integer exportThreadNum;
/**
* Whether export should run in background or not
*/
}
ConsumerConfig
服务消费者缺省值配置。说明如下:
private String client;
private String threadpool;
private Integer corethreads;
private Integer threads;
private Integer queues;
private Integer shareconnections;
private String urlMergeProcessor;
private Integer referThreadNum;
private Boolean referBackground;
// 启动时检查提供者是否存在,true报错,false忽略
protected Boolean check;
// 是否在afterPropertiesSet()时饥饿初始化引用,否则等到有人注入或引用该实例时再初始化
protected Boolean init;
// 是否缺省泛化接口,如果为泛化接口,将返回GenericService
protected String generic;
protected Boolean injvm;
protected Boolean lazy;
protected String reconnect;
protected Boolean sticky;
protected Boolean stubevent;
protected String providedBy;
protected String router;
private Boolean referAsync;
版权声明:本文不是「本站」原创文章,版权归原作者所有 | 原文地址: