不用异步队列实现异步处理较大数量级导入的开发记录20190612140700

简介: 能异步别同步,毕竟对于性能、响应都是好的。最近在做基于老系统拓展批量导入的功能,简单做一下记录,虽然初级但是至少培养记录总结的习惯吧。

能站别躺,为什么?因为能减肥呀。一样的,能异步别同步,毕竟对于性能、响应都是好的。最近在做基于老系统拓展批量导入的功能,与老系统的交互就用DUBBO RPC了,不接MQ了。
如果是走RPC同步业务处理接口,就不能简单粗暴地直接:
1
从上面的交互可以看出,如果这样实现,数据量一大的话肯定各种问题:
1.数据量大的话rpc执行时间长,有可能HTTP请求会超时;
2.中间各个网络节点IO流压力大;
3.文件处理有可能内存溢出;
4.发生运行时异常概率非常高,分布式事务导致结果不一致:RPC那边已经提交了,但是调用方后面发生异常导致两边不一致;
5.客户端响应久,交互差...
那这样肯定要用异步了,不走异步队列的话,用定时任务把。处理数据冗余在数据库,定时任务定时去拿数据处理,维护处理结果:
2
这样执行速度优化了很多,前端响应也快。但是又怕定时器并发问题,虽然是一个服务,但是单个任务执行慢的话怕下一次触发定时任务同步造成脏读,错误并发处理。所以了解了下Spring的定时任务,发现Spring的定时任务默认是单线程的,那这样就不用担心,不然要加锁防止并发了。既然涉及到定时任务的并发控制,顺便记录一下比较简单的设置定时器并发:
一、在定时器上使用@Async注解实现异步任务,并需在启动类配合加上 @EnableAsync才会生效;
二、 手动设置定时任务的线程池大小:不使用@Async注解,新增启动代码配置类:
3
好了,简单做一下记录,虽然初级但是至少培养记录总结的习惯吧。

目录
相关文章
|
6月前
|
分布式计算 关系型数据库 MySQL
DataWork数据处理问题之调整并发数量如何解决
DataWork数据处理是指使用DataWorks平台进行数据开发、数据处理和数据治理的活动;本合集将涵盖DataWork数据处理的工作流程、工具使用和问题排查,帮助用户提高数据处理的效率和质量。
|
8天前
|
存储 BI UED
提升系统性能:接口请求合并的高效技巧
在现代软件开发中,接口请求合并是一种提升系统性能的有效手段。它通过减少网络请求次数和服务器负载,显著提高了应用的响应速度和用户体验。以下是三种接口请求合并的技巧,它们在实际应用中表现出色,能够使性能直接爆表!
15 1
|
3月前
|
负载均衡 算法 Serverless
异步任务处理系统问题之实现负载随机分片的问题如何解决
异步任务处理系统问题之实现负载随机分片的问题如何解决
|
4月前
|
SQL 安全
线程操纵术并行策略问题之调整并行流的并行度问题如何解决
线程操纵术并行策略问题之调整并行流的并行度问题如何解决
|
4月前
|
消息中间件 缓存 并行计算
每秒钟承载600万订单级别的无锁并行计算框架 Disruptor学习
每秒钟承载600万订单级别的无锁并行计算框架 Disruptor学习
|
6月前
|
存储 前端开发 JavaScript
前端面试:如何实现并发请求数量控制?
前端面试:如何实现并发请求数量控制?
252 0
|
6月前
|
存储 前端开发
【源码共读】大并发量如何控制并发数
【源码共读】大并发量如何控制并发数
116 0
|
设计模式 算法 安全
并发 并行 同步 异步 你分清了吗
并发 并行 同步 异步 你分清了吗
|
数据处理 Go
让消费数据处理更快版本2(有并发控制)-一次性并发获取或者初始化任务最快有效方式
让消费数据处理更快版本2(有并发控制)-一次性并发获取或者初始化任务最快有效方式
|
SQL 消息中间件 JavaScript
效率加倍,高并发场景下的接口请求合并方案
效率加倍,高并发场景下的接口请求合并方案