【路漫漫其修远兮】7/21业务学习:Jmeter压测以及高并发异步优化(一)

Jmeter压测以及高并发异步优化

同步发送+restTemplate未池化

600到700QPS(跟服务器性能有关)

使用@Async注解,异步请求

什么是异步

  • 异步调用时相对于同步而言,同步调用时指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行;通俗点理解,比如早上收作业,同步就是,如果遇到小朋友作业没写完,就等他写完再进行下一步,异步就会跳过这个小朋友,先收后面小朋友的作业
  • 多线程就是一种实现异步调用的方式
  • MQ也是一种宏观上的异步

使用方式

  1. 启动类使用@EnableAsync注解开启功能,自动扫描
  2. 定义异步任务类并使用@Component标记组件被容器扫描,异步方法加上@Async

使用异步之后的QPS

在这里插入图片描述

提升不止一点点

Async失效情况

  1. 注解Async的方法不是publice方法
  2. 返回值只能是void或者future
  3. 不能使用static也会失效
  4. spring无法扫描到异步类
  5. 调用方和被调用方不能在同一个类
    • 原因:
      • Spring在扫描Bean的时候会扫描方法上是否包含@Async注解,动态地生成一个子类(即proxy代理类),实际上是代理类来调用这个有注解的类,代理类在调用时提供了异步功能
      • 如果有注解的方法是被同一个类中的其他方法调用,这次调用并没有通过代理类,也就无法受到代理类提供的异步功能
      • 一般要将异步执行的方法单独抽取成一个类
  6. 类中需要使用Autowired或者Resource等注解注入,不能手动new
  7. 在Async方法上标注Transactional是没用的,但在Async方法调用的方法上加是有效的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值