• 基于事件驱动的任务分布式调度消费方案


    尚学堂给同学们带来全新的Java300集课程啦!java零基础小白自学Java必备优质教程_手把手图解学习Java,让学习成为一种享受_哔哩哔哩_bilibili

    1. 技术背景

    事件驱动架构(Event-Driven Architecture, EDA)是一种用于设计应用的软件架构和模型。EDA是一种以事件为媒介,实现组件或服务之间最大松耦合的方式。面向服务驱动框架(Service-Oriented Architecture)是以接口为媒介,实现调用接口者和接口实现者之间的解耦,但是这种解耦程度不是很高,如果接口发生变化,双方代码都需要变动,而事件驱动则是调用者和被调用者互相不知道对方,两者只和中间消息队列耦合。事件驱动架构可以最大程度减少耦合度,因此是现代化分布式应用架构的理想之选。

    事件是指系统硬件或软件的状态出现任何重大改变。事件与事件通知不同,后者是指系统发送的消息或通知,用于告知系统的其他部分有相应的事件发生。而事件的来源可以是内部或外部输入。事件可以来自用户(例如点击鼠标或按键)、外部源(例如传感器输出)或系统(例如加载程序)。

    事件驱动架构由事件发起者和事件使用者组成。事件的发起者会检测或感知事件,并以消息的形式来表示事件。它并不知道事件的使用者或事件引起的结果。 检测到事件后,系统会通过事件通道从事件发起者传输给事件使用者,而事件处理平台则会在该通道中以异步方式处理事件。事件发生时,需要通知事件使用者。他们可能会处理事件,也可能只是受事件的影响。 事件处理平台将对事件做出正确响应,并将活动下发给相应的事件使用者。通过这种下发活动,就可以看到事件的结果。

    事件驱动架构可以基于发布/订阅模型事件流模型:发布/订阅模型是基于事件流订阅的消息传递基础架构,对于该模型而言,在事件发生或公布之后,系统会将相应的消息发送给需要通知的订阅用户;事件流模型会把事件写入日志,事件使用者无需订阅事件流。相反,它们可以从流的任何部分读取并随时加入流。

    事件流有几种不同的类型:

    • 事件流处理使用诸如 Apache Kafka 等数据流平台来提取事件并处理或转换事件流。事件流处理可用于检测事件流中有用的模式。
    • 简单事件处理是指事件立即在事件使用者中触发操作。
    • 复杂事件处理则需要事件使用者处理一系列事件以检测模式。

    2. 现有技术方案

    XXL-JOB是一个开源的轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展、开箱即用。骑在分布式任务调度的主要功能点有:

    • 支持同一服务多个实例的任务存统一协调;
    • 定时任务的执行支持高可用、监控运维、故障告警;
    • 具有统一管理解密,并可以追踪各个服务节点定时任务的运行情况,以及任务属性信息,例如任务所属服务、所属责任人等。

  • 相关阅读:
    软件代码设计-小优化(四)
    2-1两数之和
    『牛客|每日一题』模板队列
    Vim 系列 (一) Using Marks in Vim
    常见项目管理中npm包操作总结
    Mybatis源码详解
    静态时序分析-OCV和time derate
    嵌入式杂记 -- MCU的大小端模式
    pip安装提示socket.timeout: The read operation timed out【已解决】
    这几个好用的去图片水印免费软件,你们知道吗?
  • 原文地址:https://blog.csdn.net/jmysql/article/details/126322695