netcore后台服务慎用BackgroundService

news/2025/3/6 23:50:42/文章来源:https://www.cnblogs.com/morec/p/18756805

在 .NET Core 开发中,BackgroundService 是一个非常方便的后台任务运行方式,但它并不适用于所有场景。

BackgroundService 一时爽,并发火葬场。

BackgroundService 适用于单实例的无状态后台任务,例如:

  • 定期清理任务(删除过期数据、日志清理)
  • 轻量级定时任务(如定期检查某些状态)
  • 简单的队列消费者(从内存队列读取并处理数据)

虽然 BackgroundService 很方便,但在 分布式环境 或 Kubernetes 部署 时,它可能带来一些问题:

  • 多实例竞争:如果应用部署在多个 Pod 中,每个 Pod 都会运行 BackgroundService,可能会导致任务重复执行。
  • 任务持久性问题:BackgroundService 进程崩溃时,未完成的任务可能会丢失。
  • 任务锁管理复杂:如果 BackgroundService 需要一个“全局锁”来防止多个实例同时执行任务,你需要额外实现分布式锁。

 

假如你的项目有多开服务,这个在K8S中是非常常见的,其他负载均衡组件包括nginx都有这功能,它会分发你的请求,可以不用考虑接口的并发问题,但是后台服务并不会。

所以传统的Quartz.NET可替代,当然不怕麻烦的话可以使用redis分布式锁,Kubernetes Lease等机制也可以实现。

 

总结

  • 如果是单实例任务,BackgroundService 可以使用。
  • 如果是 Kubernetes 多实例,建议使用 Quartz.NET 或分布式锁(如 Kubernetes Lease)。
  • 如果任务需要高并发,建议用消息队列(如 RabbitMQ, Kafka)。

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

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

相关文章

基于遗传优化SVM的电机参数预测matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)输入:电机结构参数x1 x2 x3 x4 x5(分别是铁心高度 铁心厚度 绕组匝数 窗口宽度 导线截面积 ) 目标值:体积v、加速度ax、加速度ay和加速度az 2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作…

JetBrains Rider 2024软件下载与安装教程

Rider2024是一款基于IntelliJ以及ReSharper所开发的跨平台式的开发环境,并且该软件也是C#、Unity等应用程序的专属开发环境。提供了极为强大的代码编辑器,对于C#和Unity等都能完美兼容,开发者用户们能够在其中轻松自在的编写出代码项目,同时还提供了智能代码补全的功能,提…

JetBrains CLion 2024软件下载与安装教程

1、安装包 扫描下方二维码关注「软知社」,后台回复【046】三位数字即可免费获取分享链接,无广告拒绝套路;2、安装教程(建议关闭杀毒软件)解压下载安装包文件,双击exe安装,弹窗安装对话框点击下一步选择软件的安装路径,选择C盘之外的空间,点击下一步创建桌面快捷方式勾选…

2025.3.6 起步

今天学习了web安全的基本知识 1,http,一种协议,常用TCP 2,http的请求方法(GET/POST/PUT...)和请求状态(200 OK/404 NOT FOUND...) 3,URL网址,及其组成 4,UA头,User-Agent,可以知道操作系统、CPU、浏览器类型 5,BurpSuite抓包返回包,可以得到很多信息6,Referer,告诉…

《AI时代生存手册:零基础掌握DeepSeek》 - PDF免费下载

通过本书,你将轻松上手DeepSeek,开启智能生活新篇章。通过本书,你将学会用Deepseek大幅提升工作效率,告别烦琐,拥抱高效。通过本书,你将学会如何让Deepseek成为您的职场超级助手。通过本书,你将学会如何利用DeepSeek激发自己的创作灵感,打造爆款内容,打造个人品牌。通…

Hive安装--本地模式

系统版本:CentOS Linux release 7.9.2009 (Core)ps: 最小化安装一、安装MySQL 1.下载 1.1安装包 官网:https://downloads.mysql.com/archives/community/1.2驱动 官网:https://downloads.mysql.com/archives/c-j/ps mysql-connector-java-5.1.47.jar,要这个2.安装 2.1安装依…

极空间docker部署Ghost博客

1. 下载镜像搜索不到、下载不了的请挂代理或者换源2. 编辑容器 2.1 将content路径映射到nas本地2.2 映射本地端口到ghost端口 注意:极空间限制了3000以内的端口不可外部访问,所以要设置成>3000的端口,我这里设置的33682.3 配置环境变量 这里我选择sqlite3作为数据库,url…

19C++循环结构-多重循环(2)-——教学

1、三重循环与程序的优化; 2、四重循环; 3、超市收费程序一、三重循环与程序的优化 教学视频 百钱买百鸡 3文钱可以买1只公鸡,2文钱可以买1只母鸡,1文可以买3只小鸡,要用100文买100只(每种鸡必买1只)。 试编一程序,求公鸡,母鸡、小鸡各有多少只? 如果100文钱全部买公…

fastadmin + workman 实现websocket前后端通信http

1.安装workman扩展composer require workerman/workerman2.安装think-workercomposer require topthink/think-worker=1.0.* 3.如果在windows下使用,还需下载composer require workerman/workerman-for-win4.根目录创建server.php 。用来启动服务#!/usr/bin/env php <?php…

日报202536

继续学习了Springboot,感觉有点麻烦:User package com.xxx.demo1.pojo;public class User {String id;String name;@Overridepublic String toString() {return "User{" +"id=" + id + \ +", name=" + name + \ +};}public String getId() {re…

[JLOI2014] 路径龟划

传送门 我的部落格 貌似没有比较通俗介绍红绿灯期望介绍方法的?我来一发不需要积分基础能看懂的严谨证明~ 题目大意 这道题 luogu 题面不太清晰,大意给定一张无向图,你需要开车从起点走到终点,有些点会设红绿灯,给出每个红绿灯的红灯时间和绿灯时间,你见到红绿灯时红绿灯…

Vue 脚手架发展

Vue 脚手架是一个基于 Vue.js 进行快速开发的完整系统,Vue 脚手架致力于将 Vue 生态中的工具基础标准化。Vue 的工具链 CLI(通常指 @vue/cli)与 create-vue 是 Vue 生态中两个不同的脚手架工具,它们在功能定位、技术栈和适用场景上有显著区别。 Vue CLI(@vue/cli) Vue CL…