youlai-mall项目中Nacos配置中心数据库设计解析

youlai-mall项目中Nacos配置中心数据库设计解析

youlai-mall youlaitech/youlai-mall: youlai-mall 是优莱科技开发的一个开源商城系统,基于Java Spring Boot技术栈构建,集成了多种电商功能模块,如商品管理、订单处理、用户权限控制等,可用于快速搭建在线购物平台。 youlai-mall 项目地址: https://gitcode.com/gh_mirrors/yo/youlai-mall

前言

在微服务架构中,配置中心是不可或缺的组件,它实现了配置的统一管理和动态更新。youlai-mall项目采用了Nacos作为配置中心,本文将深入解析Nacos配置中心的核心数据库表结构设计,帮助开发者理解其工作原理。

Nacos配置中心数据库概述

Nacos配置中心使用MySQL数据库存储所有配置信息,数据库名为nacos_config。该数据库包含多个表,主要分为以下几类:

  1. 配置信息表:存储实际配置内容
  2. 配置历史表:记录配置变更历史
  3. 容量控制表:管理租户和分组的容量
  4. 权限控制表:管理用户和权限

核心表结构详解

1. config_info(配置信息主表)

这是Nacos最核心的表,存储所有配置项的基本信息:

CREATE TABLE `config_info` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    `group_id` varchar(128) DEFAULT NULL,
    `content` longtext NOT NULL COMMENT 'content',
    `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
    `gmt_create` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '创建时间',
    `gmt_modified` datetime NOT NULL DEFAULT '2010-05-05 00:00:00' COMMENT '修改时间',
    `src_user` text COMMENT 'source user',
    `src_ip` varchar(20) DEFAULT NULL COMMENT 'source ip',
    `app_name` varchar(128) DEFAULT NULL,
    `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
    `c_desc` varchar(256) DEFAULT NULL,
    `c_use` varchar(64) DEFAULT NULL,
    `effect` varchar(64) DEFAULT NULL,
    `type` varchar(64) DEFAULT NULL,
    `c_schema` text,
    `encrypted_data_key` text NOT NULL COMMENT '秘钥',
    PRIMARY KEY (`id`),
    UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';

关键字段说明:

  • data_id:配置的唯一ID,在youlai-mall中可能对应各个微服务的配置文件名
  • group_id:配置分组,可用于区分不同环境或业务模块
  • content:存储实际的配置内容(如YAML或Properties格式)
  • tenant_id:支持多租户隔离,在youlai-mall中可用于区分不同业务线
  • encrypted_data_key:敏感配置加密的密钥

2. config_info_beta(Beta配置表)

存储灰度发布的配置信息:

CREATE TABLE `config_info_beta` (
    `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
    `data_id` varchar(255) NOT NULL COMMENT 'data_id',
    `group_id` varchar(128) NOT NULL COMMENT 'group_id',
    `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
    `content` longtext NOT NULL COMMENT 'content',
    `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
    `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
    ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';

特点:

  • beta_ips字段指定可以访问该灰度配置的IP列表
  • 在youlai-mall中可用于新功能灰度发布时的配置管理

3. his_config_info(配置历史表)

记录所有配置变更历史:

CREATE TABLE `his_config_info` (
    `id` bigint(64) unsigned NOT NULL,
    `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
    `data_id` varchar(255) NOT NULL,
    `group_id` varchar(128) NOT NULL,
    `content` longtext NOT NULL,
    `op_type` char(10) DEFAULT NULL,
    ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';

作用:

  • 记录每次配置变更的完整信息
  • op_type字段标记操作类型(INSERT/UPDATE/DELETE)
  • 支持配置回滚功能

4. 容量控制相关表

group_capacity(分组容量表)
CREATE TABLE `group_capacity` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID',
    `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额',
    `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
    `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限',
    ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
tenant_capacity(租户容量表)
CREATE TABLE `tenant_capacity` (
    `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
    `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
    `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额',
    `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
    ...
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';

容量控制机制:

  • 可限制每个租户或分组的配置数量、大小
  • 防止单个租户占用过多资源
  • 在youlai-mall多模块开发中特别有用

5. 权限控制表

Nacos内置了简单的RBAC权限控制:

CREATE TABLE users (
    username varchar(50) NOT NULL PRIMARY KEY,
    password varchar(500) NOT NULL,
    enabled boolean NOT NULL
);

CREATE TABLE roles (
    username varchar(50) NOT NULL,
    role varchar(50) NOT NULL,
    constraint uk_username_role UNIQUE (username,role)
);

CREATE TABLE permissions (
    role varchar(50) NOT NULL,
    resource varchar(512) NOT NULL,
    action varchar(8) NOT NULL,
    constraint uk_role_permission UNIQUE (role,resource,action)
);

默认账号:

  • 用户名:nacos
  • 密码:nacos(存储为BCrypt加密格式)

youlai-mall中的实践建议

  1. 多环境配置管理

    • 使用group_id区分开发、测试、生产环境
    • 例如:youlai-mall-dev, youlai-mall-prod
  2. 微服务配置隔离

    • 每个微服务使用独立data_id
    • 例如:youlai-auth.yml, youlai-gateway.yml
  3. 敏感配置加密

    • 利用encrypted_data_key字段保护数据库密码等敏感信息
  4. 配置版本控制

    • 通过his_config_info表追踪配置变更历史
    • 关键配置变更前做好备份

总结

Nacos配置中心的数据库设计体现了其核心功能:

  • 配置存储与管理(config_info)
  • 多环境支持(group_id)
  • 多租户隔离(tenant_id)
  • 灰度发布(config_info_beta)
  • 版本控制(his_config_info)
  • 权限管理(users/roles/permissions)

理解这些表结构有助于在youlai-mall项目中更好地使用Nacos进行配置管理,特别是在微服务数量增多、配置复杂度提高时,合理的配置分类和组织方式将大大提高运维效率。

youlai-mall youlaitech/youlai-mall: youlai-mall 是优莱科技开发的一个开源商城系统,基于Java Spring Boot技术栈构建,集成了多种电商功能模块,如商品管理、订单处理、用户权限控制等,可用于快速搭建在线购物平台。 youlai-mall 项目地址: https://gitcode.com/gh_mirrors/yo/youlai-mall

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

庞翰烽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值