概述
EntitySet 是 UModel 中用于定义可观测实体集合的核心概念。一个 EntitySet 定义了一类实体资源的结构、属性和行为,是构建可观测数据模型的基础元素。
EntitySet 通过统一的实体定义,帮助我们:
标准化描述 IT 环境中的各种资源。
建立实体间的关联关系。
支持实体的生命周期管理。
实现跨域的数据融合和分析。
应用案例
当前应用案例相关素材,请参考:umodel.zip
EntitySet 定义与设计原则
核心定义
EntitySet 是对同一类实体的抽象定义,包含:
实体类型标识:唯一标识实体类别的名称。
字段结构:定义实体的属性字段和约束。
主键设计:确保实体唯一性的标识字段。
元数据信息:描述实体的展示名称、说明等。
设计原则
单一职责原则:每个 EntitySet 应该只描述一种类型的实体。
清晰边界原则:实体边界应该清晰,避免概念重叠。
演进兼容原则:设计时考虑未来扩展需求,保持向后兼容。
实体字段设计
字段类型和属性
EntitySet 中的字段具有丰富的配置选项,详情请参见字段系统。
主键字段设计:主键字段用于唯一标识实体,支持单字段和复合字段主键。
设计要求
说明
推荐做法
避免做法
唯一性保证
系统中通过主键字段能够唯一标识一个实体
service_name
+cluster_name
仅使用
port
等非唯一字段稳定性要求
主键在实体生命周期内保持稳定
service_id
、hostname
ip_address
、process_id
语义清晰性
主键应该具有清晰的业务语义
service_name
、pod_name
uuid
、hash_value
主键类型配置
主键类型
配置示例
适用场景
单字段主键
primary_key_fields: ["service_name"]
全局唯一的实体
复合主键
primary_key_fields: ["service_name", "cluster_name"]
需要多字段组合才能唯一标识
实体生命周期管理
生命周期阶段
实体在 UModel 中经历以下生命周期阶段:
阶段 | 说明 | 行为 |
活跃 | 实体活跃期 | 在活跃期,实体可以被查询到 |
过期 | 实体过期 | 标识实体已过期,在最新时间区间无法查询,但还可以在实体存活期间被查询到 |
删除 | 实体被删除 | 实体最后一次上报后,超过特定TTL(当前默认30天)后会被删除,该实体将无法被查询到 |
时间字段含义
字段名称 | 字段配置 | 含义 | 用途 | 管理方式 |
首次观测时间 |
| 实体首次被系统观测到的时间 | 确定实体的创建时间点 | 创建时设置,后续不变,若上报程序不带状态,可不填此字段 |
最后观测时间 |
| 实体最后一次被系统观测到的时间 | 判断实体的活跃状态 | 每次更新时刷新 |
保活时间 |
| 实体在最后观测时间之后的存活期限 | 确定实体的可见范围 | 配置固定值,默认3600秒 |
实体可见期
实体可见期的计算方式(遵循左闭右开原则):
[首次观测时间, 最后观测时间 + 保活时间)
。下述是一些实体可见期的示例:
实体第一次上报时间为
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)
。实体第一次上报时间为
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)
。