乐趣区

关于高德地图:高德全链路压测语料智能化演进之路

背景

高德地图作为日活过亿的国民级出行生存服务平台,承载着海量用户服务的是后盾的超大规模集群。从用户角度,如果出问题,影响会很大。3 机房异地部署造成线上环境简单,链路简单。在这样的条件下,如何防止因故障造成用户的挫伤,以及在简单链路条件下做好容量布局,做好灾备,并在第一工夫发现问题,通过流量管制和预案演练做应急响应就显得至关重要,而所有的工作都不能等到事件产生之后才做,咱们须要有一种验证伎俩来做好提前性能摸底,这就是全链路压测,让实在的流量提前到来。

全链路压测作为线上服务稳定性保障的重要伎俩,对高德来说也是十分重要的。高德全链路压测平台 TestPG 从无到有,在经验过常态化压测后,已根本能够保障高德的所有全链路压测和日常压测,达到了平台初期疾速、精确压测和全链路压测的指标。而语料生产 (流量解决) 作为全链路压测的重要环节,本文将对此做重点介绍。

一次全链路压测可简略总结为 3 步:压测前的流量解决(也就是生产语料)、压测中确定压力模型启动压测、压测后的后果剖析与问题定位。每次全链路压测,压测前的流量解决是整个压测过程中最耗时的一环。过来往往由运维采集日志交给测试同学写脚本解决,耗时相当严重、老本微小,且存在申请过期等诸多问题。基于这些问题,高德全链路压测平台 TestPG 后期已标准了高德压测的语料格局,对立了高德压测的流量解决流程。但随着高德全链路压测的演进,后续面临两个次要问题:

  • 语料生产流程不足对立管控。尽管平台后期已标准了语料格局,但各业务只是依照语料标准解决流量,生产流程不足对立、标准化管控,导致语料生产成本仍然很大。尤其对于全链路压测来说,语料筹备是最耗时的环节。
  • 接口级别的精准控压无奈满足需要。高德作为国民级的出行利用,流量受天气、地形、节假日的影响比拟大。比方拿驾车导航来说,日常大多都是短距离的驾车导航,而国庆、春节大多都是长距离的驾车导航,而长距离的驾车导航对后端算力的要求是非线性减少的,甚至是成倍增加。但长短距离的驾车导航对压测平台来说是同一个接口,而平台目前的精准控压只能做到接口级别,无奈模仿接口特色级别的压测。

基于以上两大问题,高德全链路压测团队设立语料智能化专项,重点解决以上相干问题。

解题思路和门路

引流标准化

高德的全链路压测彼时已根本拉通大多业务,但还属于一个演进阶段。对于语料解决,次要由各业务自行处理后用来压测,语料解决的起源不足统一性,日志、ODPS、流量等解决起源司空见惯。对于语料生产流程的对立管控,咱们首先想到的是对立语料解决起源,必须抉择一个低成本、高效率的形式作为语料生产的输出,而流量录制的形式就很切合。通过调研,发现高德其余业务场景对流量录制也有很大的需要。但高德过来的流量录制形式并不对立,各业务线自行拷贝流量常常会引起线上机器不稳固等问题。所以首先要做的是对立高德的流量录制,标准化引流。

语料生产平台化

要对立管控语料的生产流程,下面曾经对立了语料生产的输出,接下来就是如何把流量转化为合乎平台标准的语料,把整个转化流程平台化。但对于高德业务来说,各个业务都有其本身的特点,如果让平台为每个业务提供定制化的解决逻辑老本微小,再加上平台对各个业务并不是特地相熟,也很容易出错。而整个语料处理过程也存在一些通用的解决逻辑,所以咱们必须提供一种既反对各业务定制化需要,又能够满足平台通用解决逻辑的计划。咱们最终抉择通过 Flink 来实现整个流量解决逻辑。

引流曾经标准化,业务方只需查看流量的格局内容,编写 Flink 的 UDF(用户自定义函数),解决本身业务定制化的需要即可,而后续通用的语料存储等逻辑可通过 Flink 的 sink 插件来实现。这样既能够提供通用解决逻辑,又给业务的非凡需要提供了反对,扩展性良好。

语料智能化

下面曾经提到高德这种国民级出行利用受各种环境影响比拟大,如何达到接口特色级别的精准控压,是过后面临的又一大难题。平台已具备接口级别的精准控压,只需把接口依照特色分类,提供实在流量的特色散布即可。但流量的特色散布是实时变动的,如何提供合乎流量顶峰的特色散布是语料智能化的最终目标。

要实现语料智能化须要经验 3 个阶段。第一阶段是流量特色统计。咱们须要明确影响流量变动的因素,体现到流量上就是具体的参数散布,具体有哪些参数会随着外界环境的变动而变动。当然这块高德大多业务线都有一些粗略的剖析后果,后期能够间接采纳,前期就须要有更细粒度的特征分析。

第二阶段是流量特征提取。有了具体的特征参数后,就须要对特征参数进行提取统计,后续可用来做智能预测。但特征参数的提取到底应该如何去做呢?通过综合剖析发现放到语料生产的环节最合适。引流拷贝流量,语料生产环节用来解决流量,在这个环节提取特征参数再好不过了。而整个语料生产扩展性良好,对用户的非凡需要通过 UDF 实现,整个流量特征提取刚好能够在通用逻辑外面实现。

第三阶段就是智能预测与机器学习。有了特征参数的统计数据,就能够借助今年高德地图国庆或春节的流量特色,加上往年随着业务的流量变化趋势,智能预测出合乎往年国庆或春节流量特色的数据,做到接口特色级别的精准压测,做到真正意义上的全链路压测,为高德地图服务的稳定性保驾护航。后续也能够借助机器学习主动发现影响流量变动的特征参数,主动采集剖析,做到真正意义的语料智能化。

整体计划

整个引流工作将由开发的对立引流平台来实现,引流平台通过引流插件把流量缓存到 Kfaka,最终落盘到 ODPS。而整个语料生产服务间接对接引流平台,解决来自 ODPS 的流量即可。

语料生产服务的整体处理过程都由 Flink 来实现。用户只需编写 Flink 的 UDF 来实现本人业务线定制化的需要即可。而且整个 Flink 的 UDF 反对多参数传递,用户可灵便编写 UDF,在执行过程中动静传递相干参数,解决申请过期等问题。

Flink sink 是由平台开发的一个 Flink 源表解析插件,次要包含流量的特征分析与提取,以及把生产好的语料依照接口命名写入 OSS 供平台压测应用。目前流量的特色由各业务线本人提供,通过在平台增加实现。Flink sink 在执行过程中调用平台凋谢 API 获取特色数据进行采集,最终上报给平台,平台后续再依据这些数据进行机器学习,智能预测出合乎流量顶峰的流量特色,供全链路压测应用。

外围性能介绍

Iflow 引流平台

基于下面的问题剖析,高德工程效率团队踊跃迎接挑战,短短几个月开发了 Iflow 引流平台,对高德的引流进行了对立管控,具体如下图所示:

Iflow 引流平台以工作的形式对高德的引流进行治理。目前采纳引流插件的形式进行流量拷贝(后续将反对更多引流形式),流量通过 Kafka 缓存,最终写入 ODPS 供大家应用。用户只须要从 ODPS 提取须要的数据即可。而启动引流须要相干负责人审批,周知到关联业务,无效的升高了引流引起事变后排查的老本。

TestPG 语料智能化

高德全链路压测平台语料智能化次要由 3 个模块组成:业务线治理、压测名单治理和接口比例治理。业务线治理次要用来治理高德各个链路的相干数据,包含关联引流工作、启动引流、引流记录、语料门路、压测 header 治理和触发语料生产等性能。一条业务线就是一条压测链路,从引流到语料生产以及语料特征分析等都是在业务线维度实现的。具体如下图所示:

性能介绍:

  • 关联引流工作:次要实现和引流平台工作的关联以及配置相干的参数。
  • 启动引流工作:启动引流平台工作,在引流完结后会主动触发语料生产,通过执行用户编写的 Flink UDF 和平台开发的 Flink 插件,实现语料的生产和特征参数的提取。
  • 语料门路:在每次启动引流触发语料生产后平台会主动生成语料门路,用户可在创立语料的时候自主抉择。
  • 压测 header 治理:每条业务线都有本身的业务特点,在 header 上的体现也不同,这里次要用来治理压测 http 服务发送的 header 内容。
  • 触发语料生产:语料生产有 2 条路径,一是关联好引流工作启动引流后会主动触发语料生产,包含特征参数提取等一系列的操作;二是在引流胜利后,用户可能对 UDF 等参数有所批改,也能够通过此按钮来触发语料生产。

压测名单治理次要用来治理压测的接口。一个公司开始做压测,业务必定是须要跟着去适配的,随之而来的就是业务革新,这是一个漫长的过程。为了方便管理,高德全链路压测平台对高德这边的接口进行对立治理。具体如下图所示:

压测名单是在引流过程中主动上报的,引流只有发现未在压测名单的接口就会主动上报压测平台,平台依据关联利用去关联对应的负责人,并推动确认。如果可压测就确认为压测名单,下次语料生产作为白名单失常引流。如果不能压测就辨别为免压接口或待跟进接口。待跟进接口平台后续会以音讯告诉的模式推动业务线革新,最终达到真正意义的接口笼罩全、链路笼罩全的全链路压测。

接口比例治理后期次要是用来治理 BI 提供的、以及每次全链路压测调整的比拟贴近真实情况的接口比例数据,作为后续全链路压测的一个参考。前期将通过语料生产提取流量特色的统计数据,智能剖析预测出合乎真实情况的流量比例,供全链路压测间接应用,具体如下图所示:

平台劣势

语料平台化生产

整个语料生产对接了引流平台,并通过 Flink 来实现。既反对了业务方定制化的需要,也反对平台通用化的解决逻辑,扩展性良好。通用逻辑通过 Flink sink 来实现,并退出了流量特征提取等性能,推动了语料智能化的顺利进行。用户只须要学习 Flink 实现 UDF 的编写,而后在平台实现相干配置即可。很大水平上进步了语料生产的效率和品质,是语料从格局标准化向生产流程标准化的一大飞跃。

语料智能化

平台在整个语料生产的过程中,通过 Flink 插件实现了特征参数的统计汇总。目前用户只需在平台实现相干特色的配置,平台在语料生产过程中就会剖析特色并统计汇总。有了特征参数的统计数据,将有助于平台后续的智能剖析与预测,达到接口特色级别的精准控压,最终达到齐全意义的全链路压测。

平台目前曾经实现了语料的自动生产,并退出了语料智能化相干的工作。整个压测名单也是通过引流主动上报,后续将通过音讯告诉主动拉通业务线革新解决。接口比例治理模块也已反对接口比例的展现和调整,最终通过语料特色的智能预测,即可生产出合乎流量顶峰实在特色的语料。这些都将推动高德全链路压测智能化的演进。

将来瞻望

高德全链路压测平台语料智能化倒退曾经有一段时间了,通过大家的不懈努力,语料智能化已实现了语料的自动生产,以及特征参数的汇总和提取,为后续智能化奠定了根底。将来平台将通过机器学习的形式剖析学习采集到的特色数据,依据今年流量顶峰的特色状况,加往年流量的变化趋势预测出合乎往年流量顶峰的特色状况,做到接口特色级别的精准控压,齐全模仿实在流量压测达到真正意义的全链路压测。

此外,平台将会借助机器学习主动剖析发现影响流量变动的参数,主动提取剖析,进步语料生产的准确性。

平台也会有置信度评估零碎,别离比照实在的流量特色和预测的流量特色,剖析产生误差的起因,进一步提高预测的精准度,做到齐全实在的流量生产。后续配合平台的精准压测、压力模型和监控等性能达到真正意义的无人化、智能化的全链路压测。

退出移动版