Skip to content

元数据中心(yidun-mplatform-meta) ​

全平台「字段、枚举、风险标签、风险等级」的统一定义处。改这里等于改所有下游的词汇表。

1. 业务定位 ​

解决「同类元数据各服务各自维护、口径不一」的问题。它托管六类定义:

类别内容
业务域业务组(SKU)、业务类型、行业、适用层级
配置配置项 ConfigDef、配置类型 ConfigType
枚举枚举类 EnumClass、枚举定义 EnumDef
字段字段集 FieldSet、字段定义 FieldDef
风险等级RiskLevelSet / RiskLevelDef
风险标签RiskTagSet / RiskTagDef

下游所有服务(策略、规则、名单、指标、预处理、智能风控、SDK 接入)都通过 yidun-meta-*-client 消费这些定义。

2. 架构与模块划分 ​

模块类型职责
management/front-dubbo-apiDubbo面向控制台(经 ShenYu 网关)
management/back-dubbo-apiDubbo面向其他后端系统(批量导入等)
management/management-serverapp管理 API、同步调度、metaio 导出
service/business、service/basejar13 个业务 Service、13 个 Manager + DAO
event-client/core-client、config-client、field-client、risktag-clientjar下游消费端 SDK
contract、commonjar跨库共享语义、通用工具

3. 核心链路 ​

两条保证一致性的机制:

  1. 实时推送:变更后立即发事件。
  2. 兜底对账:定时任务按 modifyTime > lastSyncTime 扫描补推,启动时回补 12 小时。

4. 关键数据模型 ​

13 张核心表:business_group、business_group_industry、business_type、config_def、config_type、enum_class、enum_def、field_def、field_set、risk_level_def、risk_level_set、risk_tag_def、risk_tag_set。

每个实体带两个作用域字段:

  • suitableLevel(适用层级):决定能被哪些 SKU/业务类型复用。
  • scope(作用域):决定可见范围(平台内置 / 业务自定义)。

5. 存储与中间件 ​

组件用途
MySQL13 张元数据表
Redis部分查询缓存、分布式能力
事件中台变更分发唯一通道
Apollo配置热刷新(ApolloRefresher)

6. 设计模式与扩展点 ​

扩展点位置说明
事件客户端event-client/* 四个 SDK下游按数据类型订阅
启动预热ApplicationPreHeater + ParallelPreheatTask启动并发预热元数据,避免首请求抖动
环境迁移metaio 子包 SqlCreator把一个 SKU 的全部元数据导出为 SQL insert
批量导入provider/back/*逐条校验,code/type 为空则跳过

7. 上下游依赖 ​

方向模块说明
上游mplatform-event事件发布
上游union-admin操作日志
下游mplatform-strategy、checker-rule、checker-namelist、checker-metrics、checker-preprocess、intelligent-risk、mplatform-business、irisk-sdk-server消费定义缓存

8. 工程约束与变更红线 ​

  • 实体字段/事件类型码/缓存 Key 不能随意改:所有下游都按此反序列化,改动等于破坏兼容。
  • 禁止下游直读元数据 DB:只能通过 client 缓存或 back-dubbo-api。
  • scope 与 suitableLevel 必须正确:配错会导致元数据「查不到」或「被不该用的业务用了」。
  • 模块版本固定 1.0.0-SNAPSHOT:父 POM 明确要求,破坏分层构建。
  • 创建业务类型时字段集自动创建由 BusinessTypeProviderForFront.createFieldSet 编排,人工干预需确认无重复。

9. 关键代码索引 ​

主题路径说明
管理服务入口yidun-mplatform-meta/management/management-server/src/main/java/.../ManagementApplication.java可执行服务
缓存同步yidun-mplatform-meta/service/business/src/main/java/.../sync/CacheSyncService.java发事件
兜底对账yidun-mplatform-meta/service/business/src/main/java/.../sync/AbstractCacheSyncTask.java扫表补推
字段集业务yidun-mplatform-meta/service/business/src/main/java/.../FieldSetService.java字段集 CRUD
字段事件 SDKyidun-mplatform-meta/event-client/field-client/src/main/java/.../FieldEventListenerPlugin.java下游消费
迁移导出yidun-mplatform-meta/management/management-server/src/main/java/.../metaio/SqlCreator.java导出 SQL

10. 排查要点 ​

现象定位结论
新字段在规则里选不到看字段集 suitableLevel/scope 与下游缓存作用域不对或缓存未刷新
下游报字段不存在比对 fieldCode 与 jsonPath字段定义未同步到该下游
风险标签 ID 冲突看标签集作用域不同业务自定义标签重名
改了元数据但列表不变看事件是否发出、下游最后同步时间事件漏发,等对账任务或手动触发
环境迁移后数据缺失看导出 SQL 是否覆盖全部实体metaio 未包含该实体类型
最近更新

内部资料,请勿外传