1. Nacos简介
Nacos是一个开源的动态服务发现、配置和服务管理平台,由阿里巴巴开发和维护。
Nacos支持多种注册中心和配置管理器,包括Spring Cloud Discovery、Dubbo、Kubernetes和Apache ServiceComb等。
Nacos提供了REST、gRPC和Java SDK等多种API,使得开发人员可以轻松地与Nacos进行交互
1.1 核心特性
- 配置管理:Nacos提供了统一的配置管理平台,可以帮助用户集中管理不同环境的配置信息。用户可以通过Nacos的控制台或API进行配置的新增、修改、删除等操作,并且支持配置的版本管理。
- 服务发现和注册:Nacos提供了服务注册和发现的功能,可以帮助用户快速发现和访问服务。服务提供者在启动时将服务的元数据注册到Nacos,服务消费者通过Nacos获取服务提供者的地址信息,并进行调用。
- 动态配置:Nacos支持动态配置,可以在不停机的情况下动态修改配置信息。例如,可以通过Nacos修改数据库连接池的最大连接数,而不需要重启应用。
- 健康检查:Nacos提供了健康检查的功能,可以检测服务的可用性。当服务不可用时,Nacos会自动将该服务从服务列表中剔除。
- 路由策略:Nacos支持多种路由策略,可以根据不同的规则将请求路由到不同的服务提供者。
1.2 常见的注册中心
- ZooKeeper:ZooKeeper 是一个高性能的分布式协调服务,它可以作为注册中心和配置中心。它最初是由雅虎开发的,现在是 Apache 的顶级项目之一。ZooKeeper 的主要优点是可靠性和稳定性,但它需要对分布式系统的概念有一定的了解。你可以在这里找到有关 ZooKeeper 的更多信息:ZooKeeper 官方文档
- Consul:Consul 是一个由 HashiCorp 开发的服务网格解决方案,它包括服务发现、配置、安全和流量管理等功能。Consul 的优点是易于使用和部署,同时提供了广泛的 API 和插件支持。你可以在这里找到有关 Consul 的更多信息:Consul 官方文档
- Eureka:Eureka 是 Netflix 开发的一个服务发现组件,它提供了强大的客户端库和服务端组件。Eureka 的优点是易于使用和部署,同时具有高可用性和可扩展性。你可以在这里找到有关 Eureka 的更多信息:Eureka 官方文档
- Nacos:相对于 Spring Cloud Eureka 来说,Nacos 更强大。
Nacos = Spring Cloud Eureka + Spring Cloud Config
Nacos 可以与 Spring, Spring Boot, Spring Cloud 集成,并能代替 Spring Cloud Eureka, Spring Cloud Config。
1.3 Nacos结构图
2. 如何安装和配置Nacos?
2.1 Nacos的安装
首先,你需要下载Nacos的安装包,你可以从Nacos的官方网站上下载:https://github.com/alibaba/nacos/releases(我用的是1.4.1的版本)
解压下载的安装包,进入解压后的目录。
- bin:启动脚本
- conf:配置文件
端口配置
Nacos的默认端口是8848,如果你电脑上的其它进程占用了8848端口,请先尝试关闭该进程。
如果无法关闭占用8848端口的进程,也可以进入nacos的conf目录,修改配置文件中的端口:
运行bin目录下的startup.sh(Linux/MacOS)或startup.cmd(Windows)脚本,启动Nacos服务。
然后 cmd 进入该目录执行命令即可:
startup.cmd -m standalone
打开浏览器,访问http://localhost:8845/nacos,如果能够看到Nacos的登录页面,则说明Nacos已经成功安装并启动。
默认的账户和密码均为:nacos
第一次使用时,不存在任何信息,图中数据忽略不计😂
2.2 如何使用Nacos?
Nacos是一种服务注册和发现的工具,可以帮助我们管理微服务架构中的组件。下面是使用Nacos进行服务注册和发现的基本步骤:
在应用程序中添加Nacos客户端依赖项,例如在Maven项目中添加以下依赖项:
父工程:
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.5.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
客户端:
<!-- nacos客户端依赖包 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
在应用程序中添加Nacos客户端配置,例如在Spring Boot应用程序中,可以在application.properties
文件中添加以下配置:
#nacos服务地址 我的是8845端口
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8845
#服务名(该服务创建成功后为与public下)
spring.cloud.nacos.discovery.namespace=your-namespace
其中server-addr
是Nacos服务器的地址和端口号,namespace
是Nacos的命名空间,用于隔离不同的环境。
在应用程序中添加服务注册和发现的注解,例如在Spring Boot应用程序中,可以使用@EnableDiscoveryClient
注解启用服务注册和发现功能。
@SpringBootApplication
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
在应用程序中注册服务,例如在Spring Boot应用程序中,可以使用@RestController
注解定义一个RESTful服务。
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
在Nacos控制台中查看已注册的服务,可以在浏览器中访问http://localhost:8845/nacos/index.html
,并使用Nacos的默认用户名和密码登录。
- 使用服务注册和发现,您可以轻松地将服务注册到Nacos,并从Nacos发现其他服务。
- 使用配置管理,可以轻松地管理和配置应用程序。