异步任务的一些思考

前言
XXL-Job部署教程

项目中,必然少不了数据的导入导出,针对数据的导入导出简单复盘一下。

为了不占用资源消耗时间,影响用户体验,大量数据的导入导出一般都是异步执行

导入的时候,如果数据量很大,一次性全部读取到内存中,再去整体校验入库,会有OOM的风险

因此诞生了第二个方案,采用流分批读写,这样牺牲掉整体校验的需求,优化OOM问题。
在这里插入图片描述

但对于整个系统而言,整体内存资源有限,一个用户的导入导出可以满足,那很多的导入导出还是会造成OOM风险。

在这里插入图片描述

因此凡是涉及到异步的接口均要考虑任务调配的问题。

根据我们的经验,要进行合理的任务调配,有两套成熟的方案:

  1. 消息中间件,如kafka的生产消费者实现任务调度
  2. 分布式调用框架 quartz 、xxl-job也能实现任务调度

使用哪一套方案呢?

如果我们期待老王导出文件1和文件2,且将消息告诉小李和张姐,小李和张姐也导出导入文件1和文件2。这就是消息通信,这个场景下kafka是最合适的。如下这个场景
在这里插入图片描述

如果我们期待老王每天8点导出银行账单,小李每天9点导出金融界的新闻,张姐每天10点导入会议纪要,每个人在固定的时间干好自己的事情就行,这个场景下分布式调用框架最合适。

分布式框架是如何实现任务调度,能满足我们的需求吗?

原理这里就不展开解释了,确实在开发过程中,因为我们项目的数据量较大,每次导入导出都会及其消耗资源,为了方便管理,就需要模仿任务调度的设计,来管理我们的导入导出操作。

期待的最终效果是:机器资源有限,若大量的导入导出任务同时进行,封装的工具包会将这些任务管理起来,当资源空闲时,便执行任务,当资源紧缺时,先不执行异步任务。为了区分导入导出任务,自定义注解@AsyncTask表示这是一个异步导入导出任务。系统启动后,便会找到该注解,该注解对应的方法会被统一管理起来,类似一个Bean。然后根据通过计算系统资源的情况,在资源合适的情况下从线程池捞一条线程出来去执行这个方法,如果执行失败,该任务的优先级降低一级。达到一定阈值后,不会再自动执行该任务。此外对线程加一个乐观锁,避免多个线程操作同一个数据库造成事务不一致的问题。

若引入xxl-job,还需要维护此开源工具,成本较大,若基于kafka,若是使用我们这套工具,还必须部署kafka服务。因此,借鉴成熟开源项目,封装组件是有必要的。后续尝试一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/658265.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wireshark网络协议分析 - TCP协议

在我的博客阅读本文 文章目录 1. 基础2. 实战2.1. 用Go写一个简单的TCP服务器与客户端2.2. Wireshark抓包分析2.3. 限制数据包的大小——MSS与MTU2.4. 保证TCP的有序传输——Seq,Len与Ack2.5. TCP头标志位——URG,ACK,PSH,RST&…

cleanmymacX有必要买吗

CleanMyMac X是一款被广泛推荐的Mac电脑清理软件。以下是关于是否购买CleanMyMac X的几个关键点: 软件功能:CleanMyMac X具备多项功能,包括但不限于系统垃圾清理、缓存清理、恶意软件移除、隐私保护等。这些功能有助于保持Mac电脑的清洁和性能…

StarRocks -- 基础概念(数据模型及分区分桶)

1. 数据模型 StarRocks提供四种数据模型: Duplicate Key, Aggregate Key, Unique Key, Primary Key 1.1 Duplicate Key 适用场景: 分析原始数据,如原始日志和原始操作记录。可以使用多种方法查询数据,不受预聚合方法的限制。加…

第七篇:node中间件详解

🎬 江城开朗的豌豆:个人主页 🔥 个人专栏 :《 VUE 》 《 javaScript 》 📝 个人网站 :《 江城开朗的豌豆🫛 》 ⛺️ 生活的理想,就是为了理想的生活 ! ​ 目录 📘 引言: &#…

【Opcua】 客户端读写时,Opcua Server信息返回处追溯(1)

【Opcua】 客户端读写时,Opcua Server信息返回处追溯(1) 前言从客户端角度展开分析从服务端角度展开分析 前言 基于前文【Node-RED】node-red-contrib-opcua-server模块使用(2)介绍,我们已经了解到NodeRed…

【EI会议征稿通知】第四届信号图像处理与通信国际学术会议(ICSIPC 2024)

第四届信号图像处理与通信国际学术会议(ICSIPC 2024) 2024 4th International Conference on Signal Image Processing and Communication 第四届信号图像处理与通信国际学术会议(ICSIPC2024)将于2024年5月17日-19日在陕西西安再…

用友NC Cloud及YonBIP PMCloudDriveProjectStateServlet JNDI注入漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

【伪类·HTML】

伪类 在 CSS 中,伪类是添加到选择器的关键字,给指定元素设置一些特殊状态,以 : 开头。 链接有以下四个状态。这四种状态也称之为超链接的伪类。 对于超链接的伪类,推荐的使用顺序是: :link - :visited - :hover - :a…

代码随想录刷题笔记-Day15

1. 完全二叉树的的节点个数 222. 完全二叉树的节点个数https://leetcode.cn/problems/count-complete-tree-nodes/ 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没…

幻兽帕鲁服务器多少钱?幻兽帕鲁服务器价格,2月最新

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…

Spring Boot 中使用 Spring MVC基础

Spring MVC基础 一、控制器 controller1.定制控制器的方法(1)接收请求(2)接收请求参数(3)返回值 二、模型 Modle三、视图 View四、总结 Spring MVC 是非常著名的 Web 应用框架,现在的大多数 Web…

【C++】类和对象之构造函数、析构函数、拷贝构造函数(二)

前言:在上一篇我们对于C中类和对象有了一个初步的了解,今天我们将进一步的学习,今天我们目标是对构造函数、析构函数、拷贝构造函数进行一个初步学习在后面也会进一步的学习,一起加油呐! 💖 博主CSDN主页:卫…

幻兽帕鲁服务器多少钱——幻兽帕鲁服务器价格介绍

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…

Windows Service 2008虚拟机安装mysql service 5.7并实现远程连接

安装前必读 mysql好像在5.7.20版本之后的绿色压缩包版解压都没有my.ini或者my-default.ini配置文件了,需要自己添加配置。 也没有data数据库文件夹,data文件夹不能自己新建,需要命令initialize初始化建立。 my-default.ini文件存不存在不重要…

JavaWeb学习|Session

学习材料声明 所有知识点都来自互联网,进行总结和梳理,侵权必删。 引用来源:尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版 Session 1、Session 就一个接口(HttpSession)。 2、Session 就是会话。它是用来…

[ESP32]在Thonny IDE中,如何將MicroPython firmware燒錄到ESP32開發板中?

[ESP32 I MicroPython] Flash Firmware by Thonny(4.1.4) IDE 正常安裝流程,可參考上述影片。然而,本篇文章主要是紀錄安裝過程遇到的bug, 供未來查詢用,也一併供有需要的同好參考。 問題:安裝後,Thonny互動介面顯示一堆亂碼和co…

【lesson26】学习MySQL事务前的基础知识

文章目录 CURD不加控制,会有什么问题?CURD满足什么属性,能解决上述问题?什么是事务?为什么会出现事务事务的版本支持 CURD不加控制,会有什么问题? CURD满足什么属性,能解决上述问题&…

文本生成高清、连贯视频,谷歌推出时空扩散模型

谷歌研究人员推出了创新性文本生成视频模型——Lumiere。 与传统模型不同的是,Lumiere采用了一种时空扩散(Space-time)U-Net架构,可以在单次推理中生成整个视频的所有时间段,能明显增强生成视频的动作连贯性&#xff…

挑选合适的板式家具生产线:满足加工需求的要素解析

板式家具生产线是现代家具制造业中不可或缺的重要工具。然而,选择一条适合自身加工需求的板式家具生产线并不容易,需要考虑多方面因素。本文将深入探讨如何挑选合适的板式家具生产线,从而让读者更好地理解生产线的特点和选择要点。 一、需求分…

nginx+nginx-rtmp-module+ffmpeg进行局域网推流rtmp\m3u8

局域网推流的简单方式 这里以ubuntu为例 一、先下载安装包 nginx、nginx-rtmp-module,再一起安装 # 下载nginx # 这里我安装的是 nginx-1.10.3 版本 cd /usr/software wget http://nginx.org/download/nginx-1.25.0.tar.gz tar -zxvf nginx-1.25.0.tar.gz# 下载ng…