Cloud Alibaba --Nacos
简单一句话:Nacos就是注册中心 + 配置中心的组合,相当于Eureka + config + Bus;
Nacos官网:https://nacos.io/zh-cn/docs/what-is-nacos.html
下载安装:github下载太慢,推荐百度网盘下载(1.1.4):
zip:
链接:https://pan.baidu.com/s/1pJL1dmABECVpPAwyFDJvqg
提取码:4otz
gz:
链接:https://pan.baidu.com/s/1EJYpX-1ZwSRezIFfNQUQ0Q
提取码:vsmz
安装完成启动Nacos
访问:http://localhost:8848/nacos
默认账号:nacos; 密码:nacos
一、Nacos服务注册与发现
maven依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
其他项目可能用上的依赖:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency>
yml配置:
server: port: 9001 spring: application: name: cloud-alibaba-nacos-provider cloud: nacos: discovery: server-addr: localhost:8848 management: endpoints: web: exposure: include: '*'
有关Nacos Discovery Starter配置的更多信息
组态 | 键 | 默认值 | 描述 |
---|---|---|---|
服务器地址 |
|
Nacos服务器侦听器的IP和端口 |
|
服务名称 |
|
|
命名当前服务 |
重量 |
|
|
值范围:1到100。值越大,重量越大。 |
网卡名称 |
|
如果未指定IP地址,则注册的IP地址是网卡的IP地址。如果也未指定,默认情况下将使用第一个网卡的IP地址。 |
|
注册IP地址 |
|
最高优先级 |
|
注册端口 |
|
|
默认情况下将自动检测。不需要配置。 |
命名空间 |
|
一个典型的场景是隔离针对不同环境的服务注册,例如测试和生产环境之间的资源(配置,服务等)隔离。 |
|
快捷键 |
|
阿里云帐户访问密钥 |
|
密钥 |
|
阿里云账户密钥 |
|
元数据 |
|
您可以使用地图格式为服务定义一些元数据 |
|
日志文件名 |
|
||
集群名称 |
|
|
Nacos的群集名称 |
终点 |
|
特定服务在特定区域中的域名。您可以使用该域名动态检索服务器地址 |
|
是否集成色带 |
|
|
在大多数情况下设置为true |
启用Nacos手表 |
|
|
设置为false以关闭手表 |
启动类添加:@EnableDiscoveryClient
服务提供者(provider)与服务消费者配置基本一样参照上面,只是配置的服务名字不一样
spring-cloud-starter-alibaba-nacos-discovery 默认集成了Ribbon
![](https://img2020.cnblogs.com/blog/1419013/202005/1419013-20200510161958712-1788483493.png)
因此服务消费者(consumer)可以通过RestTemplate + ribbon 做负载调用服务
![](https://img2020.cnblogs.com/blog/1419013/202005/1419013-20200510162202073-930349820.png)
二、Nacos config 统一配置中心
maven依赖:
<!--alibaba-nacos-config--> <dependency> <groupId> com.alibaba.cloud </groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
bootstrap.yml:
server: port: 3377 spring: application: name: nacos-config-client cloud: nacos: discovery: # nacos 服务注册中心地址 server-addr: localhost:8848 config: # nacos 作为配置中心的地址 server-addr: localhost:8848 # 指定yaml格式的配置方式 file-extension: yaml
application.yml
spring:
profiles:
active: dev
启动类添加:@EnableDiscoveryClient
controller:
@RestController @RefreshScope // 支持Nacos的动态刷新功能 public class ConfigClientController { @Value("${config.info}") private String configInfo; @GetMapping("/config/info") public String getConfigInfo(){ return configInfo; } }
在Nacos中添加配置文件:
Data ID文件命名规范:
启动项目看看能不能获取到配置信息:
自定义命名空间:
命名空间用于隔离不同租户的配置。在不同的命名空间中,组和数据ID可以相同。命名空间的典型场景是隔离不同环境的配置,例如,开发/测试环境与生产环境(配置和服务等)之间的隔离。
如果未指定名称空间,则使用Nacos的“公共”名称空间${spring.cloud.nacos.config.namespace}
。您还可以通过以下方式指定自定义名称空间:
spring.cloud.nacos.config.namespace = b3404bc0-d7dc-4855-b519-570ed34b62d7
此配置必须在bootstrap.properties文件中。的值spring.cloud.nacos.config.namespace
是名称空间的ID,可以从Nacos控制台中检索ID的值。添加配置时,请勿选择其他名称空间。否则,将无法正确检索配置。
nacos config更多配置参数如下:
组态 | 键 | 默认值 | 描述 |
---|---|---|---|
服务器地址 |
|
Nacos服务器侦听器的IP和端口 |
|
来自Nacos配置的Dataid |
|
首先使用前缀,然后使用名称,最后使用spring.application.name |
|
来自Nacos配置的Dataid |
|
首先使用前缀,然后使用名称,最后使用spring.application.name |
|
编码nacos配置内容 |
|
编码nacos配置内容 |
|
GROUP for Nacos配置 |
|
|
GROUP for Nacos配置 |
nacos config dataId的后缀,也是config内容的文件扩展名。 |
|
|
nacos config dataId的后缀,以及config内容的文件扩展名(现在支持属性或yaml(yml)) |
从nacos获取配置超时 |
|
|
从nacos获取配置超时 |
终点 |
|
终点 |
|
命名空间 |
|
命名空间 |
|
快捷键 |
|
阿里云帐户访问密钥 |
|
密钥 |
|
阿里云账户密钥 |
|
Nacos Server的上下文路径 |
|
Nacos Server的上下文路径 |
|
集群名称 |
|
集群名称 |
|
共享配置的Dataid |
|
共享配置的数据标识,用“,”分隔 |
|
共享配置的动态刷新dataid |
|
共享配置的动态刷新数据标识,用“,”分隔 |
|
自定义dataid |
|
这是一个列表,由 |
自定义组:
{spring.cloud.nacos.config.group}
未定义配置时,默认情况下使用DEFAULT_GROUP 。如果需要定义自己的组,则可以在以下属性中进行定义:
spring.cloud.nacos.config.group = DEVELOP_GROUP