性能优化的方案

1、性能指标

cpu使用率

tps qps

rt

2、思路

监控发现问题,

cpu变化,访问量变化,耗时变化

排查,锁定问题

例如db耗时高导致服务端耗时高,内部处理死循环

制定目标

产出解决方案

查看效果,不断调优

3、方案

扩容

   短时间快速解决,简单粗暴

串行---》并行

  充分利用机器资源,提高吞吐量,以空间换时间,但需要考虑并行数大小

同步--〉异步

 不是强依赖的链路,可以转成异步处理,主线程先同步返回结果,缩短服务耗时

但是要关注异步处理限流,流控,晓峰填谷

多次单比--》合并处理

   减少多次调用的网络耗时

远端--〉近端,内存

减少网络耗时

 但是要保证近端,内存中数据的更新机制

DB优化

   事务最小化‘

    索引

案例

比如活动最优计算,平台类型的活动

 活动1

商户人群规则

用户人群规则

活动使用次数规则

活动2

商户人群规则

用户人群规则

活动使用次数规则

活动3

商户人群规则

用户人群规则

活动使用次数规则

业务特点:

活动个数多

    从几百个活动中选出最优活动,运算量大。

活动规则种类多

    人群规则,商户规则

    难以直接锁定某一个活动

请求量大

优化的过程

1、串行---》并行

活动1                  活动1..N

活动2.                活动2..N 

活动3-----------〉活动3..N 

。。。

活动n.            活动m.N 

RT减少了几十ms,cpu增加了10%,空间换时间

‘线程数不能无限扩张,反而增加线程来回切换的使用成本

随着活动数的不断扩大,流量的不断增加,又到达了一个瓶颈

2、倒排索引

并行跑的活动个数还是太多,能否提前过滤一部分活动?减少线程数?

规则分析结论:区分度高的规则能否提前过滤,例如商户人群规则,门店规则

特征提取                                                                                    门店类    门店人群1--》活动1

                                                                                                                 门店人群1--》活动2

规则前置---》解析活动规则--〉生成人群缓存--》建立活动索引 商户类

索引构建                                                                                      用户类

区分度高的规则提前过滤,过滤后在并行验证活动的剩余规则

线程数下降很多,cpu下降了10%

外部依赖优化

调用人群量级很高,并且大部分的情况都是人群验证不通过,如何减少人群接口的调用?远程--》近端,内存。

引入boomfilter‘

本质上不拢过滤器是一种数据结构,告诉你“某样东西一定不存在或者可能存在”。他的原理将数据通过多次hash设置到数据中,标记该数据是否存在,如果计算出数组中值为0,那么肯定不存在,如果为1那么可能存在,一次请求能命中的活动很少,大部分情况验证不存在。

将人群的数据放到本地的boomfilter中,直接过滤。

规则中心规则运算优化

业务描述

一个活动都会有自己的规则,例如 人群规则,领取规则等多个条件

规则模型

               

规则组1: 条件1 且 条件2 

规则组2: 条件1 且 条件2

规则组3 : 条件1 且 条件2

从上至下依次执行

业务特点:

通过率高的规则组优先执行

通过率低的条件优先执行

规则大部分还是人群

优化过程

1、并行+合并处理

并行调用规则中,然后规则中心合并执行

2、动态调整规则的优先级

规则中心---》将运行时数据打印摘要实时同步到调度决策中心

离线计算好规则的优先级,在同步到规则中心。这样规则中心就可以动态的执行

采集运行中实时的规则通过率,计算各个条件通过率的优先级,计算完后推送到各个机器上,按照优先级的顺序执行;耗时下将20%,cpu下降10%

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值