使用nacos配置dubbo3

文章目录

  • 一、在配置中心提供注册中心、元数据中心连接参数
  • 二、dubbo应用连接到配置中心进行初始化

一、在配置中心提供注册中心、元数据中心连接参数

选择命名空间:dev
创建配置,Data ID为dubbo.properties,Group为DUBBO_GROUP

dubbo.registries.wzp-nacos-reg.address=10.0.0.1:8848
dubbo.registries.wzp-nacos-reg.protocol=nacos
dubbo.registries.wzp-nacos-reg.group=DUBBO_INSTANCE_GROUP
dubbo.registries.wzp-nacos-reg.register-mode=all
dubbo.registries.wzp-nacos-reg.parameters.namespace=dev
#在“服务列表”里,除了显示应用实例、dubbo interface的provider实例,再额外显示consumer实例(仅供运维使用)
dubbo.registries.wzp-nacos-reg.parameters.register-consumer-url=true

dubbo.metadata-reports.wzp-meta-rep.address=10.0.0.1:8848
dubbo.metadata-reports.wzp-meta-rep.protocol=nacos
dubbo.metadata-reports.wzp-meta-rep.group=DUBBO_DEFINITION_GROUP
#在“配置列表”里,额外显示dubbo interface的方法定义明细(仅供运维使用)
dubbo.metadata-reports.wzp-meta-rep.report-definition=true
#完全通过服务自省的方式,让consumer自行去provider实例获取全部元数据
dubbo.metadata-reports.wzp-meta-rep.report-metadata=false
dubbo.metadata-reports.wzp-meta-rep.parameters.namespace=dev

1、元数据中心主要是记录dubbo interface与provider应用名称的映射关系,在nacos的“配置列表”里存储时,Data ID为interface全名,Group为mapping:
https://dubbo.apache.org/zh/docs3-v2/java-sdk/reference-manual/metadata-center/overview/
2、consumer获取到提供服务的应用的名字后,再去注册中心获取provider应用实例,向实例调用固定的org.apache.dubbo.metadata.MetadataService接口,来确认实例提供的服务的元数据,如重试建议次数、超时时长、方法定义等。
使用nacos配置dubbo3_第1张图片

二、dubbo应用连接到配置中心进行初始化

添加依赖:

			<dependency>
				<groupId>org.apache.dubbogroupId>
				<artifactId>dubbo-registry-nacosartifactId>
				<version>3.1.3version>
				<exclusions>
					<exclusion>
						<groupId>org.apache.dubbogroupId>
						<artifactId>dubbo-remoting-apiartifactId>
					exclusion>
					<exclusion>
						<groupId>org.apache.dubbogroupId>
						<artifactId>dubbo-rpc-apiartifactId>
					exclusion>
					<exclusion>
						<groupId>org.apache.dubbogroupId>
						<artifactId>dubbo-commonartifactId>
					exclusion>
				exclusions>
			dependency>
			<dependency>
				<groupId>org.apache.dubbogroupId>
				<artifactId>dubbo-metadata-report-nacosartifactId>
				<version>3.1.3version>
			dependency>
			<dependency>
				<groupId>org.apache.dubbogroupId>
				<artifactId>dubbo-configcenter-nacosartifactId>
				<version>3.1.3version>
				<exclusions>
					<exclusion>
						<groupId>org.apache.dubbogroupId>
						<artifactId>dubbo-commonartifactId>
					exclusion>
				exclusions>
			dependency>

提供spring配置,dubbo客户端会在启动时连接到配置中心,获取注册中心、元数据中心的信息:

dubbo.config-center.protocol=nacos
dubbo.config-center.address=10.0.0.1:8848
#namespace本来是uuid,但是可以在nacos数据表里修改namespace的uuid为可读字符串
dubbo.config-center.namespace=dev
dubbo.config-center.group=DUBBO_GROUP

配置dubbo应用名称、协议、端口:

@Configuration
@EnableDubbo(scanBasePackages = { "wzp.**.service.impl" })
public class DUbboConfig {
	@Bean
	@Primary
	public org.apache.dubbo.config.ApplicationConfig dubboApplicationConfig(
			@Value("${spring.application.name}") String name) {
		org.apache.dubbo.config.ApplicationConfig applicationConfig = new org.apache.dubbo.config.ApplicationConfig();
		applicationConfig.setName(name);
		// 服务自省
		applicationConfig.setMetadataType("local");
		applicationConfig.setMetadataServiceProtocol("dubbo");
		applicationConfig.setQosEnable(false);
		return applicationConfig;
	}

	@Bean
	@Primary
	public ProtocolConfig dubboProtocolConfig() {
		ProtocolConfig protocolConfig = new ProtocolConfig();
		protocolConfig.setName("dubbo");
		// 自动选择一个20880以上的空闲端口
		protocolConfig.setPort(-1);
		return protocolConfig;
	}

	@Bean
	@Primary
	public ProviderConfig dubboProviderConfig() {
		ProviderConfig providerConfig = new ProviderConfig();
		// 默认超时时间,即通知客户端在等待60秒后,自行抛出超时错误(服务端处理线程继续运行)
		providerConfig.setTimeout(60000);
		providerConfig.setRetries(0);
		return providerConfig;
	}

	@Bean("consumerConfig") // 使用此名称的consumer配置,才会被dubbo客户端默认使用
	@Primary
	public ConsumerConfig dubboConsumerConfig() {
		ConsumerConfig consumerConfig = new ConsumerConfig();
		consumerConfig.setLoadbalance("random");
		// 启动时不检查服务端可用性
		consumerConfig.setCheck(false);
		return consumerConfig;
	}
}

你可能感兴趣的:(微服务,java,dubbo,java,分布式)