XTimer定时微服务项目

news/2024/12/23 17:07:26/文章来源:https://www.cnblogs.com/Love-XiaoMeng/p/18450834

Xtimer定时微服务

项目背景

在学校社团中,有给社团成员发送活动通知的任务需求

有定期执行某项任务的需求,比如每周末举办一次线下活动,每个月举行一次团建

再比如,我有一个任务需要设置定时发布

定时微服务调研对比

方案 不足点
JavaTimer 单线程,任务堆积
RocketMq 可以作为本项目的优化
xxl-job 对于简单的定时任务需求过于复杂、可能需要额外开发和维护成本
Quartz 对于简单的定时任务需求过于复杂、资源消耗较大,特别是在大规模任务调度时。

本项目特点:功能聚焦,接入轻量,维护成本低

架构设计方法论

架构设计方法

架构设计

存储优化

  1. 全表扫描
  2. 基于redis中ZSET排序扫描,时间复杂度O(n)->O(log n)
  3. 横向分治,通过时间范围分片,减少查询涉及的任务数量

横向分治

  1. 纵向分治,通过定时任务分桶,提高并发度

纵向分治

定时任务调度流程

一句话总结:服务架构: 3 个模块 + 2 个协程池

流程中线程池作用关系

定时任务生成流程

一句话总结:定时任务创建与 webServer 和 migrator 2 个模块有关

迁移模块执行流程

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

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

相关文章

集合竞价如何看强弱?

买股票前先把集合竞价搞懂 一、集合竞价介绍 1. 什么是集合竞价 所谓集合竞价是指在股票每个交易日上午9:15—9:25,由投资者按照自己所能接受的心理价格自由地进行买卖申请。详情可参考下图:注:严谨的集合竞价时间为9:15-9:25,下文在聊到集合竞价时候我会把9:25-9:30时间…

ECS云服务器搭建Mysql,并提供公网连接

搭建mysql8.0参考:https://blog.csdn.net/ShockChen7/article/details/126965940 搭建完成之后,使用navicat发现连接不上,发现是因为安全组没有设置:安全组需要开放3306端口。 百度参考: 然后我改了下安全组就可以供外部连接了。

清单文件 AndroidManifest.xml

每个应用的根目录中都必须包含一个 AndroidManifest.xml,并且文件名必须一模一样。 这个文件中包含了APP的配置信息,系统需要根据里面的内容运行APP的代码,显示界面。

20222420 2024-2025-1 《网络与系统攻防技术》实验一实验报告

1.实验内容 1.1 学习内容总结 1.1.1 初步了解缓冲区溢出漏洞 首先学习了安全漏洞的相关概念,然后聚焦在其中的缓冲区溢出漏洞上。学习了缓冲区溢出漏洞相关的定义和发生的原因,并了解了缓冲区溢出发展历史上的经典攻击,如红色代码蠕虫、冲击波病毒、震荡波病毒、心脏出血、乌…

《机器学习》 学习记录 - 第一章

早就听说西瓜书的大名,也是和它见上面了 第1章 绪论 1.1 引言 机器学习是一门致力于研究如何通过计算的手段,利用经验来改善系统自身的性能的学科。 经验 通常以 数据 形式存在,因此机器学习所研究的主要内容,是关于在计算机上从数据中产生 模型 的算法,即 学习算法 。 面…

再谈如何优雅修改代码

书接上回(https://t.zsxq.com/xo0M0)再做下扩展上文谈到:“基于抽象接口编程确实是最佳实践:把易于变动的功能点通过定义抽象接口的形式暴露出来,不同的实现做到隔离和扩展,这体现了开闭原则”public class Foo {private Bar bar ;@Injectpublic Foo(Bar bar) {this.bar …

为什么需要依赖注入

为什么需要“依赖注入” Case 1 public class Foo { private Bar bar; public Foo() { bar = new Bar(); } public void doSomething(int key) { String result = bar.getResult(key); //swithch result } } 反模式 ,在构造函数中,初始化了合作类,导致: • 外部使用者不知道…

嵌入式驱动开发学习路线整理

1、学习路线 1.1 知乎:菜鸟分享嵌入式Linux驱动开发学习路线与心得(一)嵌入式方向:嵌入式Linux系统中,往上有应用程序功能开发和界面设计,往下有内核编程相关的驱动开发; 学习嵌入式Linux需要的基础知识:C语言基础知识; 基础知识:操作系统相关知识、Linux系统基本使用…

你可能没听过的手机输入法技巧

其实手机输入法真的很强其实手机输入法真的很强 ‍ 手机输入法的自带功能 比起电脑上的输入法,手机上的输入法有一些特有的功能。这里就以 iPhone 为例进行讲解,而安卓的话大部分情况也有类似的功能,这里就不一一进行评测了。 ‍ 快速移动光标 当内容很多,想要移动光标到内…

Webpack 初始化

1、初始化npm项目 npm init -y 得到 package.json 2、安装 webpack,webpack-cli相关 npm install webpack webpack-cli --dev node_modules .bin目录有webpack相关 即可通过npm 运行 webpack命令 如: npm webpack --version 可直接执行 webpack命令进行打包也可这么着: webpac…

iPhone开机一直白苹果闪烁,3个解决卡在开机画面的方法!

很多苹果用户在网上反馈,某天iPhone开机一直卡在开机Apple标志画面,而且白苹果一直闪烁。长按电源键也无法正常启动设备,黑屏后还是会出现苹果logo,一直闪烁。遇到iPhone开机一直白苹果闪烁的情况,多半是因为iOS系统故障。更专业的说,是系统组件调用执行失败而导致无法出…

因果推断与间接效应

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 因果推断(Causal Inference)是统计学和数据科学中的重要分支,用于理解事件之间的因果关系,而不仅仅是相关性。与相关性分析不同,因果推断追求揭示因变量…