vivo数据集成稳定性与数据质量保障及可观测实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. vivo数据集成稳定性与 数据质量保障及可观测实践 vivo互联网 大数据架构师/ 易龙
2. 目录 • • • • vivo数据集成平台架构及功能 vivo数据集成稳定性保障实践 vivo数据集成链路数据质量保障实践 vivo数据集成可观测实践
3. vivo数据集成平台架构及功能
4. 产品能力地图 Bees,是vivo的一站式数据集成平台,它支持将多场景下多样化、分散的数据源,统一汇聚到大数据存 储,是数据流入大数据体系的一座桥梁。 业务2 业务1 业务 数据量条数 业务3 万亿级/日 …… 业务4 数据量大小 用户维度 工单管理 任务管理 监控告警管理 PB级/日 运维维度 SLA管理 任务治理 集群管理 数据质量 一键诊断 监控可观测 SLA管理 可用性 数据接入 SDK接入 数据传输集成 多种同异构数据源数据同步 源:Kafka/Mysql/MongoDB/Pulsar/… 目的: Kafka/Pulsar/Hive/CK/Hudi/HBase/… 多场景解决方案支撑 业务日志离线、实时接入 构建实时离线一体化数据仓库 数据完整性 业务多维数据分析数据接入 推荐、风控、分析等实时业务 99.999999% 离线异构数据源同步 实时客户分析及精准推荐 Agent日志接入 DB接入 多种同步方式 批量 (离线)全量/增量,实时同步,全增量一体 99.99% 实时异构数据源同步 实时营销活构建客群标签画像 数据时效性 500ms
5. 分层架构图
6. 核心组件架构图  Bees监控模块  监控、指标展示与告警  Bees-Manager  工单接入管理  任务管理  采集配置管理中心  用户平台服务【极重要】  Bees-SDK  数据接入 SDK 工具包  Bees-Agent  源端日志接入组件  部署在业务机器  影响CPU、内存、文件句柄、IO  Bees-Bus  数据传输管道服务【极重要】  Bees-X:实时数据同步服务  支持binlog日志采集  mongdb oplog实时采集  支持其他异构数据源数据同步
7. 核心功能介绍 实时日志接入 离线日志接入 Nginx/Tomcat/埋点日志 Nginx/Tomcat/埋点日志 支持容器服务日志 支持容器服务日志 传输到Kafka(500ms内) 按小时粒度批传输 支持过滤 按10分钟粒度批传输 支持同时写多Kafka 支持限速 业务隔离 SDK数据接入 DB全增量日志实时接入 支持接入到 Kafka、Pulsar 业务数据无需落地日志 支持接入到 Hive、CK等 更低的时延(毫秒级) 对主库无性能影响 保障秒级别时延 支持指定点位进行数据续传 支持 Avro、Thrift 协议 bees-x 支持 Java、C++ 语言
8. 核心问题及挑战 数据上报 网络/服务端 痛点问题 核心问题维度  链路稳定性  链路数据质量  链路可观测性 接入传输     被动接收告警,问题定位恢复慢 散点式救火,运维成本高 数据产出时效性波动大 告警多而杂,处理成本高 ETL (Spark/Flink) 数仓 核心挑战  如何从根本上长效的保障稳定性  如何从全链路视角保障数据时效性  如何有效准确的告警并快速恢复
9. vivo数据集成 稳定性保障实践
10. 稳定性保障整体方案 MTBF:(Mean Time Between Failures),平均故障间隔时间 MTTF:(Mean Time To Failure),平均无故障时间 MTTR:(Mean Time To Repair),平均修复时间
11. 架构组件:核心服务&存储 多活高可用 bees-agent  核心服务多活高可用  服务拆分多节点部署  跨机房容灾  存储多活高可用  跨机房容灾  Proxy,无中心集群, 支持高可用  Agent,基于Raft选 主,支持高可用  节点均支持动态扩缩容  Proxy配置基于 Zookeeper进行同步, 保障一致性 bees-bus bees-sdk bees-monitor portal 核心管控服务集群 API服务集群 Portal服务集群 LVS+Keepalived IDC1 bees- manager MySQL IDC2 nginx proxy0 bees- manager bees- manager 同服务 nginx bees- manager proxy2 proxy1 bees- manager bees- manager proxy3 master slave0 slave1 同数据 slave2 Slave3 ag ag agent ag ag z z zookeeper z z
12. 架构组件:核心组件支持健康检查 采集配置流  链路核心组件心跳上报  异常及时发现,追数补数 管控服务 域名可用性检查 bees-agent 心跳 上报 心跳 上报 bees-sdk 采集数据流 心跳 上报 bees-bus 消息队列 其他
13. 架构组件:物理标签隔离机制       标签统一通过bees-manger管理 不同业务任务分配不同标签 按标签和bees-bus建立连接 bees-bus使用大内存物理机器 同一台bus机器负责一个业务 bees-bus备机池,及时扩容 bees-manager bees-bus 源端采集 bees-sdk 业务A任务a bees-agent *.log 业务B任务b bees-agent *.log 业务C任务c bees-agent *.log bus节点0 bus节点1 bus节点0 …… bus节点n bus节点0 bus节点1 业务A任务a标签 业务B任务b标签 业务C任务c标签 Kafka集群
14. 架构组件-实时链路容灾: SDK落盘重发机制 1.2 采集管控服务 1.1 机器扩容 任务创建 2.1 落盘开关开启 配置流 落盘开关关闭 数据流 相同标签 2.2 扩容、sdk落盘任务创建 SDK接入任务配置  平台化配置管控  配置动态感知  支持落多目录多文件 Agent接入任务配置 2.3 业务-sdk1 CMDB sdk2-log 业务-sdk2 3.2 业务机器 3.1 业务*-log 业务服务 3.3 bees-bus机器 4 bees-sdk bees-bus 6 bees-bus bees-agent 8 *.log 7 Kafka 5 9
15. 架构组件-实时链路容灾:数据反压缓存动态落盘重发 bees- manager     上下游联动,及时感知异常 全链路流量波动监控 及时数据反压告警 引入Fqueue落盘  支持顺序写落盘  支持落单盘和多盘  独立FqueueSink隔离发送 数据接入 bees-bus task manager Kafka集群 bees-sdk bees-agent *.log source selector channel FqueuePollMnager Fqueue sink Fqueue Sink Pulsar集群
16. 架构组件:离线链路写HDFS主备切换 & 双链路容灾快速切换  离线HDFS集群容灾能力  上下游联动  分钟级切换耗时  核心SLA业务  容灾触发切换  分钟级切换耗时
17. 链路故障演练 思 路 专项优化 根治隐患 事件故障 记录分析 主动隐患识别 重大迭代 主动巡检 识别隐患 定期故障 预案演练 制定故障 处理预案 平 台 历史故障 故 障 演 练 步 骤 确定演练对象 制定恢复预案 确定验收指标 评估影响范围 触发恢复预案 实施故障演练 记录过程事件 生成待办项
18. 稳定性保障:规范变更发布流程 有预案 常规配置 变更类 型梳理 大版本升级 常规DB变更 事前 紧急 变更步骤梳理 基 础 准 备 通知范围 监控告警 值班规范 变 更 发 布 原 则 有测试 明确版本功能 有审核 明确灰度指标 有通告 低峰期变更 事后 事中 点检checklist 梯 度 灰 度 关 键 步 骤 确定灰度 管控策略 稳定性验证 (种子用户) 低频用户推广 核心用户推广 协作流程 点检checklist 平台操作 高频用户推广 风险应对措施 要值守 要灰度 全网用户推广 回滚方案 有通告 要观察 要验收 有事要通告
19. vivo数据集成 链路数据质量保障实践
20. 链路数据质量-数据完整性 支持双链路数据对账、链路关键卡点校验、发现异常并追数补数,保障SLA业务数据完整性要求 支持核心SLA业务离线实时双接入 支持多种数据对账方式  离线全链路对账  实时全链路对账  核心业务双链路对账 SLA动态保障 全链路数据完整性卡点校验 备份重接、追数补数
21. 链路数据质量-数据时效性:整体思路 优先级:P0>P1>P2 SLA时间:T0<T1<T2 从全链路视角,结合SLA,制定整体措施,保障数据及时产出 数据上报 措施 SLA保障  实时上报  退避重发  断点续传 SLA申 报 SLA签 订 网络/服务端      SLA审 核 SLA数 据 流量监控 波动告警 CDN可用性 Nginx监控 网络设备监控 分类 分级 ETL 接入传输       Inotify感知 轮询发现 重采、补采 延迟告警 断点续传 动态扩容 P0 核心 P1 高优 T1 P2 普通 T2 T0 核心 保障      数仓      异常监控 容灾切换 延时告警 任务重跑 断点续传 计算 资源 队列 匹配 指 标 基 线 全 链 路 打 标 资源预测 北极星指标 血缘依赖 根因分析 动态调度 全 链 路 协 作 专 项 保 障
22. 链路数据质量-数据时效性:Agent及时感知 Agent 采用定时轮巡+inotify 组合,时效性达毫秒级 引入inotify时,若直接用jdk的watch service会 有两个问题: 问题1: 日志量TPS很高时,inotify通知频率 快,每次agent处理事件,感知的增量日志少, batchSize低,浪费cpu; 问题2: JDK提供的WatchService只支持监听目 录,不支持监听到具体的文本文件,直接用会 出现多任务重复监听单目录,重复越多,cpu浪 费越多; 解决方案: 问题1方案:读到日志文件末尾,等待5ms, 当batchSize满或 超过5ms 时进行发送;使用 该方案,CPU使用率从单核10~20%下降至单 核3~6%,下降幅度10%左右; 问题2方案:在WatchService基础上,封装一 层支持监听到文件级别的 BeesWatchService,实现文件级别监听,每 个任务只订阅自己需要的文件,屏蔽了不相干 文件的变更事件;
23. 链路数据质量-数据时效性:云原生场景实时日志感知接入 毫秒级内容变化事件的感知 毫秒级扩容 秒级日志接入
24. 链路数据质量-数据时效性:任务延迟积压场景处理思路 分析任务视图依赖,识别关键基础任务,触发资源分配调度,及时疏通链路 正常任务 用户 延迟任务 0层 业务场景 13 1层 任务配置 任务配置信息 任务 打分 触发 任务综合 打分信息 资源匹配 任务资源信息 资源 信息 资源配 置分配 任务资源 配置下发 4层 任务延迟信息 监控 模块 DB 任务延迟 任务运行信息 结果信息 P 0 id 0 任务状态信息 4 3 3层 任务 调度 5 4 2层 P 0 P 1 P 1 P 1 P 0 P 1 P 1 P 0 P 1 P 1 task task_dependence_score scene_importance_score total_score resource (任务) (任务依赖数得分) (场景重要性) (综合得分) (资源) Task1 13 ( A a 2 * P O + P 1 ) + (PO+3*P1)=3*P0+4*P1 1 Task5 4 2*PO+P1 B b 2 Task6 5 PO+3*P1 C c 3 Task11 3 2*PO+P1 D d 4 Task12 4 PO+3*P1 E e
25. vivo数据集成 可观测实践
26. 监控能力矩阵
27. 从监控到可观测性 ”监控是可观测的一种实现手段,但 可观测远不止于监控。 “ 通过收集、分析和使用信息来观 察一段时间内的运行进度,并且 进行相应的决策管理的过程,监 控侧重于观察特定指标。 监控 可观测 通过分析系统生成的数据理解 推演出系统内部的状态。
28. 可观测体系:统一可观测平台 通过将 指标、日志、追踪 三大支柱信息,按场景进行关联、转化、组合,实现可观测能力 统一可观测平台 一元场景 指标 可聚合的 逻辑计量单元 指 标 解 分 / 合 聚 可 事件 的 请求 范围内可 聚合的事件 追 踪 请求范围 请求 范围内 的事件 追踪 对离散的不连续的 事件的一种记录 单次请求范围内的所有 信息、即调用链信息 转化场景 可聚合 请求 范围 的指 内 标 日志 日志 指标 通过日志获得指标数据 追踪 指标 通过调用链的分析获得 调用范围内的指标 日 志 事件记录 日志 追踪 通过对日志的聚合和转化得到追踪 日志 指标 追踪 故障 多个源头 产生的故障 二元场景 日志 指标 可聚合/分解的事件 日志 追踪 追踪 指标 一个调用周期内的事件 一个调用周期内的指标
29. 可观测体系:落地实践核心思路 可观测性的价值, 不仅仅是观测 ,更要能助力将服务从 异常状态快速恢复到健康状态
30. vivo数据集成领域可观测落地操作范式及实践举例 操作范式:梳理场景,确定核心影响因子,完善日志、追踪和指标,关联并自动化 场景梳理 稳 定 性 离线稳定性异常 实时稳定性异常 …… 数 据 质 量 数据完整性异常 数据时效性异常 影响因子确认 机器宕机 硬件故障 HDFS容量满 接入agent 组件bug Kafka异常 硬件异常日志 HDFS容量指 标 HDFS请求 异常日志 Kafka请求 异常日志 网络异常日志 未落日志/ 文件被清空 文件访问 异常日志 异常变更 变更异常日志 源端数据 未上报 数据完整性异常场景可观测实践举例 心跳指标 网络异常 源端流量突增 信息关联和自动化 信息完善 信息 标准化 信息层级 类型收敛 告警 恢复流程 心跳指标 0 L0 机器端漏数 0 - 硬件日志 1 L0 机器端漏数 0 硬件故障恢复流程 文件访问日志 1 L0 机器端漏数 0 文件访问恢复流程 变更异常日志 0 L0 机器端漏数 0 - HDFS容量指标 0 L0 链路丢数 0 - 网络异常指标 0 L0 链路丢数 0 - 数据对账 异常指标 对账异常 1 L1 完整性异常 0 - 卡点异常 1 L1 完整性异常 0 - 卡点异常指标 完整性异常 1 L2 完整性异常 1 追数补数任务恢复流程 流量波动指标
31. 可观测实践:变更故障自感知思路 将变更信息、业务链路依赖和监控信息关联,进行多维度识别,实现变更故障自感知 自感知 引擎 统一变更平台 统一监控告警平台 变更 变更 平台 监控 故障 平台 a 变更 平台 故障发现 监控 监控告警 人工定位 业 务 链 路 依 赖 信 息 业务链路 1 b c d e g h j k …… 业务链路 M b d f …… 业务链路 N b a b d e 回退 自感知处理流程 时间 信息输入 告警信息 变更信息 1.变更时间窗口 依赖信息 2.变更操作时间 空间 3.机房地域匹 配 4.逻辑分区匹 配 多维度识别 内容 恢复流程 5.业务内容 链路依赖匹配 恢复处理
32. 未来规划
33. 未来规划  提升可观测性的场景覆盖度  可观测平台能力建设  根因分析(专家模型 -> 智能模型)  增强 可观测 对接 自动恢复 的能力
34.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.138.0. UTC+08:00, 2024-12-22 09:03
浙ICP备14020137号-1 $Map of visitor$