iGraph自动化流量预估及大规模数据智能调度

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
OpenSearch LLM智能问答版免费试用套餐,存储1GB首月+计算资源100CU
简介: ## 引言 iGraph是一个在线图存储和查询服务,从2015年年初正式上线到现在,已经平稳经历了3次双十一大促的历练。这一些长期投入让iGraph赢得了越来越多集团客户的信任,其中包括集团的核心搜索和推荐业务。

引言

iGraph是一个在线图存储和查询服务,从2015年年初正式上线到现在,已经平稳经历了3次双十一大促的历练。在这几年的发展过程中,我们持续改进用户接入体验、跟TPP推荐业务平台一站式集成、在线服务质量持续保持稳定,这一些长期投入让iGraph赢得了越来越多集团客户的信任,其中包括集团的核心搜索和推荐业务。随着支撑越来越多集团业务,iGraph已经发展成为集团在线服务架构中一个非常重要的基础服务设施。为了支撑iGraph业务的快速增长,今年上半年我们开发了AutoUmars基础管控组件,并基于此重构了iGraph管控系统。在刚刚过去的2017双十一大促中,iGraph系统的各项核心业务指标达到了前所未有的峰值。

下面我们分享一些今年大促中iGraph的相关业务数据:

  1. 在中美俄三地提供了万级别表数目的在线并发访问。
  2. Proxy峰值入口访问QPS 千万级别,Search访问QPS峰值达到亿级别
  3. 双十一当天完成数万次索引构建,产出数千TB的索引数据,完成数据回流数万次。

为了能够高效稳定地支撑今年双十一,iGraph团队面临的问题非常具有挑战,但是我们就是喜欢解决具有挑战的问题,也非常乐此不疲。相信大家也对我们的问题和解决方案非常感兴趣。这也是我们写这篇文章的目的——介绍iGraph团队如何通过自动化流量预估和基于机器学习的智能数据调度来高效支撑2017双十一大促!

问题定义与挑战

1. 如何预估双十一iGraph的峰值访问量?

undefined
iGraph作为一个基础查询服务,流量预估跟一般的业务系统差异非常大——不能简单通过当前流量乘以一个系数得到大促流量,主要体现在如下方面:

  • 如上图所示,iGraph调用方有上千个(仅仅TPP平台上场景的数目就超过上千个,这些场景几乎都是iGraph的调用方),并且每个调用方访问iGraph的流量特征都不一样(单次用户请求处理访问iGraph的次数、表的数目、以及每张表访问的消耗等),每个调用方的峰值QPS千差万别。
  • 有一些调用方在大促期间查询逻辑和日常的查询逻辑不一样,无法简单根据日常访问流量进行放大得到大促流量。
  • 对于一些大促常场景日常没有流量,只有大促当天才打开。

基于以上三点认识,我们就知道看似简单的流量预估对于iGraph来说并不简单。之前我们在业务体量较小的时候,是通过人肉进行跟业务方收集流量特征最终得出大促的峰值访问流量,这种出力不讨好的事情我们永远不会再这么干了,因为今年我们我们开发了自动化流量预估系统,高效自动化解决上述问题。

2. 如何将万级别表调度到不同星座,让这些星座的负载做到尽可能均衡并且兼顾业务隔离?

表加载示意 (4).svg
假设我们已经成功估算出iGraph峰值流量了,现在我们已经知道所有表的峰值QPS。但是新的问题出现了,如上图所示,那就是我们需要多少容器资源来支撑这些峰值QPS以及如何将这些表合理地部署到各个星座(在iGraph中,我们把一个小的容器矩阵称为一个星座)中。每个容器的资源是有限的,这些资源包括CPU、内存、磁盘、可以加载的表总数等等。如何将这万表调度到不同星座,使得每个星座的资源不会用超,并且尽可能让所有星座资源使用率均衡称为我们需要解决问题。这是一个带约束运筹优化问题,所幸的是我们有iDst同学(@康托,@李涛)的帮忙。iDST智能决策团队专注于与机器智能决策相关的深度学习、运筹优化技术的研究与赋能,目前已在集团内外,新零售、物流、数据中心、交通等多个行业领域得到应用。我们只要把表的相关指标信息、集群拓扑信息、当前表的部署信息提交给他们,他们就可以给我们算出一个最优的且数据迁移代价较小的新的数据部署拓扑。
当上述均衡分布的问题解决后,再来看下之前出现的业务隔离做的不好的问题:单个业务方访问异常时会导致加载在同一个星座中的其他业务都会受影响。我们做了以下几点,问题也就迎刃而解:

  • 每份数据会根据所属业务方分配资源池标签,在计算分布部署时会考虑数据所带标签:相同业务线的数据迁移只会发生在自身的资源池内,这样既保证了数据端的资源隔离,也可以支持业务线拆分的自动迁移
  • 在Proxy端,我们按照业务访问进行了流量入口划分,给业务方分配单独的访问入口

基于上述两点,从入口到数据层面都较好的实现了业务隔离。

这里需要特别提一下的是,今年我们初步探索出一套单请求消耗CPU的模型,在这个模型上线之前,我们都是假设每个请求消耗的CPU是同等的,而实际上不同请求的CPU消耗相差特别大(这和请求的特征紧密相关,比如请求查询的表类型、索引中查出来的结果数目、单条结果的大小、最终返回的结果数据等等),导致星座之间CPU利用率差异较大。上了新的模型之后,这个问题得到了很大的缓解,详情参见后面大促数据。

3. 如何自动化分析全链路压测iGraph指标?

如上两个问题解决之后我们需要检查上面两项工作的成果是否符合预期。我们是通过大促全链路压测的方式来验证我们的流量预估是否准确以及表的部署是否合理(不能出现数据部分星座访问过高或者过低的情况)。这需要把我们的预估和实际压测数据拿出来进行diff分析,包括表的QPS维度、星座QPS维度、星座CPU维度、场景QPS维度等。通过这个全面分析,我们一方面能够check我们的流量预估和部署是否合理,另外一方面能够找出压测过程周某些场景流量压多了或者压少了,以及流量成分发生变化的情况,然后反馈到调用方在下一轮压测中解决。

系统架构

既然问题已经定义清楚了,我们提出了如下图所示的系统架构来极大提升我们今年双十一大促准备工作的效率。整个项目由iGraph工程团队和iDST算法同学合作完成

下图是我们整体的系统架构。
ams (16).svg

下面介绍下各个组件的功能:

1.流量特征分析和预估

  • 结合调用方自身QPS和iGraph中该调用方的各维度QPS信息,流量成分分析对每一个调用方分析出如下结果:

    • 调用方一次请求处理需要访问多少次iGraph Proxy
    • 调用方一次请求处理需要访问多少张iGraph表,以及访问每张表的次数
  • 针对大促场景,由于平时没有流量,流量分析服务会在场景压测期间进行特征分析
  • 针对部分日常场景在大促期间流量特征发生变化的情况,流量特征分析服务会分别记录日常流量特征和大促流量特征。在进行大促流量预估时,选择大促流量特征进行预估。
  • 根据上游调用方流量峰值预估和iGraph中流量成分分析的结果就可以计算出每一种来源对iGraph Proxy峰值访问QPS和Search峰值访问QPS。
  • 预估出所有场景的Proxy峰值访问QPS和Search峰值访问QPS之后进行叠加聚合,就可以得到iGraph服务Proxy层峰值访问QPSSearch峰值访问QPS以及每一张表的访问QPS

2.指标收集与计算

指标收集

表级别相关指标(内存、磁盘、QPS、Latency)容器相关指标(磁盘、内存、CPU消耗)都是通过KMonitor获取,感谢Kmonitor同学为我们提供稳定metric系统支持,KMonitor是基于optsdb on druid架构的监控系统,支持api接口获取监控数据。 kmonitor作为统一的监控平台来支撑业务监控和智能运维的相关需求。 关于kmonitor的详细介绍可以参考Kmonitor监控平台。
容器相关的配置通过iGraph管控系统Autoumars获取

指标计算

表级别相关的计算指标我们重点收集了单表消耗内存、单表消耗磁盘、单表消CPU等指标,由于像内存、磁盘等指标是可以明确统计的,这里就不做过多赘述。对于单表单次访问的CPU消耗我们初步建立了一个计算的模型:单个容器的CPU消耗取决于容器内所有表的访问QPS、访问rt、以及容器本身的一些特性。

zoneCpuUsedi=F(TableQps,TableRT,Ci)

Ci

zoneCpuUsed=(TableQPSnTableRTn)zoneCpuWeight

TableCpuCostPerQuery=TableRTnzoneCpuWeight

zoneCpuUsed=(TableQPSnTableCpuCostPerQueryn)

根据上述的一些模型来计算单表单次访问的CPU消耗,结合预估的qps来计算单表CPU消耗。

策略控制

由于iGraph业务的特殊性,部分数据表是不能进行迁移

  • 单列容器内表无法进行迁移
  • 原始odps分区缺失数据无法进行迁移
  • 部分容器只能迁出,无法迁入
  • 预热期和正常大促期间数据会发生替换,这种需要做表映射保证表下线后负载仍较为均衡。
  • ......
    这些数据会打上一定的无法迁移的标签,在计算最佳分布逻辑时会考虑这些标签,进行策略控制

3.IDST算法产出调度计划

算法同学会根据之前产出的集群状态快照作为优化引擎的输入,优化引擎的输出则是最终需要执行的迁移序列。

4.调度执行

算法产出最终迁移序列之后,Autoumars将会自动扫描产出结果,解析完成后按照固定的批次顺序执行迁移任务:
解析完成的迁移plan:
aca54a6d-e167-49e1-8656-0ec1961de5eb.png | center

具体的迁移任务:
29f44f95-9669-480b-92bd-94bf3b9c213e.png | center

大促效果

下面总结一下在今年大促期间的取得成果:

  1. 流量预估从原先的需要算法同学紧密配合,变成了算法同学无感知,并且一天之内就能出一个版本的流量预估报告。
  2. 成功进行多轮的负载平滑迁移,共计进行了数万次数据表迁移,将集群中各个容器的CPU平均负载提高20%左右,磁盘使用率和内存使用率稳定在较高水位,未出现各个资源使用不均匀的情况。
  3. 大促效果
  • 调整前各个星座负载状态,单个柱状图表示了单项资源(内存、磁盘、cpu等)使用额度,标红部分就是当前资源使用已经超出最大限制,迁移之后所有星座的负载都均衡了。
    undefined
  • 实际迁移plan执行完毕后CPU消耗的变化,可以明显看出各个容器CPU消耗逐渐均衡
    CPU消耗对比.png
  • 大促当天各个星座cpu负载基本均衡
    大促当天负载.png

未来改进

今年是iGraph数据部署调整第一次和算法配合一起进行大促的动态调整,仍有很多的不足之处需要后续持续改进:

  • 1.单表CPU计算的模型过于简单,需要考虑searcher服务端多层cache对预估结果的影响,这种情况在压测集比较小的场景下影响较大。另外表增量更新部分的开销也需要考虑进来
  • 2.在各轮压测完毕后对比分析压测情况和预估情况差异,目前这块还只有简单的工具完成,还未集成到整套管控中去,产品化做的不够好,需要不断完善。
  • 3.由于iGraph自身容器迁移成本较高,目前还不能支持实时调度,这块也是后续的优化目标。另外如何用最小的迁移成本来达到平铺的效果需要和算法同学一起研究下。
相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
谷川
+关注
目录
打赏
0
0
0
0
159
分享
相关文章
企业数字化转型的关键:如何利用OA系统实现自动化与智能决策
在数字化时代,传统办公系统已无法满足现代企业的需求。通过将RPA(机器人流程自动化)和AI(人工智能)技术与OA系统结合,企业能实现业务流程自动化、智能决策支持,大幅提升工作效率和资源配置优化,推动数字化转型。RPA可自动处理重复任务,如审批、数据同步等;AI则提供智能数据分析、预测和决策支持,两者协同作用,助力财务管理、人力资源管理、项目管理和客户服务等多个领域实现智能化升级。未来,智能化OA系统将进一步提升个性化服务、数据安全和协作能力,成为企业发展的关键驱动力。
GraphQL接口采集:自动化发现和提取隐藏数据字段
本文围绕GraphQL接口采集展开,详解如何通过`requests`+`Session`自动化提取隐藏数据字段,结合爬虫代理、Cookie与User-Agent设置实现精准抓取。内容涵盖错误示例(传统HTML解析弊端)、正确姿势(GraphQL请求构造)、原因解释(效率优势)、陷阱提示(反爬机制)及模板推荐(可复用代码)。掌握全文技巧,助你高效采集Yelp商家信息,避免常见误区,快速上手中高级爬虫开发。
GraphQL接口采集:自动化发现和提取隐藏数据字段
利用Python自动化处理Excel数据:从基础到进阶####
本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
643 10
微店商品详情API接口实战指南:从零实现商品数据自动化获取
本文介绍了微店商品详情API接口的应用,涵盖申请与鉴权、签名加密、数据解析等内容。通过Python实战演示了5步获取商品数据的流程,并提供了多平台同步、价格监控等典型应用场景。开发者可利用此接口实现自动化操作,提升电商运营效率,降低人工成本。文中还总结了频率限制、数据缓存等避坑指南,助力开发者高效使用API。
微店API开发全攻略:解锁电商数据与业务自动化的核心能力
微店开放平台提供覆盖商品、订单、用户、营销、物流五大核心模块的API接口,支持企业快速构建电商中台系统。其API体系具备模块化设计、双重认证机制、高并发支持和数据隔离等特性。文档详细解析了商品管理、订单处理、营销工具等核心接口功能,并提供实战代码示例。同时,介绍了企业级整合方案设计,如订单全链路自动化和商品数据中台架构,以及性能优化与稳定性保障措施。最后,针对高频问题提供了排查指南,帮助开发者高效利用API实现电商数智化转型。适合中高级开发者阅读。
智能调度:自动化运维的"最强大脑"进化论
智能调度:自动化运维的"最强大脑"进化论
174 15
AI辅助的运维流程自动化:实现智能化管理的新篇章
AI辅助的运维流程自动化:实现智能化管理的新篇章
966 22
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
PC Agent 是上海交通大学与 GAIR 实验室联合推出的智能 AI 系统,能够模拟人类认知过程,自动化执行复杂的数字任务,如组织研究材料、起草报告等,展现了卓越的数据效率和实际应用潜力。
429 1
PC Agent:开源 AI 电脑智能体,自动收集人机交互数据,模拟认知过程实现办公自动化
智能流程管理:CRM系统助力订单与回款自动化
在现代企业管理中,CRM系统不仅是客户信息的存储库,更是提升运营效率的关键工具。通过订单管理自动化、回款跟踪自动化、财务与CRM集成、数据分析及报告,企业能减少人为错误,优化现金流,提高响应速度,增强客户满意度。CRM系统的全面应用显著提升了企业的内部效率和外部竞争力,成为推动持续发展的重要力量。
工作流管理趋势:智能化、自动化与无限可能
本文深入探讨了工作流管理的定义、重要性、挑战及优化方法,强调其在提升企业效率、优化资源配置、提高透明度和促进协作等方面的作用。文章还介绍了构建高效工作流管理系统的步骤,包括流程梳理、设定KPIs、选择合适工具等,并分享了成功案例和未来趋势。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等