性能提升40倍——线上真实重构案例分享

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 性能提升40倍——线上真实重构案例分享

写在前面

这篇文章和大家分享一下最近和团队成员一起重构的围栏服务真实案例分享,二话不说,先上图:

d9cd0c030ce0a92e664f48bf9d1a0ed2.png

重构前后对比(单台docker服务压测结果)

对比项 QPS 平均RT P995耗时 说明
重构前 120 50ms 800ms 压测达到性能瓶颈
重构后 5000 5ms 50ms 压测未到达性能瓶颈

重构之后性能提升40倍,效果非常明显。

下面分享详细技术方案。

技术方案

一、背景/现状

  1. 多次压测反馈,目前线上机器8台docker大概只能支撑1k/QPS, 单机120/QPS。
  2. 无城市查询围栏场景,会循环判断该业务线下全国的围栏是否命中,耗CPU严重,高峰期性能瓶颈特别明显。


二、目标

  1. 1.派单围栏服务流程重构,通过派单系统自建空间索引RTree方式, 利用空间换时间的方式,先通过    RTree搜索围栏,再判断坐标是否在围栏内。
  2. 2.现有资源不变情况下,提升接口性能,并且支持水平扩展。


三、重构方案

1.重构前流程图


2.重构后流程图

b9af167847bb9b6f868ec52ea5868f43.png

3.RTREE数据结构简介: 每个节点是能把对应的围栏包起来 的最小外包矩形


四、里程碑节点

阶段 事项 开发时间
开发阶段 1. 围栏系统自建Rtree开发
2. 灰度方案开发(按流量灰度,支持header指定强制走新系统(方便压测),
3. 数据对比: 通过抓取线上日志,通过流量回放,同时请求新老围栏系统,判断结果是否完全一致。
4. 异常补偿: 强制刷新Rtree接口)
5d
测试阶段 由测试同学评估,开发提供影响范围 2d
灰度阶段 1. 按流量灰度平滑迁移  2. 压测 5d


五、灰度方案

按接口请求流量灰度

一阶段 二阶段【压测】 三阶段 四阶段 阶段
万分之一 1% 20% 50% 100%


六、所需资源

无需新增资源


总结:

本次重构优化效果很明显,其实改动并不是很大,可见合理的技术方案是非常重要的。作为技术人,我认为写代码是其次的,也是最基本的,除此之外应该多深入思考一下,多问问自己:"这样实现会不会有什么瓶颈?有没有更好的方案?我这样实现之后能不能水平扩展?如果不能,我有什么应对方案?"。

另外,借鉴之前老大说的一句话:"只要人觉得可能出现问题的地方,就一定会出问题!" ,敬畏心也是非常重要的,所以灰度方案,也是非常重要的。

刚接手这个新团队不久,重构之路刚刚启程,这篇文章也是记录一下心路历程,希望对大家也有所感悟和帮助。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
7月前
|
缓存 前端开发 JavaScript
如何优化前端性能提升用户体验
在Web应用中,前端性能是影响用户体验和转化率的关键因素之一。本文将介绍一些优化前端性能的方法,包括减少HTTP请求、使用缓存、压缩代码等。
|
8天前
|
SQL 缓存 监控
接口性能倍增记:一次成功的优化实践
在软件开发过程中,接口性能优化是提升用户体验和系统稳定性的关键环节。本文将分享一次接口优化的成功案例,从问题发现到解决方案实施,详细介绍我们的优化过程和成果。
20 0
|
8天前
|
缓存 监控 数据库
接口性能飞跃:一次成功的优化实践
在软件开发中,接口性能优化是一个永恒的话题。一个高效的接口不仅能提升用户体验,还能减轻服务器压力,降低运营成本。本文将分享一次成功的接口优化案例,从问题诊断到解决方案实施,详细介绍我们的优化过程。
29 0
|
2月前
|
编解码 监控 固态存储
提升系统的整体性能
提升系统的整体性能
31 2
|
4月前
|
数据采集 人工智能 算法
谷歌发布大模型数据筛选方法:效率提升13倍,算力降低10倍
【8月更文挑战第31天】近日,谷歌发布了一项名为多模态对比学习联合示例选择(JEST)的研究成果,旨在优化大模型预训练过程中的数据筛选。JEST通过联合选择数据批次而非独立选择示例,利用多模态对比目标揭示数据间的依赖关系,提高了学习效率。实验表明,JEST能显著加速训练并降低计算成本,最多减少13倍迭代次数和10倍计算量。这一成果有望推动大模型预训练更加高效和经济。论文详情见:https://arxiv.org/abs/2406.17711。
61 2
|
4月前
|
Docker 容器
典型热点应用问题之追求60秒构建时间目标的问题如何解决
典型热点应用问题之追求60秒构建时间目标的问题如何解决
|
4月前
|
存储 缓存 弹性计算
解读大模型时代的数据加速:性能、稳定性与一致性一个都不能少
本文探讨了在大模型时代,如何在数据加速中平衡性能、稳定性和一致性,通过阿里云ACK Fluid的实例,详细解析了优化策略与最佳实践,旨在帮助用户高效应对数据管理挑战。
|
7月前
|
数据采集 人工智能 测试技术
3倍生成速度还降内存成本,超越Medusa2的高效解码框架终于来了
【5月更文挑战第21天】CLLM,一种新方法,通过并行解码提升大型语言模型推理速度3-4倍,降低内存成本,超越Medusa2。采用Jacobi解码和微调策略,保证生成质量。无需修改模型架构,训练成本低,可与现有技术集成。但依赖高质量数据集,更大数据集可提高泛化能力。[链接](https://arxiv.org/pdf/2403.00835)
68 2
|
SQL 机器学习/深度学习 分布式计算
「大数据架构」Spark 3.0发布,重大变化,性能提升18倍
「大数据架构」Spark 3.0发布,重大变化,性能提升18倍
|
7月前
|
人工智能 算法 搜索推荐
某国有银行业务收益提升30倍,它究竟是怎么做到的!
在激烈的银行竞争环境下,释放存量客户的复购潜力成为关注的重点。然而,目前银行销售理财产品过程中存在一系列问题,其中一个主要原因是过度依赖理财经理的个人经验。国有银行也难以避免这些问题在目标客户定位和营销执行过程中的出现。