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

简介: 性能提升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%


六、所需资源

无需新增资源


总结:

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

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

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

相关文章
|
存储 SQL 关系型数据库
如何设计可落地的重构技术方案——理论篇
如何设计可落地的重构技术方案——理论篇
507 0
|
canal 消息中间件 关系型数据库
系统重构数据同步利器之Canal实战篇
系统重构数据同步利器之Canal实战篇
1337 1
|
canal 关系型数据库 MySQL
重构方案设计
重构方案设计
248 0
|
移动开发 小程序 前端开发
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
uniapp开发小程序H5页面顶部导航栏navigationBar如何隐藏?三种解决办法
|
存储 监控 NoSQL
快速认识OTS
## 什么是OTS   OTS 是Open Table Service的简称,现在已更名为表格存储Table Store,官网对它的解释为:OTS是构建在阿里云飞天分布式系统之上的 NoSQL 数据库服务,提供海量结构化数据的存储和实时访问。OTS 以实例和表的形式组织数据,通过数据分片和负载均衡技术,达到规模的无缝扩展。OTS 向应用程序屏蔽底层硬件平台的故障和错误,能自动从各类错误中快速
47493 2
|
存储 缓存 Java
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
Spring缓存注解【@Cacheable、@CachePut、@CacheEvict、@Caching、@CacheConfig】使用及注意事项
3501 2
|
存储 运维 NoSQL
如何撰写好的技术方案设计-真实案例干货分享
如何撰写好的技术方案设计-真实案例干货分享
2221 0
|
存储 缓存 NoSQL
经验大分享:OHCJava堆外缓存详解与应用
经验大分享:OHCJava堆外缓存详解与应用
358 1
|
存储 NoSQL 算法
线上真实排队系统重构案例分享——实战篇
线上真实排队系统重构案例分享——实战篇
864 0
|
搜索推荐
8个邮件营销平台分析及对比
本文对比了8个热门邮件营销平台:Aoksend适合初创企业,Constant Contact用户友好,Sendinblue提供多元营销服务,GetResponse功能全面,蜂邮EDM适合大规模活动,MailerLite价格实惠,Campaign Monitor专业定制,ActiveCampaign侧重营销自动化。选择时应考虑自身需求和预算。