Nacos是阿里云中间件团队开源的一个项目。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。 Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。 有了Nacos,你就同时拥有了注册发现和配置中心!
Nacos与其它注册中心特性对比(下图是找的)
Nacos 的关键特性包括:
逻辑架构及其组件介绍
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
从该地址下载Nacos编译后的压缩包并解压:https://github.com/alibaba/nacos/releases 目前最新版本2.0.0预发行版,推荐使用1.3.2稳定版本。
sh startup.sh -m standalone
cmd startup.cmd -m standalone
服务器启动后,浏览器访问地址:http://localhost:8848/nacos/ (用户名和密码都是nacos)
接下来,讲一下如何在您的 Spring Cloud 项目中启用 Nacos 的服务发现功能。配置服务,从而服务可以通过 Nacos 的服务注册发现功能将其服务注册到 Nacos server 上。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
application.yml中配置 Nacos server 的地址和应用名。
spring:
application:
name: nacos-demo
cloud:
nacos:
discovery:
server-addr: localhost:8848
通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。
@SpringBootApplication
@EnableDiscoveryClient
public class NacosDemoApplication {
public static void main(String[] args) {
SpringApplication.run(NacosDemoApplication.class, args);
}
}
启动服务,然后到Nacos server查看是否注册成功。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>${latest.version}</version>
</dependency>
注意:版本 2.1.x.RELEASE 对应的是 Spring Boot 2.1.x 版本。版本 2.0.x.RELEASE 对应的是 Spring Boot 2.0.x 版本,版本 1.5.x.RELEASE 对应的是 Spring Boot 1.5.x 版本。
bootstrap.yml中配置 Nacos server 的地址和应用名。
spring:
application:
name: nacos-demo
cloud:
nacos:
config:
server-addr: localhost:8848
file-extension: yml
说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在Nacos server上增加配置信息(配置管理->配置列表->新增配置)。
在服务项目中尝试获取Nacos server的配置信息。
@SpringBootApplication
public class NacosDemoApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosDemoApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("user.name");
String userPassword = applicationContext.getEnvironment().getProperty("user.password");
System.err.println("user name :" + userName + "; password: " + userPassword);
}
}
重新启动项目,发现控制台输出取到了Nacos server的配置信息。
Nacos功能相当强大,既可以做服务发现,又能做配置管理,并且开源项目还在维护中,相信随着版本的不断更新迭代,一定会更强大更稳定。