portalDB的是Apollo Portal(配置管理门户)的专属关系型数据库,是支撑Portal前端所有管理操作的核心数据底座——所有通过Portal页面进行的配置管理、权限控制、项目组织等操作的元数据、权限数据、操作日志,都会持久化存储在portalDB中。
同时要注意,Apollo的portalDB和负责存储具体配置内容的configDB、支撑服务治理的adminDB分工明确,三者是Apollo最核心的三个数据库,portalDB聚焦「管理侧」 数据,不存储实际的配置key-value内容。
一、portalDB的核心存储内容
portalDB存储的是配置管理的“元数据/管控数据”,而非具体配置内容,所有数据都围绕Portal的可视化操作和权限管控展开,核心分类如下:
- 项目与组织元数据
这是配置管理的基础载体,包括项目信息(项目ID、名称、描述、负责人、创建时间)、组织/部门层级(如公司-部门-项目的归属关系)、项目关联的应用信息等,Apollo所有配置都按项目维度管理,这些基础数据全部存在portalDB。 - 权限管控全量数据
这是portalDB最核心的作用之一,Apollo的细粒度权限体系完全基于portalDB实现,包括:- 用户/团队信息(关联企业LDAP/账号体系、用户所属部门);
- 角色与权限分配(项目管理员、开发、测试、运维等角色,以及角色对应的操作权限:如编辑配置、发布配置、管理权限等);
- 环境级权限规则(谁能操作某个项目的DEV/FAT/UAT/PRO环境配置,生产环境通常做严格权限管控);
- 权限审批记录(如普通用户申请生产环境权限的审批流程、结果)。
- 环境/集群的关联映射数据
Portal是多环境/多集群的统一管理入口,需要记录项目与环境、集群的绑定关系,包括:- 项目关联的环境列表(如某项目开启DEV/FAT/PRO三个环境);
- 集群信息(默认集群、自定义集群);
- 环境与底层Config Service的地址映射(Portal知道向哪个Config Service转发配置操作请求)。
- 操作审计与全量日志数据
所有通过Portal进行的配置操作都会留下可追溯记录,全部存储在portalDB,用于问题排查、责任追溯,包括:- 配置操作日志(谁、何时、修改了哪个项目/命名空间的配置,改前/改后内容);
- 配置发布/回滚记录(发布人、发布时间、发布版本、目标环境/集群);
- 权限操作日志(谁、何时给哪个用户分配/撤销了什么权限);
- 审批流程日志(权限申请、配置发布审批的发起/通过/驳回记录)。
- Portal自身的系统配置
支撑Portal服务运行的自身配置,比如邮件/钉钉/企业微信的通知配置(配置变更后向指定人发送通知)、第三方登录集成信息(LDAP/企业微信登录)、Portal的运行参数等。
二、portalDB的核心作用
基于上述存储内容,portalDB是Portal服务正常运行的必要前提,核心支撑Apollo的四大核心能力,缺一不可:
- 支撑Portal的可视化管理操作
用户在Portal页面创建项目、编辑配置、分配权限、发布配置等所有操作,读取的数据源和操作后的持久化都依赖portalDB;如果没有portalDB,Portal只是一个空的前端页面,无法保存任何用户操作,也无法展示任何项目/配置信息。 - 实现Apollo的细粒度权限控制
Apollo的权限体系是项目-环境-角色三级管控(比如仅项目管理员能分配生产环境权限),Portal每次处理用户操作时,都会先从portalDB查询该用户的权限规则,判断是否允许执行操作(如普通开发能否修改生产配置),从根源保证配置操作的安全性。 - 提供配置操作的全链路追溯与审计
生产环境中配置变更是高危操作,portalDB存储的全量操作日志,让管理员可以通过Portal快速查询“谁在什么时候改了什么配置”,定位配置异常的原因、责任人,是线上问题排查的关键依据。 - 实现多环境/多集群的统一管理
Apollo的Config Service是按环境独立部署的(DEV/FAT各有一套),而Portal是单实例统一管理所有环境,正是通过portalDB中项目-环境-Config Service的映射关系,让用户在一个页面就能操作所有环境的配置,无需单独对接每个环境的底层服务,降低管理成本。
三、portalDB vs configDB
| 数据库 | 核心归属 | 存储核心内容 | 核心作用 | 部署特点 |
|---|---|---|---|---|
| portalDB | Portal服务 | 项目、权限、日志、组织等管控元数据 | 支撑用户的可视化管理/权限控制 | 单实例(主从)部署,多环境共用 |
| configDB | Config Service | 具体的配置key-value内容、配置版本、命名空间 | 存储/下发实际配置内容 | 按环境独立部署(DEV/FAT/PRO各一套) |
四、额外部署注意点
- portalDB是多环境共用的(Apollo的Portal单实例管理所有环境),因此它的高可用至关重要,生产环境必须做主从复制+定时备份,防止数据丢失(一旦portalDB损坏,所有项目、权限、操作日志都会丢失);
- portalDB仅面向Portal服务提供数据读写,Config Service/Admin Service不会直接访问portalDB,各服务之间通过接口交互,保证数据隔离。
总结
portalDB是Apollo配置管理门户(Portal)的专属数据底座,核心承载管理侧的元数据、权限数据、操作日志,是连接用户可视化操作和底层配置存储(configDB)的桥梁;
它的核心价值是支撑Portal的所有管理操作、实现细粒度权限控制、提供操作审计追溯,没有portalDB,Apollo的可视化管理、权限管控等核心功能都无法实现。
除非注明,否则均为李锋镝的博客原创文章,转载必须以链接形式标明本文链接
文章评论