0%

树(Tree):层次结构的数据结构基础

树是一种非线性数据结构,由节点(Node)和边(Edge)组成,呈现层次化的分支关系。它广泛应用于文件系统、数据库索引、决策分析等场景,是理解更复杂数据结构(如二叉树、B 树)的基础。

树的核心概念与特性

基本定义

树是由n(n ≥ 0)个节点组成的有限集合:

  • n = 0时,称为空树
  • n > 0时,有且仅有一个根节点(Root),其余节点分为若干个互不相交的子集,每个子集本身也是一棵树(称为子树)。

关键术语

  • 节点的度:一个节点拥有的子节点数量(如叶子节点的度为 0)。
  • 树的度:树中所有节点的最大度数(反映树的 “分支能力”)。
  • 父节点与子节点:若节点A是节点B的直接前驱,则AB的父节点,BA的子节点。
  • 叶子节点:度为 0 的节点(无任何子节点)。
  • 深度:从根节点到当前节点的路径长度(根节点深度为 0,子节点深度为父节点深度 + 1)。
  • 高度:从当前节点到最深叶子节点的路径长度(叶子节点高度为 0,父节点高度为子节点高度的最大值 + 1)。

核心特性

  • 唯一性:根节点唯一,非根节点有且仅有一个父节点。
  • 无环性:任意两个节点之间的路径唯一,不存在环路。
  • 层次性:节点按 “根→子树” 的层次关系组织。

树的表示方式

树的存储需体现节点间的父子关系,常见表示方法有以下两种:

1. 父节点表示法(数组存储)

阅读全文 »

Nacos 持久化配置:从嵌入式数据库到 MySQL 集群方案

Nacos 默认使用嵌入式数据库 Derby 存储配置和服务元数据,但其仅适用于单机模式。在生产环境的集群部署中,为保证数据一致性和高可用性,需将数据持久化到外置数据库(目前官方仅支持 MySQL)。本文详细介绍 Nacos 持久化的配置步骤及注意事项。

为什么需要持久化?

  • Derby 的局限性:嵌入式数据库仅存在于当前 Nacos 节点的内存和本地文件中,集群环境下各节点数据无法同步,导致配置和服务信息不一致;
  • 数据可靠性:MySQL 支持数据持久化和主从备份,避免 Nacos 节点故障导致数据丢失;
  • 集群一致性:Nacos 集群所有节点连接同一 MySQL 数据库,确保配置和服务信息全局一致。

Nacos 持久化到 MySQL 的步骤

1. 环境准备

  • MySQL 版本:推荐 5.7 及以上(需支持 InnoDB 引擎);
  • Nacos 版本:2.0.x 及以上(确保兼容 MySQL 驱动);
  • 权限:拥有 MySQL 数据库的创建、表操作权限。

2. 初始化数据库脚本

Nacos 提供了内置的数据库初始化脚本,步骤如下:

阅读全文 »

Nacos 配置分离:基于三元组模型的精细化配置管理

Nacos 通过Namespace(命名空间)Group(分组)Data ID(配置集 ID) 三元组模型实现配置的精细化管理,支持多环境隔离、多业务分组和多服务配置分离。这种模型能有效解决复杂微服务架构中配置混乱的问题,是 Nacos 配置中心的核心设计亮点。

Nacos 数据模型:三元组唯一标识配置

Nacos 的配置数据模型由三个维度构成,共同唯一确定一个配置项:

维度 作用 默认值
Namespace 用于隔离不同环境(如开发、测试、生产),不同命名空间的配置完全隔离。 public(保留空间)
Group 用于同一环境内的配置分组(如按业务模块、服务类型分组)。 DEFAULT_GROUP
Data ID 配置集的唯一标识,通常对应一个服务的配置文件(如user-service-dev.yaml)。 -

关系示意图

Nacos数据模型

1
Namespace(环境) → Group(业务组) → Data ID(服务配置)

例如:

  • 生产环境(prod命名空间)→ 订单服务组(ORDER_GROUP)→ 订单服务配置(order-service-prod.yaml
  • 测试环境(test命名空间)→ 用户服务组(USER_GROUP)→ 用户服务配置(user-service-test.yaml

配置分离的核心场景与实现

1. 环境隔离:Namespace 的应用

场景:开发、测试、生产环境的配置需要严格隔离(如数据库地址、密钥不同)。

实现步骤:

(1)创建命名空间
登录 Nacos 控制台,进入「命名空间」→「新建命名空间」:

阅读全文 »

使用 Nacos 作为配置中心:动态配置管理的实现

Nacos 不仅是优秀的服务注册中心,还能作为配置中心替代 Spring Cloud Config,支持配置的动态更新、环境隔离、共享配置等功能。本文详细介绍如何使用 Nacos 实现配置中心的核心功能。

Nacos 配置中心的核心概念

在使用 Nacos 配置中心前,需理解三个核心概念,用于精确定位配置:

  • Data ID:配置集的唯一标识,格式为${prefix}-${spring.profiles.active}.${file-extension}
  • Group:配置分组,默认DEFAULT_GROUP,用于区分不同业务场景的配置;
  • Namespace:命名空间,默认public,用于隔离不同环境(如开发、测试、生产)。

快速集成 Nacos 配置中心

1. 引入依赖

在 Spring Boot 项目中添加 Nacos 配置中心依赖:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- Spring Cloud Alibaba Nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<!-- 版本需与Spring Cloud Alibaba版本匹配 -->
</dependency>

<!-- 必要的Web依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

2. 配置 Nacos 连接信息

注意:Nacos 配置中心的配置需放在bootstrap.yml(或bootstrap.properties)中,因为配置中心的配置需要在应用启动早期加载。

阅读全文 »

使用 Nacos 作为服务注册中心:快速集成与实战

Nacos 作为 Spring Cloud Alibaba 生态的核心组件,不仅提供了强大的服务注册发现能力,还支持动态配置管理。本文详细介绍如何将 Nacos 集成到微服务中作为注册中心,实现服务的注册与发现。

前期准备:启动 Nacos 服务

在使用 Nacos 作为注册中心前,需确保 Nacos 服务已启动:

  1. 启动单机模式(开发环境):
    进入 Nacos 安装目录的bin文件夹,执行以下命令:

    1
    2
    3
    4
    # Linux/Mac
    sh startup.sh -m standalone
    # Windows
    startup.cmd -m standalone
  2. 验证启动成功
    访问 Nacos 控制台 http://localhost:8848/nacos,使用默认账号密码(nacos/nacos)登录,能看到控制台界面即启动成功。

服务提供者集成 Nacos

1. 引入依赖

在服务提供者的pom.xml中添加 Nacos 服务发现依赖:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- Spring Cloud Alibaba Nacos 服务发现 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<!-- 版本需与Spring Cloud Alibaba版本匹配,如2.2.7.RELEASE -->
</dependency>

<!-- Spring Boot Web(提供REST接口) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
阅读全文 »