前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式任务框架实现原理

分布式任务框架实现原理

作者头像
林老师带你学编程
发布2019-05-26 00:02:56
7330
发布2019-05-26 00:02:56
举报
文章被收录于专栏:强仔仔强仔仔

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1434228

首先说这个框架的目前的应用场景:

例如:美团想要获取七天酒店的信息,而且这个请求量特别大,但是却不要求是及时响应,可以异步完成。根据这个需求我们大致可以确定采用什么技术方案,可以采用队列来完成这个过程,但是如果仅仅是队列来实现的话,又有些问题。

比如我想实现以下这些功能:

1.如果这个请求我想写入日志

2.我想根据请求类型做不同的异常抛出

3.我想在这个过程中实现RPC调用请求一些特定的接口数据

4.我想实现同一套程序多个实例运行定时任务和队列任务等

基于这种应用场景,我们将上面几种功能整合到一个包,这个包在这里就叫做分布式任务框架

分布式任务框架具体功能如下:

1. 基于spring boot实现,依赖rabbitMQ,mysql,redis,influxdb。

2. 完全分布式,支持混合云,可指定主机或指定集群运行。

3. 支持定时任务,并支持服务端动态配置。

4. 支持基于队列分发任务,支持错误重试,并支持服务端动态配置。

5. 支持RPC风格调用,支持错误重试,并支持服务器端动态配置。

5. 支持多种规则的任务报警。

6. 支持同一套程序多个实例运行定时任务和队列任务。

分布式任务框架实现原理:

1.采用java监听者模式监听队列是否执行,如果执行则触发日志

2.采用Spring自带的Scheduled、TaskScheduler实现多线程定时任务

3.基于redis实现的分布式序列的生成

4.定义自己的异常类,来实现不同调度任务,返回不同的异常信息

5.基于SpringBoot集成MQ、Redis、Guava

6.采用AtomicBoolean、ConcurrentHashMap实现多线程安全

7.队列的请求和返回参数采用泛型实现,以适配各种各样的数据源

8.使用RateLimiter进行队列限流

有兴趣想要进一步研究的话,可以下载下面的源代码。

GitHub地址:https://github.com/1913045515/task/tree/master/task

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月27日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档