正文
,点击图片可缩放
Figure 2: Redliner system metrics rules 示例
,点击图片可缩放
完全自动化
为了克服手动测试的缺点(如缺乏一致性,高维护成本等),我们需要一种非手动的方法。该方法用于启动性能测试、确定吞吐量容量、对系统性能下降的告警进行检查,以及在出现问题时优雅的停止测试以及进行回退。
我们在 Redliner 中自动化了上述过程,同时使用 LinkedIn 技术能力使其具备可靠性和可扩展性。Redliner 可以根据计划启动测试,通过 EKG 监控性能状况,并利用 A / B 测试平台 XLNT [1] 动态调整转移到目标服务实例的流量。
经过几次迭代(如下所述)后, Redliner 最终可以确定单个实例可以处理的最大吞吐量 QPS。整个端到端测试过程通常可以在不到一个小时完成。 Redliner 还可以生成测试报告,并在每个测试结束时识别服务的响应延迟变化,以及定位资源瓶颈(如果有)。如果服务资源过度冗余或不足, Redliner 会向服务相关人员发送电子邮件并提供具体建议。
Redliner 架构及生态
图 3 表示了 Redliner 的架构,并展示了与关键组件的交互,以实现流量转移和容量评估。 有几个关键组件:
-
业务分流层(代理/负载平衡器)
-
服务健康分析器
-
服务运行数据收集器
Figure 3: Redliner 及依赖模块,点击图片可缩放
业务分流层(代理/负载平衡器)
目前, Redliner
仅支持无状态服务;
即那些请求流量可以路由到机房中任意 SUT(Service Under Test)服务器或实例。这些访问的流量通过在负载均衡层的重新路由机制进行控制,使得动态流量转移成为可能。
业务转向层是 Redliner 实现动态业务转移的关键组件。 Redliner 确定要应用于目标实例的流量级别,并与 LiX( LinkedIn 实验服务)进行通信,相应对代理和负载均衡上的特定配置进行更改。
LiX 是 LinkedIn 转移流量的默认方式(包括 A / B 测试体系); 它通过底层基础设施提供了一种可控和安全的流量控制方式。通过更改代理和负载均衡的配置, Redliner 能够自动控制从调用客户端流向目标服务实例的流量。
服务运行数据收集器
容量评估和余量分析是基于对性能度量的评估,以确定 SUT 是否接近容量。 所有 LinkedIn 服务向 Autometrics [2] 发送指标。 Autometrics 是基于推送的实时指标收集系统。 Redliner 利用 Autometrics 实现系统级和服务级性能指标(如 QPS,请求延迟,错误率和 CPU /内存利用率)的实时数据获取。
服务健康分析器
Redliner 的服务健康工具 EKG [3] 可以分析上述性能指标,以确定服务的整体健康状况。 EKG 通过对选定的性能指标运行状况检查规则以进行分析。 Redliner 通过查询 EKG,以便在正常流量负载和测试负载之间进行性能比较。 它还为后续一些步骤查询健康检查结果。