`

SpringCloud分布式微服务云架构-Spring Cloud Task

阅读更多

Spring Cloud Task的目标是为Spring Boot应用程序提供创建短运行期微服务的功能。在Spring Cloud Task中,我们可以灵活地动态运行任何任务,按需分配资源并在任务完成后检索结果。Tasks是Spring Cloud Data Flow中的一个基础项目,了解springcloud架构可以加求求:三五三六二四七二五九,允许用户将几乎任何Spring Boot应用程序作为一个短期任务执行。

 

Spring Cloud Task的生命周期

 

现代的云平台都是围绕着长生命周期的服务而设计的,如web应用,一经启用,除非手动去重启应用,否则就会没有终点的持续运行。虽然大多数平台都有方法在不重启应用的情况下,将服务的生命周期推向终点,但每个服务的处理结果难以以可重用的方式来维护。Spring Cloud Task可以在平台环境中执行短生命周期的应用,并记录这些应用的结果,经由通过消息通知的机制来集成各个tasks。通过这特性就可以实现让短生命周期的应用像长生命周期的应用一样组成微服务架构。

 

Spring Task Cloud的方式对现代的云环境是非常有用的,但它也在部署应用方面带来新问题。如使用调度器(如corn)来执行Spring Boot应用时,如何在应用结束后监控到其执行结果?

 

Spring Cloud Task采用的方法是,将Spring Boot应用分为开始、结束、以及正在运行等状态。如批处理任务就是一个清晰的短生命周期应用,Spring Cloud Task会监控指定任务的所有生命周期事件。

生命周期是一个任务task实例运行的全过程,也是一个被配置为task的Spring Boot应用被执行的过程(通过 添加@EnableTask注解配置)。

 

在task刚刚开始运行时(CommandLineRunner或ApplicationRunner及其子类的实例被执行之前)TaskRespository会创建一条task纪录并将其标记为start状态。start事件由spring框架的SmartLifecycle#start触发。开始事件被触发说明了系统已经做好了执行CommandLineRunner或ApplicationRunner及其子类的实例的准备。

 

任务纪录只有在 ApplicationContext被成功启动后才会被纪录。如果ApplicationContext没有被成功启动,那么task的相关信息也不会被纪录。

 

当Spring Boot应用的所有*Runner#run接口都被调用后,或者在ApplicationContext发生了失败(由ApplicationFailedEvent来表现),任务仓库中此任务的执行结果都会被更新。

 

task 完成之后(*Runner#run方法被执行完)默认情况下会被关闭ApplicationContext。这个特性可以在配置文件中设置spring.cloud.task.closecontext_enable属性为false来更改。

 

其实现原理如下面代码所示:

 public class TaskLifecycleListener{
        ...

        /**
         * 在发生task相关的事件后,会自动调用这个方法
         * Utilizes {@link ApplicationEvent}s to determine the start, end, and failure of a
         * task.  Specifically:
         * <ul>
         *     <li>{@link ContextRefreshedEvent} - Start of a task</li>
         *     <li>{@link ApplicationReadyEvent} - Successful end of a task</li>
         *     <li>{@link ApplicationFailedEvent} - Failure of a task</li>
         * </ul>
         *
         * @param applicationEvent The application being listened for.
         */
        @Override
        public void onApplicationEvent(ApplicationEvent applicationEvent) {
            if(applicationEvent instanceof ApplicationFailedEvent) {
                this.applicationFailedEvent = (ApplicationFailedEvent) applicationEvent;
                doTaskEnd();
            }
            else if(applicationEvent instanceof ExitCodeEvent){
                this.exitCodeEvent = (ExitCodeEvent) applicationEvent;
            }
            else if(applicationEvent instanceof ApplicationReadyEvent) {
                doTaskEnd();
            }
        }
        }

 

分享到:
评论

相关推荐

    基于SpringCloud开发的在线教育系统

    业务层:Spring IOC、Aop事务控制、Spring Task任务调度、Feign、Ribbon、Spring AMQP、Spring Data Redis等。 控制层:Spring MVC、FastJSON、RestTemplate、Spring Security Oauth2+JWT等 微服务治理:Eureka、...

    Spring Cloud 2018最新_官网文档_中文参考手册_pdf

    Spring Cloud 是一个基于Java的微服务开发框架,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)操作的一系列...

    spring cloud尚硅谷 百度云.rar

    Spring Cloud是基于Spring Boot的微服务解决方案集合,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中快速...

    打造Spring Cloud构建微服务架构的最全资料

    本资料"SpringCloud-Learning-master"可能包含了以上各个模块的详细教程和示例代码,通过学习和实践,你可以深入了解Spring Cloud的每个组件,并掌握如何构建一个完整的微服务架构。记得实践是最好的老师,理论结合...

    转载 仿百度能力开放平台的spring cloud 微服务框架 ,-open-capacity-platform.zip

    8. **分布式事务**:Spring Cloud Data Flow和Spring Cloud Task可以帮助处理微服务环境中的复杂分布式事务问题。 9. **消息队列**:Spring Cloud Stream和RabbitMQ、Kafka等消息中间件结合,实现异步通信和解耦,...

    spring-cloud模块spring-boot微服务 mysql数据同步到elasticsearch 实时同步

    Spring Cloud提供了一套完整的解决方案,用于构建分布式系统中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等。而Spring Boot则简化了创建独立...

    SpringCloud-master.zip

    SpringCloud是基于SpringBoot构建的一套微服务解决方案,它为开发者提供了配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等多种功能。SpringCloud的...

    mastering-spring-cloud2018

    Spring Cloud是构建分布式系统的服务发现、配置管理、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态等工具的集合,它为开发者提供了在云环境中快速构建一些常见模式(如...

    17-Spring Cloud面试题.docx

    六、使用 Spring Boot 开发分布式微服务时,我们面临的问题 * 服务注册和发现 * 负载平衡 * 容错 * 服务调用 七、Hystrix 介绍 Hystrix 是一个容错库,提供了断路器、Fallback 等功能。它可以帮助我们实现容错和...

    SpringCloud微服务架构升级总结

    总结而言,SpringCloud微服务架构升级总结不仅仅是对微服务和Spring Cloud框架的介绍,更是对如何将这些现代架构理念和技术应用于实际开发中的一次深刻思考。通过对微服务、Spring Boot和Spring Cloud的深入理解和...

    spring-cloud

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    Java Spring Cloud面试题

    使用Spring Boot开发分布式微服务时,我们面临以下问题: * 服务注册和发现是什么意思?Spring Cloud如何实现? * Spring Cloud和dubbo区别? * 负载平衡的意义是什么? * 什么是Hystrix?它如何实现容错? * 什么...

    Spring Cloud面试题(2022最新版).docx

    Spring Cloud作为微服务架构的代表之一,提供了一系列用于构建微服务系统的工具和服务,极大地简化了分布式系统的开发工作。 #### 二、什么是Spring Cloud? Spring Cloud是一个基于Spring Boot实现的一站式微服务...

    SpringCloud笔记+思维导图

    SpringCloud是中国IT行业中备受关注的微服务框架,它基于Spring Boot进行快速构建分布式系统,提供了服务发现、配置中心、负载均衡、熔断器、路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、...

    spring cloud 基本开发框架.rar_VM7_cloud_guice-grapher_spring cloud_spr

    Spring Cloud 是一个基于 Spring Boot 实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)...

    SpringCloud面试专题及答案.pdf

    使用 **SpringCloud** 可以为分布式微服务架构带来诸多优势: 1. **解决分布式系统的复杂性**:SpringCloud 通过提供一系列的工具和服务来降低分布式系统中常见的网络问题、延迟开销、带宽限制、安全性等问题带来的...

    springcloud面试题java2023

    Spring Cloud是一个基于Spring Boot实现的云应用开发工具集,它为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)中...

    00SpringCloud整体架构概览1

    通过SpringCloud,你可以快速实现如服务发现、断路器、智能路由、微代理、控制总线等功能,极大地简化了分布式系统开发的复杂性。 在整体架构上,SpringCloud包含多个子项目,每个子项目都有自己的发布节奏。为了...

    SpringCloud面试题 .pdf

    Spring Cloud 是一个基于 Spring Boot 的微服务架构开发框架,提供了许多实用的功能和组件,例如服务注册、服务发现、熔断机制、负载均衡、配置中心等,帮助开发者快速构建微服务架构的应用程序。 1. 什么是 Spring...

Global site tag (gtag.js) - Google Analytics