背景
随着互联网和智能手机的普及,人们的生活大多时候都离不开移动 App,在信息量与日俱增的大数据时代,用户反馈数据可以帮助发现热点问题、避免安全问题、优化产品体验、提升产品质量等。
简介
SkyNet 天网平台专门聚焦于泛客诉问题数据,包括 App 端内离线反馈、IM(Instant Messaging,即时通讯)反馈、电话热线反馈、举报反馈、各大应用市场评论、App 端内实时评论、内部运营工单等数据,挖掘其中的价值,为各方业务带来收益。
SkyNet 天网平台由互娱研发客服平台团队和研发效能团队联合出品。
平台介绍
功能模块
SkyNet 天网平台的能力主要包括智能监控预警、异常热点挖掘、分析看板定制、VoC(Voice of Customer,用户原声)展示。
监控预警:对于已知场景,采用 NLP 打标或关键词匹配配置监控告警,基于时序监控算法实现智能阈值和智能告警,可以有效避免因为固定阈值带来的召回率和准确率不高的问题。
异常挖掘:对于未知场景,采用热点聚类、多渠道聚合、情感分析、风险词挖掘及命名体识别等算法,实现高频高热和低频低热的未知问题智能挖掘和监控。
看板定制:对于一段时期内的数据,生成数据图表看板,提供日常的可视化分析能力,包括指标分析,文本分析,实验分析等。
VoC 展示:瞄准反馈数据原文内容,直接传递用户的声音,为用户发声,营造关注用户反馈的文化氛围。
SkyNet 系统能力模型
架构设计
Web 平台:采用前后端分离架构,前端基于 React Hooks 开发,后台采用微服务方案。为了增强用户体验,还提供了小程序、飞书卡片等多种交互方式。
调度侧:采用分布式的 Celery 集群,一主多从的架构,同时主控做了双机房容灾。
数据侧:包括 API+实时+离线三种模式,API 模式基于 HTTP 封装的数据查询服务,实时模式基于 Kafka+Flink+ES/HDFS/ClickHouse 数据处理任务,用于数据处理和存储,离线模式基于 Spark+Hive 天级和小时级的数据处理任务。
算法侧:基于 Bert、LDA、BiLSTM 等模型实现长短文本意图识别、热点发现、智能阈值与智能告警,快速理解反馈意图,更早发现反馈量级异常。
安全侧:基于数据隐私和信息安全,分机房部署服务、存储数据。
SkyNet 架构原理
全球实时数据中心
数据是平台的核心部分,几乎所有的功能特性都是通过大数据挖掘出来的;数据的质量和稳定,才能保证有稳定的价值产出。
数据层经历了关系型数据库到大数据的改造,至于为什么要改造?下图已经说明一切,所有的改造都是为了更快更好地处理数据;实时监控、指标分析、模型识别等服务都离不开稳健的数据层。
SkyNet 业务数据应用
平台数据层在全球各地区都搭建了数据中心,各数据中心之间的存储和服务都互相隔离、互相独立。
通用的高吞吐实时数据接入系统
面对复杂的业务场景、多样化的数据源,我们需要建设一个通用的、实时的异构数据接入系统,旨在将来自不同业务方的异构数据实时转储到统一的目标数据库,为后续的数据分析过程提供便利。
基于这个目标,通过业务抽象,一项数据接入任务一般可分为以下几个子步骤:
反序列化
格式化
清洗
序列化
持久化
具体步骤如下:提供定制的序列化实例,将特殊处理逻辑限定在单一模块内。实现配置解析器,提供在线接入配置,实现格式化、清洗、序列化和持久化 4 个子任务的通用处理控制。利用流式处理引擎自身提供的实时性、可拓展性、严格一次(Exactly-Once)特性,提供高可用实时数据接入能力。
异构数据通用接入流程
当面临类似短视频内容评论数据的接入场景时,每分钟的实际数据量高达百万级别,上述的数据处理系统便受到了挑战。
基于这个难点,进行了下面的优化:把原始数据利用哈希算法进行散列后,同时分发给多个窗口进行处理,每个窗口处理完成后都将数据放入内存缓存,经过均匀散列后再批量写入目标数据库,从而达到短时间内处理大量数据的高并发效果。采用改进后的数据处理系统,200 个 Partition,50 个 TaskManager(4C8G),每分钟能够处理超过 200 万的数据,并且延迟下降到毫秒级别,做到真正的异构数据实时接入。
针对大数据场景的优化处理流程
构建千亿级在线查询引擎
整个数据层分为四层,API 层、引擎层、接入层和数据源。引擎层是基于大数据 OLAP 技术建设,针对不同场景使用不同的引擎。目前引入了 ElasticSearch、ClickHouse 和 Presto 三种引擎。
数据层技术架构
不同引擎有不同的特性,例如 Clickhouse 擅长大宽表查询,ES 聚合查询和更新速度快,但对 PB 级数据量支持差,Presto 各方面性能均衡,而且支持跨引擎查询。
对于多引擎情况,我们封装了统一 SQL 查询入口,对外屏蔽引擎信息。同时基于业务场景进行优化,部分优化如下:
ClickHouse:
针对查询场景,建立对应的物化视图
字节内部自研 HaUniqueMergeTree 表引擎
基于数据主键实时去重,套用 Kafka 物化视图消费模式,维护简单
支持主键更新的表引擎
保留社区版本的查询性能
ElasticSearch 针对 PB 级存储优化:
生命周期管理,冷热分离的集群架构
分片数控制,开启 Shrink 功能,对老索引进行分片压缩
新索引的滚动时间控制在 1 小时或 100G
AI 赋能智能化
平台基于 NLP、CV 和 AIOps 算法,利用文本分类、热点发现、时序预测等算法模型实现快速准确识别用户反馈意图,自动发现热点反馈内容,智能监控时序反馈量级。
以 App 端内用户离线反馈数据为例,用户通过反馈入口提交反馈数据到客服平台,客服平台把相关数据写入指定的 Kafka Topic,平台数据层的 Flink 任务实时消费和清洗数据,并调用反馈文本分类模型识别用户意图,根据用户在 SkyNet 平台侧配置的标签告警,建立时序预测模型,实现异常量级反馈智能报警;对于不在打标体系内的“其他”类数据,建立热点发现聚类模型,基于语义相似度聚合反馈内容,根据聚类簇反馈量级历史变化趋势实现未知热点问题智能告警。
算法能力概览
AI 能力
SkyNet 平台智能算法服务包括智能打标、热点发现、智能监控三部分能力。
智能打标
用户反馈的数据类型主要是文本和截图,特别是用户上传的截图语义信息更丰富,因此为更准确识别用户的反馈意图不仅仅依靠文本分类模型,还需要具备反馈截图的识别能力,同时为了更加细化分类标签,辅助快速定位异常类型,标签体系实现多级化,SkyNet 意图识别模型基于文本和图像,构建了多模态智能反馈多级打标模型。其中文本特征基于 Bert 模型,图像特征基于 MobileNet V3 模型,在多级标签输出层设计层级联合结构,实现多个产品线打标准确率 90%以上。
智能打标模型
热点发现
热点事件包括高频热点和低频热点,高频热点是指短时间较多用户反馈的异常,低频热点是指一定时间内不断有用户反馈的新异常。热点发现能力基于文本聚类算法,通过分词、文本向量、聚类、相似度计算,将语义相似的反馈进行统计,对于高频热点问题通过统计一段时间内反馈量级触发告警,对于低频热点问题通过统计一段时间内反馈量级与历史最近多天该问题的量级比例触发告警,通过意图识别和热点发现,实现有监督打标和无监督聚类,实现完整覆盖反馈内容监控。
热点发现模型
智能监控
时序预测是根据历史时序数据预测未来趋势,对于突增和突降异常场景能够准确监控,其原理是首先对历史时序数据预处理,过滤异常点并平滑时序曲线,模型基于 BiLSTM 结构,根据最近历史时序数据预测当前时间点数值,为了更为准确判断真实值是否异常,基于历史数据波动、模型预测误差和预测值计算该点智能上下限阈值,当超过上限或低于下限则触发告警。同时为了降低尖刺点造成的误报,根据异常点偏离程度和异常持续时间,计算异常事件概率,不仅有效降低了报警频率,也大大提高了报警准确率。
智能监控模型
已知场景监控
对于已知场景,根据用户配置的告警任务的告警频率(以 10 分钟为例),平台引擎层的调度服务每 10 分钟跑一次最近 10 分钟的反馈数据,超出特定的阈值则发出告警。告警任务的阈值优先由用户配置指定,告警任务运行一段时间后,也可以选择启用智能阈值,针对不同业务场景,根据历史告警记录采用相应的算法给出预测阈值。
已知场景监控原理
未知场景监控
对于未知场景,用户不用配置告警条件和阈值,只需配置告警接收人。平台会在后台开启定时任务,通过 LDA 主题聚类或者语义聚类方式发现新的热点问题,同时,根据历史告警记录训练智能阈值,生成具体的告警策略。
具体来讲,监控未知场景的方法可以分为两类,一类是基于单渠道数据跨时间周期发现热点问题,另一类是基于同时间周期跨渠道发现热点问题。
第一类可以理解为对同一渠道的数据作跨时间的监控。以每 10 分钟告警一次为例,取近 10 分钟的数据进行智能打标分类和关键词语义泛化,结合聚类算法生成语义向量矩阵,与近 3 天的数据计算得出相似度矩阵,找到相似度较高的事件。这个过程可以帮助发现同一渠道的低频热点事件,能够帮助尽早发现潜在的线上事故和安全问题。
未知场景监控原理
第二类可以理解为对同一时间周期的数据作跨渠道的监控。以每 10 分钟告警一次为例,取各渠道近 10 分钟的数据分别进行智能打标分类和关键词语义泛化,结合聚类算法生成语义向量矩阵,各个矩阵之间计算得出相似度矩阵,找到相似度较高的事件。这个过程可以帮助发现一段时间内的低频热点事件,能够帮助尽早发现潜在的舆论问题。
多渠道联合监控
就联合监控而言,一个问题的发生往往会在多个渠道(离线反馈、IM、电话等)的数据上表现,怎么去提升问题发现的及时性、降低问题发现的噪音(每个渠道都报出了这个事件)、保障问题定级的合理性,是联合监控要解决的问题。
我们通过全渠道联合监控,即跨渠道、跨时间线的监控,来保证问题在任意渠道发生后都能及时监控到。同时通过算法去检查其他渠道,如果识别到相似问题,通过数据追加的方式进行问题描绘,从而避免不同渠道发生同一个问题导致的监控噪音。通过跨渠道串联,也可以更直观地看到一个问题在全局的数据表现,保证定级的合理性。
多渠道联合监控原理
分布式实时调度系统
告警监控作为 SkyNet 的核心功能之一,是保障公司内部很多产品的最后一道防线。运行状态良好的告警系统,可以及时发现问题,及时引起重视,早介入、早解决、减少重大事故的负面影响。同时,自动化的告警系统还可以节约大量人力,提高运营团队的效率。
系统架构
告警系统架构
告警系统各个部分的功能如下:
调度节点(scheduler):负责根据告警配置生成并调度告警任务,监测告警任务的状态避免重跑和漏跑,重试失败任务。调度节点通过分布式锁实现主从机制。
告警任务的执行节点(worker):负责执行告警任务。
保存任务信息的队列(broker):告警任务通过 broker 分发到不同的执行节点( worker)。
保存配置信息使用的数据库(mysql):保存用户的告警配置信息。
修改配置信息的页面(webserver):用户交互的入口,用户新增、修改告警配置信息的入口。
系统简介
我们实现了一套分布式的调度系统,调度节点通过抢占分布式锁确定主从节点,在根据告警配置信息触发告警任务的时候,可以进行更多的操作,提高灵活性。
调度节点支持自由配置告警队列,提高单一队列故障时的可用性,避免因为单一队列拥塞,导致所有告警都不能及时触达用户的情况;调度节点支持告警任务在多个状态之间的轮转,能够让任务在因为偶然超时、网络故障等执行失败后进行重试,从而提高任务执行成功率,确保告警及时准确地触达用户;调度节点支持服务重启时继续运行未完成的任务,防止任务漏跑,保证告警无遗漏,给用户提供可靠的保障。
调度节点还支持告警的屏蔽和跳过机制,用户可以在收到告警并介入处理的一段时间内,屏蔽对应的告警,还可以在告警数据回溯时,跳过告警卡片的推送,减少对用户不必要的干扰。此外,告警推送的卡片在信息简洁明了的同时,还有转工单功能,支持一键将告警转工单,方便后续跟进。
平台借助分布式调度系统,目前单日处理告警任务 100w+,告警成功率 99+%。
小试牛刀
目前,SkyNet 天网平台服务的业务线已经超过 80 个。包括抖音、头条、火山、西瓜、皮皮虾、剪映、轻颜、懂车帝等 App 离线反馈、IM 反馈、电话投诉反馈、举报反馈;各个具备直播能力的 App 看播评论;各个具备电商能力的 App 订单评论;短视频内容评论;各大应用市场评论……
牛年春节联合项目
特别地,抖音作为 2021 年牛年春晚的独家互动合作伙伴,SkyNet 天网平台也为抖音支持春节活动贡献了一份力量。春晚期间 SkyNet 的全产品线反馈数据看板实时展示反馈数据的波动,各业务线监控任务平稳运行。
平台升级-异地多活
平台已具备高可用的能力,但针对春节活动的场景还是远远不够,如果机房网络故障,还是会导致系统故障,所以异地多活的能力必须在春节前上。同时制定了三机房容灾方案,核心业务降级策略。
业务保障-多重降级
针对春节期间的红包雨活动,公司基础平台服务制定了多套资源降级策略,应对各种突发情况。基于基础平台的统一策略,作为业务侧的我们需要制定对应的降级策略应对突发状况。
参与公司演练,应对不同降级策略,配合升级
业务分优先级,针对不同业务划分高、中、低三等,非核心业务降级,保核心业务
基础网络故障触发容灾
离线资源倾斜到实时资源
短视频评论数据价值挖掘
产品功能、舆情相关的反馈很容易在站内互动区先被暴露出来。用户客服中心目前已有 App 内反馈、邮件、应用商店、社媒监听等渠道,但互动区的监控还是一片盲区,客服中心希望能利用这个渠道的价值,提高用户反馈数据的覆盖度,包括不限于产品功能体验类、用户情感分析类。
面对大规模的数据量,如何快速有效地进行实时监控分析?如何从千亿数据中挖掘有价值的数据?这些都要依赖天网平台的智能化和大数据的能力。比如,基于实时数据接入系统,结合 NLP 文本分析能力完成分类与分词;基于大数据 OLAP 技术,完成对数据在线分析,包括指标分析、文本分析、聚类分析等。
短视频评论挖掘流程
通过监控分析,一个月能暴露 15-20 个问题(含产品 bug、风控、内容安全等问题),同时会基于高赞的评论内容做一些人工分析,比如,一个月内的 4000 条高赞评论大概能暴露 50 个内容问题。
用户之声
下面是来自春节期间使用 SkyNet 的用户的声音:
“SkyNet 在春节期间给予了小程序/小游戏专项活动强有力支持,帮助项目组快速发现用户反馈问题,并及时跟进解决,特别是在春节活动高峰期间,分钟级的活动调整方案,都能完美响应!”
“SkyNet 在春节期间问题发现的时效全部控制在 5min 内!”
“SkyNet 替代了人工监控方式,每日节省值班同学人效 10h 以上!”
“SkyNet 的告警准确率提升明显,绝大部分的告警都反映了真实的问题!”
……
加入我们
字节跳动互娱研发效能团队,互娱研发负责抖音、抖音火山版、剪映、FaceU、轻颜、直播、音乐等多款明星产品的研发,目前,抖音日活(DAU)已经突破 6 亿,并继续保持高速增长。
研发效能团队主打服务化+智能化,旨在通过工具平台+算法,赋能互娱的各个业务场景,团队职能包括但不限于提升研发效能,保证内容质量,优化用户体验,保障业务安全等。团队拥有算法,工程(前端、后台以及客户端)、数据(大数据、DA)、产品、测试等多种职能岗位,可以高效自闭环进行智能平台产品的设计研发,具有多个公司级影响力的智能化平台产品成功落地经验。
团队发展迅速,年轻富有朝气,注重技术氛围建设,积极参与国内外各顶尖行业技术会议,输出高质量技术专利和相关论文,工作 Base 地有深圳、杭州、广州、北京多地可选。
加入我们,让你的每一行代码都能服务全球亿万用户。
简历投递邮箱:iesep@bytedance.com;邮件标题:姓名 - 职能/技术栈 - 研发效能。