大促千万级流量来袭前,我们都在做什么?
Tech
导读
压测是目前科技企业及传统企业进行系统容量评估、容量规划的最佳实践方式,本文将基于京东ForceBot平台在大促(京东618、京东双11)备战中的实践历程,给大家分享平台在压测方面的技术变革。ForceBot平台是一款分布式性能测试平台,能够为全链路压测构造千万量级的压测流量,并结合全域流量录制回放、瞬时发压、智能寻点等能力,为整站容量评估与规划提供一站式的解决方案。
01什么是高保真压测
1.定义
高保真压测:通过仿真或真实流量回放方式完成对业务系统的生产集群进行压测评估的一种实践方案,能够从环境、流量、调用链路等方面得出接近真实的压测评估结果。
2.高保真压测的判定条件
压测环境:
全链路压测:资源层面看,被测环境=生产环境,这里唯一的区别在于流量路由的开关配置不同。
单系统压测:以机房或分组为最小被测单元,压测结束后不做任何资源上的调整直接接收线上流量。
压测数据
流量录制:通过录制真实用户行为的流量,将其备份至离线流量文件中以便回放时使用。
业务配比模型:压测业务链路过长时,录制出的流量很难满足链路上各系统的业务配比模型,作为流量录制的补充可以通过还原真实业务配比模型,来模拟仿真的压测流量,以满足链路上所有系统对流量成分的需要。
压测方式
流量回放:支持离线流量文件回放与实时流量引流两种压测方式,并能根据对流量的需求动态调整流量脉冲的大小;
流量模拟:根据业务配比模型对业务链路的入口系统进行流量模拟,以保证业务链路上的每个系统都能满足配比需求;
憋单压测:通过将生产流量在线上环境的异步(消息)节点特性形成蓄洪能力,待流量大小符合要求时开启泄洪对下游系统形成冲突以达成压测的效果。
02高保真压测有哪些技术突破?
1.构造千万量级压测流量的性能测试平台
图一 性能测试平台架构图
压测平台核心要解决的是如何构造目标压测场景所需量级的压测流量,目前业界用途较广的压测工具Jmeter、Gatling、nGrinder等在单机发压能力、分布式、异步发压场景等方面都有各自的优势,以成为工具的核心功能被广大研发、测试人员认可,但当所需压测流量的量级达到十万或百万以上时,便需通过自研方式来打造能提供百万或更高量级流量的压测平台,这时我们打造的平台需要具备以下能力:
分布式架构设计,支持压测平台各服务水平扩展能力,以支持百万或更高量级的压测需求;
容器化方式运维压测平台,资源动态调整的条件由任务并行度决定;
实时计算模块压测结果秒级反馈,提升压测判断的准确与及时性;
经京东618/双11备战验证目前压测平台可支持万台压力机资源调度,提供至少千万量级的压测流量。
2.全域流量录制回放
高保真压测的核心在于如何构造真实的压测场景,线上真实用户行为的流量是最为真实的流量数据,所以为提升压测场景中的数据质量,流量录制回放技术便成为一个专项研究的内容,如何将线上流量无损的录制下来?通过什么样的技术手段进行录制?录制下来的流量又解决进行安全存储等等问题,下面会从公网流量、内网流量录制回放的解决方案进行详细的说明这些问题的技术方案。
图二 公网流量录制回放流程图
(1)公网流量录制回放全景
录制:流量由IDC机房的核心交换机的分光口复制到流量文件中并存储到CFS中(类似网盘),此方式因流量从光层进行录制,故对应用无任何性能损耗;
回放:压测平台回放流量时,将流量文件所存储的CFS网盘直接挂载至压力机上,以提升流量文件分发给各压力机过程的效率;
数据成份:录制到的流量数据在存储前会对敏感数据(Cookie、用户信息、银行卡信息等)进行脱敏处理,并将流量加密存储到流量文件中,以保证数据的安全性。
图三 公网与内网流量录制的差别
(2)公网流量录制原理
公网流量录制由核心交换机的分光口复制得到,故如图所示,流量会从交换机节点分两路:一路正常到目标应用(蓝色部分),一路经分光设备到流量录制服务(橙色部分);
因分光出的流量量级太大,单台服务器无法完整接收,故需要通过分光、分流设备,将流量引流到流量录制服务的集群中进行解析、过滤、脱敏等处理后得到可用于回放的流量数据;
数据安全:流量数据在经历解析、脱敏处理后,为保证数据存储的安全性,流量数据在真正落盘存储前,会进行加密处理以保障数据安全。
(3)内网流量录制原理
内网流量的录制以Agent植入应用的方式为主,通过对目标应用的服务器植入Agent,并将流量录制到MQ、缓存或云盘等介质,作为回放时的离线流量;
此流量录制方式虽对目标应用有性能方面的损耗,但因可灵活控制流量录制的采样率或采集的服务器数量,所以这方面的风险可根据需要进行有效的控制;
此技术可支持HTTP、RPC等多种协议的录制,可满足内网复杂的多协议相互调用的流量录制解决方案。
03高保真压测在618/双11军演中的实践
通过对压测技术的不断迭代升级,使压测的效率与质量得到的进一步的提升,让容量评估工作的结果更真实可靠,通过近几年的全链路压测及日常压测的实践与沉淀,目前已支持各IDC机房内或机房间在同一时间段内在不影响生产流量的情况下开展压测工作,具体压测方案实现与取得的成果如下:
图四 高保真压测最佳实践
前已支持各IDC机房内或机房间在同一时间段内在不影响生产流量的情况下开展压测工作,具体压测方案实现与取得的成果如下:
ForceBot作为京东全链路压测、高保真压测等多种压测实践方案的落地平台,为618/双11的备战工作提供了重要保障;
军演压测流量需求增长10倍:由百万级增长至千万级别,满足了单IDC机房的压测流量需求;
持续提升重点系统高保真压测的覆盖范围,使覆盖率提升至80%;
平台目前已经覆盖京东集团内90%左右研发团队的压测评估的实施。
Flutter For Web实践
HBase在人资数据预处理平台中的实践配运基础数据缓存瘦身实践