XTimer定时微服务项目

news/2024/10/7 23:42:36

Xtimer定时微服务

项目背景

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

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

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

定时微服务调研对比

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

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

架构设计方法论

架构设计方法

架构设计

存储优化

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

横向分治

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

纵向分治

定时任务调度流程

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

流程中线程池作用关系

定时任务生成流程

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

迁移模块执行流程

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

集合竞价如何看强弱?

买股票前先把集合竞价搞懂 一、集合竞价介绍 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的代码,显示界面。

gradle

Gradle 是一个项目自动化构建工具,帮我们做了依赖、打包、部署、发布、各种渠道的差异管理等工作。 项目级别的 build.gradle 指定了当前项目的总体编译规则。 模块级别的 build.gradle 对应于具体模块,每个模块都有自己的 build.gradle,它指定了当前模块的详细编译规则。想…

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

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

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

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

再谈如何优雅修改代码

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

为什么需要依赖注入

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