乐趣区

关于阿里云:全链路压测影子库与影子表之争

作者: 葛天萌(智云)

业界盛传的全链路压测是什么

全链路压测诞生于阿里巴巴双 11 备战过程,如果说双 11 大促是阿里业务的“期末考试”,全链路压测就是大考前的“模拟考试”,诞生后被誉为双 11 稳定性保障的“核武器”。全链路压测通过在生产环境对业务大流量场景进行高仿真模仿,获取最实在的线上理论承载能力、执行精准的容量布局,确保零碎可用性。

分布式架构和业务疾速倒退给业务零碎带来了不确定性。分布式环境的任意节点都可能成为瓶颈 / 短板 / 问题,同时零碎可用性随着业务的快速增长,面临更严厉的挑战和不确定性。比方:

  • 单链路压测短少内部烦扰和各种资源竞争,单链路压测的后果广泛比拟乐观,不能反映实在的零碎承载能力。
  • 某些问题只有在真正的大流量下才会裸露,比方网络带宽、零碎间影响、根底依赖等等。
  • 全链路压测不仅仅是做压测,更多的是进行一次实在的大促预演,预案演练、限流验证、破坏性演练等高可用计划的对立验收。

其中全链路压测的常见问题就是如何做到生产环境的数据隔离:在生产环境进行写压测时,须要保障在压测进行的同时不影响线上业务的失常运行,那么就须要思考将压测产生的数据与生产的实在数据隔离存储,防止脏数据对线上业务产生影响。阿里云的全链路压测平台除了提供了影子表计划之外,还提供了影子库的数据隔离计划。

在生产环境施行全链路压测的过程中,针对上文谈到的两种计划,又面临着数据隔离计划的抉择问题,本文首先针对影子库、影子表两种计划进行介绍和比照,而后针对常见的场景,给出计划的抉择倡议。

全链路压测数据隔离计划的抉择

目前全链路压测平台提供了 影子库、影子表 解决方案。应该如何抉择适宜本人的计划呢?本文首先针对两种计划的原理进行论述,而后从性能、稳定性、老本三个考量指标进行比照。

计划一:影子库

如图 1 所示,针对影子库计划,是在同一个实例上建设对应的影子库。用户服务挂载的全链路压测探针获取到流量标之后进行相应的旁路解决,如果是影子流量,那么会从影子连接池中获取影子连贯供业务侧应用,从而将压测流量产生的数据旁路到对应的影子库中,以此达到数据和生产库隔离的成果,从而防止了压测流量产生的数据对生产库造成净化。

图 1:影子库计划基本原理

计划二:影子表

如图 2 所示,相似影子库计划,针对影子表计划,是在同一个实例上的同一个数据库上建设对应的影子表。用户服务挂载的全链路压测探针获取到流量标之后进行相应的旁路解决,如果是影子流量,那么,探针会针对本次的 DB 调用进行 SQL 解析和替换,从而将压测流量产生的数据旁路到对应的影子表中。

图 2:影子表计划基本原理

计划比照

本文次要从性能、稳定性、老本三个方面来论述两种计划的优缺点。

图 3:计划比照

性能

机器规格:4c8g

并发规格:需同时模仿失常和压测流量两种类型的流量,这里以 2:8 的比例进行划分,以便于模仿业务流量低峰期进行生产环境全链路压测。

    • 失常流量:200 并发
    • 压测流量:800 并发

这里次要从服务所在的主机和所用的数据库实例两方面的监控去剖析。其中,利用监控次要以 CPU、内存和均匀 RT 三个指标剖析。数据库实例监控从连接数、QPS 两个指标的维度进行剖析。

从以上两种计划不同维度的指标比照能够看出,影子表计划对 CPU 的耗费略高,这和该计划的实现形式无关。

稳定性

谈到稳定性,能够从数据源实例的连接数规格、容量规格、IOPS、网络流量等方面进行剖析。

以上指标,这里以连接数为例进行阐明,具体如下:

针对影子库计划。因为是在同一个实例上建设不同的数据库,所以如果不思考数据库实例可能达到最大连接数下限,实践上影子连贯和失常连贯时互相独立的,执行时互不影响。

针对影子表计划,因为是在同一个实例上的同一个数据库上建设了不同的数据表,那么这里就要思考业务侧的连接池配置了,因为影子流量波及到的 DB 操作和失常流量波及到的 DB 操作,所用的数据库连贯,均来源于同一个连接池,所以如果压测量级较大的时候,是比拟容易呈现连接池连贯瓶颈的。

老本

依据表格中的内容,这里次要以冗余老本和数据迁徙老本进行阐明,具体如下:

  • 冗余老本

针对影子库计划,为了保障全链路压测评估后果的精准度,咱们须要在同一个实例上做全量的库迁徙操作,包含表构造和表数据,这会带来一个比拟显著的问题,老本比拟高,所有的根底只读表(此类型的表不会有写操作)均要冗余一份,无奈达到复用的目标,所以对于中大型企业来说,是难以承受的。

针对影子表计划,是在同一个实例上的同一个数据库上建设影子表。那么就能够复用生产库中的根底只读表,只需对写表进行建设影子表即可。影子表计划在肯定水平上升高了数据冗余所带来的老本耗费。

  • 数据迁徙老本

从压测的主流程来说,分为压测前、压测中、压测后。其中,数据筹备是处于压测前这一阶段的,压测胜利与否,和数据筹备这一环节密切相关。数据迁徙的过程须要将某张数据表所关联的其余表字段同时做迁徙,这一过程是比较复杂和消耗精力的。所以,具体抉择哪种计划,须要联合业务数据的复杂程度来评估。

总结

综上,具体抉择以上两种计划中的哪一种,其实仅靠一个指标判断是不够的,要联合以上多个指标以及具体的业务场景来进行综合评估的。上面针对两种典型的场景来阐明应该如何抉择适宜本人计划,以下意见仅供参考。

场景 1:在波及到的读表比例高于写表、并且整库迁徙老本较高的状况下,举荐抉择影子表计划,在肯定水平上能够缩小简单的数据迁徙带来的老本。

场景 2:在波及到的写表比例高于读表,同时生产库实例容量较为短缺的状况下,举荐抉择影子库计划,在肯定水平上升高了梳理、配置的老本。

目前,全链路压测提供混合云解决方案输入,欢送大家应用。具体详情请点击 此处 查看。

更多交换,欢送进钉钉群沟通,PTS 用户交换钉钉群号:11774967。

退出移动版