多入口性能压测大杀器,2017双11海量数据下Eagl

作者: 单机闯关小游戏  发布:2019-09-07

摘要: EagleEye作为阿里集团老牌的链路跟踪系统,其自身业务虽不在交易链路上,但却监控着全集团的链路状态,特别是在中间件的远程调用上,覆盖了集团绝大部分的场景,在问题排查和定位上发挥着巨大的作用,保障了各个系统的稳定性,为整个技术团队打赢这场战役保驾护航。

背景 
双十一一直是阿里巴巴集团每年要打的一场大战役。要打赢这场战役,技术上,不仅仅是几个应用、几个系统的事,也不是多少个开发 多少个测试就能完成的事,而是需要各大系统协同作战、每个应用各司其职、技术人员通力合作才能取得最终的胜利。

我们面临的挑战

多入口性能压测大杀器,2017双11海量数据下EagleEye的使命和挑战。EagleEye作为阿里集团老牌的链路跟踪系统,其自身业务虽不在交易链路上,但却监控着全集团的链路状态,特别是在中间件的远程调用上,覆盖了集团绝大部分的场景,在问题排查和定位上发挥着巨大的作用,保障了各个系统的稳定性,为整个技术团队打赢这场战役保驾护航。

阿里的双十一已经成为全球的超级工程了,在这个超级工程中,多入口性能压测大杀器,2017双11海量数据下EagleEye的使命和挑战。全链路压测是很重要的一个环节。整个集团层面的全链路压测,涉及到的BU和团队非常多,对于这样一个涉及多个团队协作的事项,如何尽量的减少人员的投入,减少全链路压测的次数,同时又能保证压测能够达到目标,成为一个必须要去突破的问题。

图片 1

多入口性能压测大杀器,2017双11海量数据下EagleEye的使命和挑战。集团的全链路压测主要涉及交易和导购两部分。交易的全链路启动比较早,相关的平台,工具和流程经过几年的沉淀,已经比较成熟,形成了较为稳定的体系。导购的全链路压测,因为导购业务的特殊性,例如入口流量存在较多的不确定性,系统之间的调用错综复杂,加上导购的业务,日常态和大促态差异比较明显等。

图1 EagleEye系统整体情况

图片 2

近两年集团业务和规模始终保持着高速的增长,纵深上,交易量屡攀新高,双十一零点的交易峰值也再一次刷新了历史;横向上,集团涉及的行业和领域也不断的拓展,各行各业在不断加入阿里(高德、优酷、友盟及大麦等等),共同前进。

以上是经过抽象之后的导购的全链路压测模型,实际的模型,会更复杂,入口的分散,系统之前的互相依赖等,如下图显示。

多入口性能压测大杀器,2017双11海量数据下EagleEye的使命和挑战。面对数据规模持续增加,如何应对在业务高速发展的背景下系统采集的数据量级的持续增长,如何在越来越大的数据规模面前保障EagleEye自身业务的稳定,成为EagleEye今年双十一面临的巨大挑战。

图片 3

图片 4

另外导购的全链路压测2016年才启动,还没能够形成体系。针对这些问题和挑战,2017年,我们通过构建一站式的全链路管理平台。克服了上述的问题,取得了良好的效果。

多入口性能压测大杀器,2017双11海量数据下EagleEye的使命和挑战。图2 EagleEye支持的业务情况

在2017年导购的全链路压测启动之前,我们先回顾了过去导购全链路压测经历过的问题。

全链路压测一直是阿里巴巴集团保障双十一的大杀器之一,通过在线上环境全真模拟双十一当天的流量来检验各个应用系统的负载能力。EagleEye在全链路压测中承担了重要的责任,透传压测标记实现流量的区分,压测数据的收集与展现用以帮助业务方的开发同学发现及定位系统的问题。所以,保障全链路压测也是EagleEye的重要使命之一。 
今年的EagleEye 
无论是常态、全链路压测或者是双十一当天,EagleEye面临的主要问题是如何保障自身系统在海量数据冲击下的稳定性,以及如何更快的展现各个系统的状态及更好的帮助开发同学发现及定位问题。今年,EagleEye通过了一系列改造升级提高了系统的稳定性,实现了更好更快的辅助业务方定位及排查问题。

1. 压测的人力消耗已经越来越不可管控,全链路压测导购人力消耗,150人,双十一当天1000人,如何减少人力已经成为迫在眉睫的事情

图片 5

2. 应用多,入口分散,每次压测都需要调整流量模型,频繁的调整对收口业务的稳定性带来了较大压力

图3 系统架构图

  1. 无历史参考数据,换一拨人很多历史经验无法沉淀,造成人力的巨大浪费

计算能力下沉 
早期的EagleEye在链路跟踪以及数据统计都是基于明细日志完成,实时采集全量的明细日志并在流计算中做聚合,随着业务量的增长,日志的数据量也在急剧上升,计算量也随之线性增长,资源消耗较高。而且在全链路压测或者大促期间,日志量会有明显的峰值,极有可能造成计算集群系统过载或者数据延迟甚至有可能导致数据的丢失。

4. 上下游流量人肉的收集与管控,导购场景相互之间网状调用,造成长期流量评估的巨大误差

为解决这类问题,最初的做法是采样,通过采样降低收集的日志量,从而稳定计算集群的负载及水位,保障EagleEye自身业务的稳定性,尽量减少业务峰值对我们的影响。但是带来的问题也是显而易见的,统计数据在计算时需要考虑采样率估算出真实的数据,在采集数据量较小且采样率较高的场景下导致聚合后的数据不准确,无法展现业务真实的状态,从而也就失去了其价值。

  1. 无压测性能过程管控,研发人员一有性能问题第一反应就是要机器

为彻底解决业务峰值对EagleEye计算集群的冲击,将部分实时计算逻辑下沉到业务方的机器中,使得业务量和所需采集的日志量解耦,保证计算集群的稳定性。具体实现是在业务方的机器上先将数据按照指定维度做聚合(一般是以时间维度),计算集群采集该统计数据后再次聚合,极大的稳定了计算集群的负载。

针对这些问题,我们构建了一站式的全链路压测平台。以下是平台核心功能,主要包括压测构造、压测执行(偏监控)、分析问题和定位。

图片 6

压测构造

图4 计算能力下沉

导购的全链路压测,压测需求的构造,是很重要的一个环节,对压测结果的准确性有很重要的影响,同时也需要不小的工作量。2017年,我们在压测构造方面提供了以下的丰富的能力

计算能力下沉,也可以理解成将计算分布式化,消耗了业务方极小的一部分资源,保证了EagleEye集群的稳定性。而且,集群的计算量不再随着业务量的增长而增长,只随应用规模(应用数量、机器数量)和统计维度的增长而增长,不会再出现由于业务量的瞬间峰值导致计算机群的负载过高的问题,最终使得EagleEye在全链路压测和大促期间都能保持稳定水位,并且产出精准的数据。

(1)数据工厂:提供快速构建压测数据,支持多种类型和灵活的参数构建规则,并实现了压测数据在关联系统之间的共享,降低了压测数据准备的工作量提高了压测数据的准确性

场景化链路 
EagleEye一直专注于中间件层面的调用,而阿里巴巴的业务量庞大,系统也比较复杂,所以各部分的功能划分比较清晰,中间件层面的一些数据比较难与业务数据相关联,对于链路跟踪、问题定位及针对指定业务场景的容量规划等都有一些难度。

(2). 压测流量模型和需求: 导购的流量存在多单元入口,以及入口流量的不确定性,这对压测需求的构建有一定的影响。2017年,我们通过构建压测流量模型。并以此作为基础,直接一键构建压测需求,并支持压测需求的批量更新,合并,复制,需求内链路压测数据之间的共享等,大大降低了压测需求构建的工作量。

今年,EagleEye推出场景化链路的功能,开放了添加业务场景标的能力,类似于压测流量打压测标,对指定的业务打上对应的业务场景标签,并关联该标签下所有的中间件调用(包括服务、缓存、数据库和消息等),一是可以帮助业务方开发同学更好地区分某个RPC流量中的业务语义,二是可以清晰的梳理出某个业务场景标下对应的RPC流量,对分析一些关键指标,如缓存命中率,数据库RT等有较大的帮助。

流量模型梳理

图片 7

近1000个链路场景,系统与系统之间存在互相调用,系统流量之间存在千丝万缕的联系,给核心系统的业务评估带来了巨大的挑战。评估流量模型的时候很容易产生遗漏,也容易产生评估的偏差。OPM可以实时录入线上流量,产生流量调用比例图(如上图所示),当入口流量确定时,可以协助用户梳理整体流量,为流量的梳理提供帮助

图5 流量场景标

在这个基础上,我们增加了导购全链路压测的全局视角,通过提供以下的能力,达到全链路压测的一体化。

基于此数据,也可以更好的复盘全链路压测数据。在压测之前(也可以在常态下)对关键业务打上指定的标签,压测后通过各业务场景的流量得出对应的性能基线,更好的定位核心链路中的问题及性能拼劲,提高压测的效率和价值。 
精细化监控 
EagleEye的链路数据对于问题的发现和定位有着至关重要的作用,更加丰富的数据形式和展现对提高发现的效率有明显的提升。

1.任务管控:可以管控导购全链路压测的所有应用链路,包含压测需求、压测链路、流量模型、并提供了全局流量视图。对导购的全链路压测的全貌,可以实时查看。达到对整个压测的可视化

本文由bg游戏资讯发布于单机闯关小游戏,转载请注明出处:多入口性能压测大杀器,2017双11海量数据下Eagl

关键词: 数据库技术 阿里 大数据 云开发