Nacos 知识总结
一、Nacos 简介
1.1 Nacos 是什么?
Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款动态命名和配置服务,用于管理微服务架构中的服务发现和配置管理。它提供了一组简单易用的 API,帮助开发者快速实现服务注册、发现、配置管理等功能。Nacos 可以替代传统的 Eureka、Config 等组件,实现更高效、稳定的服务治理。
1.2 Nacos 的特点
易于集成:支持多种主流框架,如 Spring Cloud、Dubbo 等,方便开发者快速接入。
高可用:支持集群部署,确保服务发现和配置管理的高可用性。
动态配置:支持动态修改配置,无需重启应用即可生效。
服务分组:支持对服务进行分组管理,方便实现复杂的服务依赖关系。
负载均衡:内置负载均衡策略,支持自定义负载均衡算法。
二、Nacos 安装与部署
2.1 环境要求
JDK 1.8+
Maven 3.2.x
MySQL 5.6+ 或 MariaDB 10.0+(用于存储配置信息)
2.2 下载与解压
从 Nacos 官网(https://nacos.io/zh-cn/docs/quick-start.html)下载最新版本的 Nacos 压缩包,解压到指定目录。
2.3 启动 Nacos
进入解压后的 nacos 目录,执行以下命令启动 Nacos:
cd nacos/bin
sh startup.sh -m standalone
启动成功后,访问 http://localhost:8848/nacos 即可看到 Nacos 控制台。
2.4基于docker安装
1)下载镜像
docker pull nacos/nacos-server
2)单机部署
docker run --name nacos -d -p 8848:8848 -e MODE=standalone -e NACOS_SERVER_IP=192.168.184.66 nacos/nacos-server
三、Nacos 核心概念
3.1 服务注册与发现
在微服务架构中,服务之间需要相互调用,因此需要一个服务注册中心来管理这些服务。Nacos 提供了服务注册与发现的机制,使得服务之间能够相互发现并调用。
3.2 配置管理
微服务架构中,各个服务的配置信息通常分散在不同的配置文件中,这样容易导致配置信息的不一致。Nacos 提供了统一的配置管理功能,可以将各个服务的配置信息集中管理,方便修改和维护。
3.3 服务分组
在实际业务中,我们可能需要将不同的服务划分到不同的分组,以便于管理和调用。Nacos 支持对服务进行分组管理,可以根据业务需求创建不同的分组,将服务划分到对应的分组中。
3.4 负载均衡
当一个服务有多个实例时,需要在这些实例之间进行负载均衡,以保证请求的均匀分配。Nacos 内置了负载均衡策略,可以根据实际需求选择合适的负载均衡算法。
四、Nacos 服务注册与发现
4.1 服务注册
在使用 Nacos 进行服务注册时,需要在服务的启动类上添加 @EnableDiscoveryClient 注解,表示开启服务注册功能。然后,在 application.properties 或 application.yml 文件中配置 Nacos 服务器的地址和端口。
spring:
cloud:
nacos:
discovery:
server-addr: localhost:8848
4.2 服务发现
服务发现是通过 Nacos 提供的 DiscoveryClient 接口实现的。可以通过注入 DiscoveryClient 实例,获取注册到 Nacos 的服务列表。例如:
@Autowired
private DiscoveryClient discoveryClient;
public List<ServiceInstance> getServiceInstances(String serviceName) {
return discoveryClient.getInstances(serviceName);
}
五、Nacos 配置管理
5.1 配置信息格式
Nacos 支持两种配置信息格式:Properties 和 YAML。其中,Properties 格式适用于简单的配置信息,而 YAML 格式适用于复杂的配置信息。
5.2 配置监听
在 Nacos 中,可以通过监听配置信息的变化来实现动态更新。首先,需要在 application.properties 或 application.yml 文件中配置 Nacos 服务器的地址和端口。然后,在需要监听配置变化的地方,使用 @RefreshScope 注解标注类或方法。例如:
@RestController
@RefreshScope
public class ConfigController {
// ...
}
5.3 配置持久化
为了确保配置信息的可靠性,Nacos 支持将配置信息持久化到数据库中。在 Nacos 的安装目录下,找到 conf/application.properties 文件,修改以下配置项:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=123456
六、Nacos 服务分组
6.1 创建分组
在 Nacos 控制台中,可以创建不同的分组,以便于管理和调用。点击左侧菜单栏的 “服务列表”,然后点击右上角的 “新建分组” 按钮,输入分组名称和描述,点击 “确定” 按钮即可创建分组。
6.2 服务分组管理
创建分组后,可以在分组下创建和管理服务。点击左侧菜单栏的 “服务列表”,选择对应的分组,然后点击右上角的 “新建服务” 按钮,输入服务名称和描述,点击 “确定” 按钮即可创建服务。创建服务后,可以在服务详情页面查看服务的实例列表、配置信息等。
七、Nacos 负载均衡
7.1 负载均衡策略
Nacos 内置了轮询(RoundRobin)和随机(Random)两种负载均衡策略。可以根据实际需求选择合适的负载均衡算法。在 application.properties 或 application.yml 文件中配置负载均衡策略:
spring:
cloud:
loadbalancer:
my-service: # 替换为你的服务名称
ribbon:
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule # 替换为你需要的负载均衡策略类名
7.2 自定义负载均衡算法
如果 Nacos 内置的负载均衡策略不能满足需求,可以自定义负载均衡算法。首先,需要编写一个继承自 IRule 接口的类,实现自己的负载均衡算法。然后,在 application.properties 或 application.yml 文件中配置自定义的负载均衡算法类名:
spring:
cloud:
loadbalancer:
my-service: # 替换为你的服务名称
ribbon:
NFLoadBalancerRuleClassName: com.example.MyRule # 替换为你自定义的负载均衡算法类名
八、Nacos 高可用部署
8.1 集群模式
为了保证 Nacos 的高可用性,可以将其部署为集群模式。在集群模式下,多个 Nacos 节点会组成一个集群,共享数据和状态。当某个节点发生故障时,其他节点仍然可以提供服务。
8.2 部署步骤
准备多台服务器,确保它们之间的网络互通。
在每台服务器上安装 Nacos,并修改 conf/application.properties 文件,添加以下配置项:
spring.cloud.nacos.discovery.server-addr=服务器IP:端口 # 替换为其他服务器的 IP 和端口
分别启动每台服务器上的 Nacos,完成集群部署。
九、Nacos 监控与管理
9.1 Nacos 控制台
Nacos 提供了一个 Web 控制台,方便用户查看和管理服务、配置等信息。通过浏览器访问 Nacos 控制台(http://localhost:8848/nacos),可以看到左侧的菜单栏,包括服务列表、配置列表、分组管理等功能。
9.2 Actuator 监控
Nacos 集成了 Spring Boot Actuator,可以通过 Actuator 提供的端点来监控 Nacos 的状态和性能。在 application.properties 或 application.yml 文件中添加以下配置项:
management:
endpoints:
web:
exposure:
include: '*' # 暴露所有端点
然后,通过访问 Actuator 的端点(如:http://localhost:8848/actuator/health)来查看 Nacos 的健康状况。
以上就是全部内容,如果你有任何问题、意见或建议,都欢迎在评论中分享。让我们继续分享知识,共同成长,一起走向更加美好的未来。感谢你们的阅读,祝愿你们在未来的道路上一帆风顺!