查看原文
其他

B站运维数仓建设和数据治理实践

李雪薇 ITPUB 2023-03-21

随着B站业务的高速发展,公司内部业务、基础架构和运维对于通用运维性数据的多样性、实时性和集成性需求越来越多,对数据质量的要求越来越高。而伴随着大数据技术的不断发展和成熟,B站也对公司内部基础数据的治理和管控进行了大量尝试和实践,最终建设了一体化运维数仓,来支撑满足内部业务/基础架构/工程效率/SRE团队对于数据的强烈需求。



 本期分享嘉宾 

袁帅

哔哩哔哩SRE资深研发工程师

【嘉宾介绍】2020年加入B站,先后从事过大数据运维平台,TIDB数据库管控平台,运维作业流引擎及服务树&CMDB等运维数据中台研发工作。个人擅长基础架构、Devops和SRE等领域架构设计和落地建设,目前专注于SRE体系下效能平台建设,致力于通过工程化和产品化来提升SRE和运维工作的整体效能。

本文整理自SACC 2022中国系统架构师大会上嘉宾演讲,内容将围绕B站运维数仓的建设,分别从引擎侧、平台侧和业务侧展开介绍,分享在落地实践中面临的挑战和问题。本文主要包括以下部分:

1. B站SRE体系是如何构建元数据和使用

2. 一步步,服务树沦为一个毫无边界的数据中心

3. B站运维数仓建设的整体思路

4. 关注数据质量

5. 总结




B站SRE体系是如何构建元数据和使用

早在几年前,B站内各个平台基于对服务元信息统一管控的强烈诉求,诞生了一个新项目,它就是我们内部所称的服务树。服务树的主要功能是以服务的形式来提供周边平台的资源对接支撑。服务树是一个以应用为视角来组织服务的树形目录,基于这个目录来做资源的细分类和权限隔离。

事实上服务对应着应用服务所做的就是为应用分配全局唯一Appid周边平台业务数据组织,聚合均已Appid标识服务树具备实例管理功能提供应用部署相关的元信息(比如IP机房云厂商等)

服务树具备节点角色管理功能负责一些基于RBAC鉴权的场景。基于内部统一用户,托管个系统角色用户管理功能,实现鉴权从图上可以看得出来,服务树第一层是应用层第二层是实例层第三层是人员角色层

周边平台像资产管理系统Discovery、跳板机容器平台CICD、日志Moni监控Trace都是以服务树为支撑来进行数据的整合 

如何构建应用的元数据主要采用三段式来进行构建,按照部门、项目、应用建立应用组织关系,提供全局应用ID。

那么如何产生管理业务和资产的关联关系?图中有提到在应用的视角出发会有环境和挂载点可以区分机器的环境挂载servervmcontainer、db等资产信息从而实现机器故障时的业务感知。

此外元数据提供RBAC模式业务角色,提供Admin、RD、QA、OP、Vistor默认的五种角色,也就是在部门项目应用这三层节点上绑定用户和角色的信息,由于节点之间存在自上而下的继承,所以权限也是往下继承的 

如何使用数据?Appid作为平台资源管理核心。以CI平台为例,如果以APP视角来构建就需要APPGit repo镜像进行关联通过编译镜像来构建它的编译产物

CD平台无论是容器发布还是物理机发布都是根据应用选择制品,选择实例。周边平台的资源都围绕Appid建设,应用提供资源和人员信息关联。


一步步,服务树沦为一个毫无边界的数据中心

事实上服务树是围绕人事物产生的元数据中心伴随着长期数据注入却没有一个简单治理的过程服务树就一步步沦为一个毫无边界的数据中心服务树具备的四大核心问题

数据治理不足,灵活性不足数据直接关联关系缺失,围绕应用做的资产关系缺乏统一的规范注册上报,上报的逻辑不能很好的支持配置项的自定义和扩展,导致接入新资源时缓慢,不具备持续治理的能力

权限管控不足RBAC场景无法满足细粒度、精细化的权限管控。直接或间接导致周边平台乱用服务树角色,导致角色人员混乱,无法治理。

自动化能力缺失。传统的资源,自动化能力严重不足,很多物理机、云主机销毁后无法感知,导致数据准确性降低。对于容器类信息,同样面临该问题。

消费场景考虑欠缺。围绕应用建设的运维数仓,本身从设计上没有考虑应用变动所带来的消费场景,周边平台对接完,发现应用改动后,缺乏感知。

对于API的暴露来说,有个很明显的问题,在前期缺乏设计的情况下,OpenAPI会出现混乱。主要体现在四方面:缺乏规范和制度,快速迭代,快速满足需求;平台调用方缺乏治理和维护;接口替换代码不处理,接口文档长期不维护;消费场景太多,平台定制接口太多,很多功能可以复用接口。 

数据更新依赖没有合理的消费场景,是通过全量查询来闭环所有操作。举例来讲,服务CMDB和资产CMDB之间是割裂的,CMDB通过各领域提供的全量查询接口来感知数据变化,不停定时做全量同步,数据准确性、实时性得不到保障。如果每次都是全量查询,在数据库层面是一个比较大的性能损耗。

此外,非标的使用方式太多,总共有六大块应用的非标使用:应用作为其他平台的资源概念出现,实现权限管控;应用存在多个唯一ID;应用组概念强行套用;没有使用应用,而使用部门和项目,导致部门,项目变动,部门组织调整出错;应用下的环境和挂载点使用非标;应用作为集群,组件出现。 

无法为应用进行画像。目前核心的问题在于应用缺乏应用资源注册,应用上下游依赖关系没有梳理,导致在水平层面或垂直层面缺乏围绕应用构建拓扑的能力。

针对上述痛点,SRE团队做过一些努力,但治理数据却无从下手。因为最小权限安全控制原则,服务树权限申请审批没有限制导致人员、权限信息混乱,导致应用无法迁移,应用无法交接,应用下所使用的资源,无法做关联,覆盖不全。


B站运维数仓建设的整体思路

B站建设运维数仓的目标和准则是什么围绕应用来建设CMDB,大概有以下几点以应用为中心提供统一的元数据管理中心CMDB建设的核心诉求就是做好应用的全生命周期管理资源为辅构建应用与资源的关联和拓扑CMDB核心消费场景就是持续的交付CMDB是一个持续迭代的过程

按照场景和能力拆分基础资源CMDB和应用维度的CMDB,本质上应用也是资源资源的注册和消费需要闭环数据质量的保障自动发现标准流程人工维护边界边界边界有哪些是我们坚决不会做的事情

元数据中心作为SRE体系中核心的服务存在,元数据中心的数据来自CMDB,支持基础架构服务平台运转;元数据中心为端到端的服务运行时过程提供数据支撑。

如图所示,元数据中心在基础架构SRE体系最上层下层会有配置管理数据库CMDB,基础配置信息人员组织角色权限流程管控),Adapter(数据管理工具Plugin、OpenAPI)。底层会有资产采购LDAP/AD、第三方系统数仓平台DB、Cache等。

往上看,元数据中心是为基础架构的所有平台进行服务包括事件运营平台作业平台流程平台微服务平台可观测平台CICD平台中间件平台容量平台多活平台等最终,这些平台形成统一的门户入口,给到研发部门使用

服务在运行期间,如何与元数据中心产生关系?元数据中心为服务全生命周期内提供数据基础,元数据中心也是作为服务的支撑平台存在的,贯穿服务始终。服务资源支撑平台有云管理平台Iaas资源以及Paas资源这些统一的资产CMDB数据汇聚到每个数据中心向上提供服务

元数据中心如何建立数据模型?CI配置模型梳理过程有五个核心步骤定义数据类型定义数据核心属性构建数据模型直接关系消费场景确认确立数据规范总结来看,以数据全生命周期为出发点,确定属性,理清关系,确定消费场景,自动化流程保障数据准确性,让我们建立一个规范的数据模型

举例来看用数据模型的创建。创建思路基本按照流程一步步细分,自定义一个数据模型需要产品、研发一起界定数据规范,需要各方遵守。

应用属性包括应用名称/别名应用等级应用唯一ID(Appid)、组织/业务extra数据模型关系包括所属组织/业务人员/角色所使用IT资源依赖的微服务组件依赖的中间件extra

消费场景确认围绕几点分别是应用创建平台创建申请)、应用更新更新等级名称别名数据关系变更)、应用删除废弃应用)。数据规范包括明确应用的创建入口明确应用元信息变更后周边平台的消费感知

上图是元数据中心产品架构从上到下分别是ApiserverMng(管控平台层)、资源采集层资源对象层具体而言所有人都是通过Apiserver来访问元数据中心

Mng(管控平台层)包括模型管理、拓扑关系管理、事件处理、权限管理。资源采集层包括Agent采集、SDK上报、定时任务采集、数据校验采集规则配置下发。资源对象有应用、公/私有云、网络、服务器、机房、交换机等。

上图是元数据中心技术架构,分为接入层、服务层、存储层、三方服务、运营分析五大块。接入层可以用http和grpc来调用。服务层分为功能层和资源层。存储层包括Mysql、Redis、内部KV存储。三方服务包括统一认证、流程Flow。通过ES、Clickhouse、neo4j来做运营分析。

元数据中心数据采集的核心就是Data-Collector数据采集模块是如何设计?其中包括数据源(Origin)、DataCollection集群、数据存储三部分。其中,数据源(Origin)是指采集的数据节点采集器会将数据发送到指定的内部消息队列里,DataCollection订阅指定Topics接收采集数据。

DataCollection集群是指分布式,连接Topics消费数据。数据存储是指数据经DataCollection处理,最终落在Mysql、Redis和内部KV存储上。

如何处理原始数据关联关系?把CI和CI之间的关系种类列出来,前提需要产品、业务方进行充分沟通。当我们列出关联关系之后,需要进行确认。

以应用为例,应用运行在物理主机上,应用的DB安装在服务器上,服务器链接网络交换机,机柜支撑物理设备。按照梳理的关系分析,整理出节点类型和边类型,最后定义出以应用视角的图模型。

上图是B站元数据中心落地实施流程,拥有现状评估、项目启动、数据实例化、数据校验、数据场景消费五个核心点。在项目启动过程,B站会开设项目启动会,会上介绍整体的建设思路、核心概念、核心指标等,确立CI模型和关系整理。在数据校验过程,需要校验数据导入情况,确认数据准确性,为生产环境做准备。


关注数据质量

在落地之后我们要持续关注数据质量。制度规范分为规范要求流程要求组织要求平台要求四部分

规范要求是明确定义CMDB平台的作用以及与其它业务系统间的关系明确定义资源的管理过程以及责任人和责任平台明确定义资源的基线标准以及偏差管理办法从服务业务场景的视角来规划和建设配置管理能力

流程要求是能够真是反映资源状况能够完整的包含所有的资源信息以及资源间关系全局唯一的权威数据源数据能够被用户及系统方便及时和高效的获取

组织要求是成立统一的配置管理能力建设主体各个业务团队明确配置消费和完善的责任形成配置管理讨论优化和需求收集的机制

平台要求要做到以下几点逐步实现配置自动发现自动维护实时跟踪资源的状态及配置变化模型灵活能够根据业务需求实时扩展和调整配置可视化能够支持资源问题的分析和快速定位 

打造数据全生命周期闭环,聚焦数据闭环和数据可靠性建设。依托运维流程引擎闭环,针对资产类数据建设重构。期间存在短期没有闭环的流程,B对此类上报的数据没有匹配上后,将此类数据列入异常数据中,生成数据报表,并且保留所有变更记录。

数据治理是一个持续的运营和改进的过程部门导向信息分散、孤立、管理无规范不论是否有CMDB系统,实际都存在CMDB需求,以部门为单元维护配置信息

数据导向,共享型CMDB,参考业界标准数据模型。构建共享型CMDB,将各部门都关心的数据及相互关系统一纳入CMDB管理,并建立配置管理流程制度。由于消费场景不明确,造成消费价值与生产成本的失衡。

场景导向,面向特定使用场景,如资产管理,流程关联。局部数据标准化程度,准确性较高。由于使用场景单一,总体消费价值不高,生产成本相对较高。

服务导向,整合型CMDB,整合更多的管理对象,对外提供数据服务。使用场景全面,提供数据供给服务,支撑日常操作管控,如自动化,监控,作业流管理,运维分析等。引入多样化的数据生产手段,逐步平衡消费价值与生产成本。

价值导向,面向业务,支撑业务发展。CMDB全面支撑服务及业务发展,如服务容量管理,可用性管理,成为IT运维的基石。配置管理主动推动组织IT管理水平的提升。


总结

无论我们身处CMDB建设的哪个环节最终都是要面向价值保障我们可以按照不同阶段进行整合快速迭代完成CMDB在业务方面的一些价值


近期文章精选 

银联分布式数据库安全设计

爱奇艺在服务网格方向的落地实践

易鲸捷分布式数据库支撑银行核心交易系统

一粒米的背后,鲲鹏从“可用”到“好用”的跨越

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存