万泰娱乐资讯

万 泰 平 台 登 陆 (2023已更新(头条知乎) - 的个人空间 - OSCHINA

  万 泰 平 台 登 陆 【635901】【主管宗师】定时任务作为一种按照约定时间执行预期逻辑的通用模式,在企业级开发中承载着丰富的业务场景,诸如后台定时同步数据生成报表,定时清理磁盘日志文件,定时扫描超时订单进行补偿回调等。程序开发人员在定时任务领域有着诸多框架和方案可供选择,并借此快速实现业务功能实现产品上线。本文将就当前主流定时任务解决方案进行介绍和分析,期望可以在企业技术选型和项目架构重构时作为参考。

  Crontab 作为 Linux 内置的可执行命令,可以实现按照 cron 表达式生成的时间执行指定的系统指令或 shell 脚本。

  借助 Crontab 用户可以十分便利的快速实现简易的定时任务功能,但存在以下痛点:

  Spring 框架提供了开箱即用的定时调度功能,用户可以通过 xml 或者@Scheduled 注解的方式标识指定方法执行的周期。Spring Task 支持多种任务执行模式,包括带时区配置的 corn,固定延迟,固定速率等。

  借助 Spring Task 用户可以通过注解快速实现对指定方法的周期性执行,支持多种周期性策略。但与 crontab 相似,同样有如下的痛点:

  使用者需要在 yaml 中配置注册中心 zk 的地址以及任务的配置信息:

  实现对应的接口即可标识对应的任务,同时通过配置来实现任务执行前后回调:

  ElasticJob 底层时间调度基于 Quartz,Quartz 需要持久化业务 Bean 到底层数据表中,系统侵入性相当严重,同时通过 db 锁进行任务抢占,不支持并行调度,不具备可扩展性。而 ElasticJob 通过数据分片以及自定义分片参数的特性完成了水平扩展,可以将一个任务拆分为 N 个独立的任务项,由分布式的服务器并行执行各自分配到的分片项。比如一个数据库中有 1 亿条数据,需要将这些数据读取出来并进行计算,就可以将这 1 亿条数据划分成 10 个分片,每一个分片读取其中的 1 千万条数据,然后计算后写入数据库。如果有三台机器执行,A 机器分到分片(0,1,2,9),B 机器分到分片(3,4,5),C 机器分到分片(6,7,8),这也是相比于 Quartz 最显著的优势。

  实现上 ElasticJob 使用 zookeeper 作为注册中心进行分布式调度协调以及 leader 节点的选举,通过注册中心的临时节点的变化来感知服务器的增减,每当 leader 节点选举,服务器上下线,分片总数变更时均会触发后续的重新分片,由 leader 节点在下次定时任务触发时进行具体的分片划分,再由各节点从注册中心中获取分片信息,作为任务的运行参数进行执行。

  ElasticJob 作为分布式任务框架,解决了上述单节点任务无法保证任务执行过程中的高可用和高并发下执行的性能的问题,并支持失败转移(failover)和错过执行的作业重新执行(misfire)等高级机制,但在使用过程中仍存在以下痛点:

  XXLJob 作为大众点评员工开源的一款分布式任务框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。XXLJob 具备丰富的功能,如任务分片广播,超时控制,失败重试,阻塞策略等,并通过体验友好的白屏化控制台对任务进行管理和维护。

  XXLJob 分为中心式调度器和分布式执行器两部分组成,在使用时需要分别启动,在调度中心启动时需要配置所依赖的 db 配置。

  XXLJob 实现上将调度系统与任务解耦,其自研调度器负责管理调度信息,按照调度配置发出调度请求,支持可视化、简单且动态的管理调度信息,自动发现和路由,调度过期策略,重试策略,支持执行器 Failover。执行器负责接收调度请求并执行任务逻辑,并接收任务终止请求和日志请求,负责任务超时,阻塞策略等。调度器和执行器通过 restful api 进行通信,调度器本身无状态支持集群部署,提升调度系统容灾和可用性,通过 mysql 维护锁信息和持久化。执行器无状态支持集群部署,提升调度系统可用性,同时提升任务处理能力。

  XXLJob 在开源社区广泛流行,凭借其简单的操作和丰富的功能已在多家公司投入使用,可以较好的满足生产级别的需求,但下面的一些痛点需要改进:

  Serverless 作为云计算的最佳实践和未来演进趋势,其全托管免运维的使用体验和按量付费的成本优势使得其在云原生时代备受推崇。SAE (Serverless 应用引擎)Job 作为首款面向任务的 Serverless PaaS 平台,提供传统的用户体验。当前聚焦支持单机、广播、并行分片模型的任务,同时支持事件驱动、并发策略和超时重试等诸多特性,提供低成本、多规格、高弹性的资源实例来满足短时任务的执行。

  对于使用上述所有方案的存量应用,SAE (Serverless 应用引擎) Job 在兼容功能体验的同时支持零改造无感迁移,无论用户使用的是 Crontab,Spring Task,还是 ElasticJob, XXLJob,均可将代码包或者镜像直接部署到 SAE (Serverless 应用引擎) Job中,直接升级成为 Serverless 架构, 从而即刻拥有 Serverless 所带来的技术上的优势,节省资源成本和运维成本。

  对于运完即停的程序,无论是 Java,还是 Shell,Python,Go,Php 均可以直接部署到 SAE (Serverless 应用引擎) Job 中, 从而即刻拥有白屏化管控,全托管免运维的完备体验以及开箱即用的可观测功能。

  SAE (Serverless 应用引擎)Job 底层为多租 Kubernetes,使用神龙裸金属安全容器、VK 对接 ECI 两种方式提供集群计算资源。用户在 SAE(Serverless 应用引擎)中运行的任务会映射到 Kubernetes 中相应的资源。其中多租能力是借助系统隔离、数据隔离、服务隔离和网络隔离实现租户间的隔离。SAE (Serverless 应用引擎)Job 通过 Event Bridge 作为事件驱动源,在支持丰富调用方式的同时避免了 Kubernetes 内置定时器不保证准时触发以及精度时区上的问题。同时不断完善 Job 控制器的企业级特性,新增自定义分片,注入配置,差异化 GC,sidecar 主动退出,实时日志持久化,事件通知等机制。并借助 Java 字节码增强技术接管任务调度,实现通用的 Java 目标框架的零改造 Serverless 化。使用 KubeVela 软件交付平台作为任务发布和管理的载体,以任务为中心,以开源开放的标准,通过声明式的方式完成整个云原生交付。SAE (Serverless 应用引擎)Job 将持续优化 etcd 以及调度器在短时任务高并发创建场景下的效率以及实例启动的极致弹性能力,结合弹性资源池保证任务调度的低延迟和高可用。

  SAE (Serverless 应用引擎)Job 解决了上述定时任务解决方案的各种痛点,用户无需关注任务的调度和集群资源,无需部署的额外的运维依赖组件,也无需自建一整套监控告警系统,同时更重要的是无需云主机 7*24h 常驻,在低资源利用率的环境下持续消耗闲置资源。

  SAE (Serverless 应用引擎)Job 相较于传统定时任务解决方案提供了三大核心价值:

  本文对主流定时任务解决方案(Crontab, Spring Task, ElasticJob, XXLJob, Serverless Job)的目标定位、使用方式、实现原理进行了阐述,同时就企业密切关注的功能体验,性能成本方面的问题进行横评分析。最后期望大家选用 Serverless Job,感受其对传统任务所带来的新变革。

  本次沙龙特别邀请到阿里云、高德地图的 Serverless 一线技术专家,分享当前 Serverless 架构 CICD 的最新探索研究;带来 Serverless 在高德业务体系中的降本增效实践;全视角解析 Serverless 原子化能力是如何提升研发效能,增强开发幸福感。更有 Serverless Workshop 等你来玩,手把手带你体验 1 分钟极速部署的乐趣,感受 Severless 算力之美。免费报名即可参加活动,我们准备了超多周边礼品,等你一起来 Serverless! 2023年2月28日0时57分56秒

  DeepMind 下一代模型将结合 AlphaGo,以超越 ChatGPT

  国产一站式数据库访问工具 CloudDM v2.1.1发布,支持 Redis 消息队列

  Rust 原生 GUI 工具包 Slint 1.1 发布,新增免版税许可证

  Gitee 推荐 Markdown 简历转 PDF markdown2pdf

  SOFABoot 4.0.0 发布,蚂蚁开源的基于 Springboot 的服务框架

  Libreboot 20230625 发布,开源 BIOS/UEFI 替代品

  Solon 也是 SSE(Server Send Events)后端开发的优选

  Fedora Workstation 39 计划默认使用 Anaconda WebUI 进行安装

  PDM 2.8.0 发布首个 Alpha,现代 Python 包管理器

  Go 语言通用代码生成器:仙童发布 Beta7 版,完善支持 Oracle 数据库

  基于强化学习的低延迟视频传输,虎牙自研传输网络架构实践,面向流媒体的确定时延传输

  向量数据库发展迎里程碑时刻!Zilliz Cloud 全新升级:超高性价比,向量数据库唾手可得

  HarmonyOS线上Codelabs挑战赛第二期:ArkTS 本地库&三方库的用法

  【FAQ】HarmonyOS 从API8开始不再支持java作为开发语言,从开发角度看该如何选择

  KotlinConf 2023:用你的方式,加入全球 Kotlin 开发者的盛事!(文末抽奖)

  Zilliz @ QCon |万物皆可向量化—— Milvus 的现状与未来

  AntDB数据库携手金蝶Apusic应用服务器, 共促信创产业繁荣发展

  故障分析 报错 ERROR 5270 -HY000-- object not in RECYCLE BIN 引发的几个思考

  功能解析:如何在 Apinto 实现 HTTP 与gRPC 的协议转换 (下)

  向量数据库的行业标准逐渐清晰!Vector DB Bench 正式开源!

  技术分享 一文了解 MySQL Optimizer Trace 的神奇功效

  数据为基 成峰化海 GBASE南大通用openGauss Developer Day 2023精彩看点一览

  SQL Chat - 基于 ChatGPT 的对话式交互 SQL 客户端

  周家恩:GaussDB(for MySQL) 云原生数据库技术演进和挑战

  AI for Science系列(二):基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

  JimuReport积木报表 v1.5.8版本发布—免费的数据可视化报表

  社区活动 ChatGLM 实践大赛 · 学术应用篇 - 提供培训、算力、数据

  openGauss Developer Day 2023 邀您参加海量数据分论坛

  Milvus Lite 已交卷!轻量版 Milvus,主打就是一个轻便、无负担

  爱可生受邀参加2023 GOPS·深圳站,分享在DevOps各个环节实现SQL质量管理

  SeaTunnel 与 StarRocks 生态融合,让大数据处理回归“简单”

  玖章算术CEO叶正盛在数据技术嘉年华分享NineData AIGC的应用实践

  不知道有没有半品水跑出来BB,说龙芯不用搞这个不用搞这个,有现成的了。

  电信故障,电信领导打电话给公司技术解决问题,但是电话一直无法接通。