Nacos 知识总结

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 的健康状况。

以上就是全部内容,如果你有任何问题、意见或建议,都欢迎在评论中分享。让我们继续分享知识,共同成长,一起走向更加美好的未来。感谢你们的阅读,祝愿你们在未来的道路上一帆风顺!

相关推荐

  1. Nacos 知识总结

    2024-01-31 16:08:03       35 阅读
  2. Nacos 基本知识与使用

    2024-01-31 16:08:03       16 阅读
  3. jvm基础知识总结

    2024-01-31 16:08:03       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-31 16:08:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-31 16:08:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-31 16:08:03       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-31 16:08:03       20 阅读

热门阅读

  1. 民安智库-垃圾分类宣传满意度调研

    2024-01-31 16:08:03       34 阅读
  2. 51单片机-4G模块

    2024-01-31 16:08:03       31 阅读
  3. 51单片机——DHT11模块

    2024-01-31 16:08:03       35 阅读
  4. fetch和axios的区别

    2024-01-31 16:08:03       27 阅读
  5. 美易平台:金融科技力量下的美国安全议题关注

    2024-01-31 16:08:03       37 阅读
  6. SQL切分字符串

    2024-01-31 16:08:03       36 阅读
  7. C. Closest Cities

    2024-01-31 16:08:03       30 阅读
  8. 学习鸿蒙基础(3)

    2024-01-31 16:08:03       31 阅读
  9. thinkphp项目之发送邮件

    2024-01-31 16:08:03       33 阅读