Nacos
1 前提条件
- 了解 Dubbo 基本开发步骤
- 安装并启动 Nacos 服务
当 Dubbo 使用
3.0.0
及以上版本时,需要使用 Nacos2.0.0
及以上版本。
2 使用说明
在此处查看 完整示例代码
2.1 添加依赖项
<dependencies>
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo</artifactId>
<version>3.0.9</version>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
<version>2.1.0</version>
</dependency>
<!-- Introduce Dubbo Nacos extension, or you can add Nacos dependency directly as shown above-->
<!--
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-registry-nacos</artifactId>
<version>3.0.9</version>
</dependency>
-->
</dependencies>
添加 Dubbo 和 Nacos 依赖项
Dubbo
3.0.0
及以上版本需要 nacos-client2.0.0
及以上版本
2.2 配置并启用 Nacos
# application.yml (Spring Boot)
dubbo
registry
address: nacos://localhost:8848
或
# dubbo.properties
dubbo.registry.address=nacos://localhost:8848
或
<dubbo:registry address="nacos://localhost:8848" />
要启用该应用程序,请查看注册后的外观或工作原理,请参阅[工作原理](#4-工作原理)。
3 高级配置
3.1 身份验证
# application.yml (Spring Boot)
dubbo
registry
address: nacos://localhost:8848?username=nacos&password=nacos
或
# dubbo.properties
dubbo.registry.address: nacos://nacos:nacos@localhost:8848
3.2 自定义命名空间
# application.yml (Spring Boot)
dubbo:
registry:
address: nacos://localhost:8848?namespace=5cbb70a5-xxx-xxx-xxx-d43479ae0932
或
# application.yml (Spring Boot)
dubbo:
registry:
address: nacos://localhost:8848
parameters.namespace: 5cbb70a5-xxx-xxx-xxx-d43479ae0932
3.3 自定义分组
# application.yml
dubbo:
registry:
address: nacos://localhost:8848
group: dubbo
如果未配置,则默认情况下由 Nacos 指定组。组和命名空间代表 Nacos 中不同的隔离级别。一般来说,命名空间用于隔离不同的用户或环境,而组用于在同一环境中对数据进行进一步分组。
3.4 注册接口级消费者
Dubbo3.0.0 之后,添加了是否注册消费者的参数。如果需要将消费者注册到 nacos 注册中心,则需要将参数 (register-consumer-url) 设置为 true,默认为 false。
# application.yml
dubbo:
registry:
address: nacos://localhost:8848?register-consumer-url=true
或
# application.yml
dubbo:
registry:
address: nacos://localhost:8848
parameters.register-consumer-url: true
3.5 更多配置
参数名称 | 中文描述 | 默认值 |
---|---|---|
username | 连接到 Nacos 服务器的用户名 | nacos |
paasword | 连接到 Nacos 服务器的密码 | nacos |
backup | 备用地址 | null |
namespace | 命名空间 ID | public |
group | 组名 | DEFAULT_GROUP |
register-consumer-url | 是否注册消费者端 | false |
com.alibaba.nacos.naming.log.filename | 初始化日志文件名 | naming.log |
endpoint | 连接到 Nacos 服务器指定的连接点,请参考 文档 | empty |
endpointPort | 连接到 Nacos 服务器指定的连接点端口,您可以参考 文档 | empty |
endpointQueryParams | 端点查询参数查询 | null |
isUseCloudNamespaceParsing | 是否解析云环境中的命名空间参数 | true |
isUseEndpointParsingRule | 是否启用端点参数规则解析 | true |
namingLoadCacheAtStart | 是否在启动时先读取本地缓存 | true |
namingCacheRegistryDir | 指定缓存子目录,位置为 …/nacos/{SUB_DIR}/naming | empty |
namingClientBeatThreadCount | 客户端心跳线程池大小 | 机器 CPU 数量的一半 |
namingPollingThreadCount | 用于数据更新的客户端定时轮询线程池大小 | 机器 CPU 数量的一半 |
namingRequestDomainMaxRetryCount | 客户端通过 HTTP 向 Nacos 服务器请求的重试次数 | 3 |
namingPushEmptyProtection | 当服务没有有效的(健康的)实例时,是否启用保护,启用后将使用旧的服务实例 | false |
push.receiver.udp.port | 客户端 UDP 端口 | null |
在 nacos-server@1.0.0
版本之后,支持客户端通过向服务器上报一些包含特定元数据的实例来控制实例的一些行为。
参数名称 | 中文描述 | 默认值 |
---|---|---|
preserved.heart.beat.timeout | 实例在不发送心跳后,从健康状态变为不健康状态的时间(以毫秒为单位) | 15000 |
preserved.ip.delete.timeout | 实例在不发送心跳后被服务器删除的时间(以毫秒为单位) | 30000 |
preserved.heart.beat.interval | 实例在客户端上报心跳的间隔时间(以毫秒为单位) | 5000 |
preserved.instance.id.generator | 此实例的 ID 生成策略,当值为 snowflake 时,它将从 0 开始递增 | 简单 |
preserved.register.source | 注册实例注册服务框架类型(例如 Dubbo、Spring Cloud 等) | empty |
这些参数可以通过类似于 namespace
的参数扩展方式配置到 Nacos,例如
dubbo.registry.parameters.preserved.heart.beat.timeout=5000
4 工作原理
以下仅展示 Nacos 作为 Dubbo 注册中心的工作原理。建议使用 Dubbo Admin 进行 Dubbo 服务运维
4.1 Dubbo2 注册数据
然后,重启您的 Dubbo 应用,Dubbo 的服务提供和消费信息就可以在 Nacos 控制台显示了
如图所示,服务名前缀为 providers:
的是服务提供者的元信息,consumers:
代表服务消费者的元信息。点击“详情”可查看服务状态详情
4.2 Dubbo3 注册数据
应用级服务发现的“服务名”为应用名
Dubbo3 默认采用“应用级服务发现 + 接口级服务发现”的双注册模式,因此你会发现 Nacos 控制台中同时出现了应用级服务(应用名)和接口级服务(接口名),你可以通过配置
dubbo .registry.register-mode=instance/interface/all
来改变注册行为。