Skip to content

数据源

RobustMQ MQTT 的认证、授权、黑名单支持多种数据源。

数据源是什么

这里的数据源,指的是认证、授权、黑名单所依赖的身份与策略数据来源。
Broker 会从这些数据源同步用户、ACL、黑名单信息,并用于连接鉴权和访问控制。

为什么要支持多数据源

  • 业务系统现状不同:有的已经在 MySQL/Redis,有的希望直接用内置元数据;
  • 不同场景诉求不同:有的重视接入成本,有的重视与现有账号系统打通;
  • 便于渐进演进:可以先用内置数据源快速落地,再切换到外部数据源;
  • 避免强绑定单一存储:降低后续迁移和架构调整成本。

用户怎么用

使用步骤一般是:

  1. 通过管理控制台或命令行配置 storage_type
  2. 填写对应数据源配置(如 mysql_configredis_config);
  3. 如果是 SQL 类数据源,配置查询语句并保证结果字段满足约定;
  4. 启动后观察认证结果与缓存同步状态,确认链路可用。

运行原理

数据源链路采用“缓存优先”模型,但不同数据源的更新机制不同:

  1. 客户端连接鉴权时,优先直接比对内存中的缓存数据;
  2. 内置数据源(Meta Service)发生变更后,缓存实时更新,无延时;
  3. 外部数据源(MySQL/PostgreSQL/Redis/MongoDB/HTTP)通过定期同步更新缓存;
  4. 外部数据源主要承担同步与管理职责,不在每次 CONNECT 时参与实时查询。

这种模式的核心目标是:把鉴权热路径从外部 IO 转为内存访问,提升连接高峰期稳定性。
默认情况下,外部数据源同步存在约 5 秒延时;内置数据源为实时更新,不存在该延时。

当前支持的数据源

  • 内置数据源(Meta Service)
  • MySQL
  • PostgreSQL
  • Redis
  • MongoDB
  • HTTP

设计目标

  • 不强制使用固定表结构;
  • 支持通过配置 SQL/查询语句从现有系统同步数据;
  • 鉴权热路径走本地缓存,数据源用于同步与管理;
  • 在性能和一致性之间做可控权衡(秒级最终一致)。

通用配置模型

认证配置中的存储层由 StorageConfig 描述,核心字段包括:

  • storage_type:数据源类型
  • placement_config
  • mysql_config
  • postgres_config
  • redis_config
  • mongodb_config
  • http_config

实际启用哪一类数据源,取决于 storage_type 以及对应子配置是否填写。

使用建议

  • 优先用现有系统里已经维护的账号与 ACL 数据,不要重复建模;
  • SQL 查询结果字段要和系统约定一致(见各数据源页面);
  • 高并发场景建议以缓存命中率为核心指标,避免鉴权路径直接依赖外部数据库;
  • 先从单一数据源跑通,再考虑多数据源并存。

二级页面