LabelManager 架构
简述
架构说明
- LabelEntities: 指代标签实体集合,有且包含集群标签,配置标签,引擎标签,节点标签,路由标签,搜索标签等。
- NodeLabelService: 实例/节点与标签的关联服务接口类,定义对两者关联关系的增删改查以及根据标签匹配实例/节点的接口方法。
- UserLabelService: 声明用户与标签的关联操作。
- ResourceLabelService: 声明集群资源与标签的关联操作,涉及到对组合标签的资源管理,清理或设置标签关联的资源数值。
- NodeLabelScorer: 节点标签评分器,对应不同的标签匹配算法的实现,使用评分表示节点的标签匹配度。
- 根据标签类的定义信息,递归解析泛型结构,得到具体的标签值类型。
- 转化输入值对象到标签值类型,运用隐式转化或正反解析框架。
- 根据1-3的返回,实例化标签,并根据不同的标签类进行一些后置操作。
- 方法的输入应该为两组网络关系列表,分别是 和 , 其中关系里的Node节点必须具有请求里涉及到所有CORE以及SUITABLE特征的标签,这些节点也称为备选节点。
- 第一步遍历计算关系列表,遍历每个节点关联的标签Label,这一步先给标签打分,如果标签不是请求中附带的标签,打分为0, 否则打分为: (基本分/该标签对应特征值在请求中的出现次数) * 对应特征值的激励值,其中基本分默认为1,节点的初始分为相关联的标签打分的总和;其中因为CORE/SUITABLE类型标签为必须唯一标签,出现次数恒定为1。
- 对得到的备选节点的分数做标准差归一化,并排序。