实体建模

概述

EntitySet 是 UModel 中用于定义可观测实体集合的核心概念。一个 EntitySet 定义了一类实体资源的结构、属性和行为,是构建可观测数据模型的基础元素。

EntitySet 通过统一的实体定义,帮助我们:

  • 标准化描述 IT 环境中的各种资源。

  • 建立实体间的关联关系。

  • 支持实体的生命周期管理。

  • 实现跨域的数据融合和分析。

应用案例

当前应用案例相关素材,请参考:umodel.zip

EntitySet 定义与设计原则

核心定义

EntitySet 是对同一类实体的抽象定义,包含:

  • 实体类型标识:唯一标识实体类别的名称。

  • 字段结构:定义实体的属性字段和约束。

  • 主键设计:确保实体唯一性的标识字段。

  • 元数据信息:描述实体的展示名称、说明等。

设计原则

  1. 单一职责原则:每个 EntitySet 应该只描述一种类型的实体。

  2. 清晰边界原则:实体边界应该清晰,避免概念重叠。

  3. 演进兼容原则:设计时考虑未来扩展需求,保持向后兼容。

实体字段设计

字段类型和属性

EntitySet 中的字段具有丰富的配置选项,详情请参见字段系统。 

  • 主键字段设计:主键字段用于唯一标识实体,支持单字段和复合字段主键。

    设计要求

    说明

    推荐做法

    避免做法

    唯一性保证

    系统中通过主键字段能够唯一标识一个实体

    service_name + cluster_name

    仅使用 port 等非唯一字段

    稳定性要求

    主键在实体生命周期内保持稳定

    service_idhostname

    ip_addressprocess_id

    语义清晰性

    主键应该具有清晰的业务语义

    service_namepod_name

    uuidhash_value

  • 主键类型配置

    主键类型

    配置示例

    适用场景

    单字段主键

    primary_key_fields: ["service_name"]

    全局唯一的实体

    复合主键

    primary_key_fields: ["service_name", "cluster_name"]

    需要多字段组合才能唯一标识

实体生命周期管理

生命周期阶段

实体在 UModel 中经历以下生命周期阶段:

阶段

说明

行为

活跃

实体活跃期

在活跃期,实体可以被查询到

过期

实体过期

标识实体已过期,在最新时间区间无法查询,但还可以在实体存活期间被查询到

删除

实体被删除

实体最后一次上报后,超过特定TTL(当前默认30天)后会被删除,该实体将无法被查询到

时间字段含义

字段名称

字段配置

含义

用途

管理方式

首次观测时间

first_observed_time_field

实体首次被系统观测到的时间

确定实体的创建时间点

创建时设置,后续不变,若上报程序不带状态,可不填此字段

最后观测时间

last_observed_time_field

实体最后一次被系统观测到的时间

判断实体的活跃状态

每次更新时刷新

保活时间

keep_alive_seconds

实体在最后观测时间之后的存活期限

确定实体的可见范围

配置固定值,默认3600

实体可见期

  • 实体可见期的计算方式(遵循左闭右开原则):[首次观测时间, 最后观测时间 + 保活时间)

  • 下述是一些实体可见期的示例:

    1. 实体第一次上报时间为 2024-01-01 10:00:00,最后一次上报时间为 2024-01-01 11:00:00,保活时间为 3600 秒,则实体可见期为 [2024-01-01 10:00:00, 2024-01-01 12:00:00)

    2. 实体第一次上报时间为 2024-01-01 10:00:00,最后一次上报时间为 2024-01-01 12:00:00,保活时间为 300 秒,则实体可见期为 [2024-01-01 10:00:00, 2024-01-01 12:05:00)