基础概念解析 事件驱动 流 消息驱动 (基础概念解析怎么写)
本文目录导航:
- “消息驱动、事件驱动、流 ”基础概念解析
- JavaScript中,1)何为事件驱动模式(文字陈述和代码) 2)JS中事件类型分类(用代码举例说明)
- 传统过程化的应用程序和事件驱动的应用程序有什么区别?
“消息驱动、事件驱动、流 ”基础概念解析
消息驱动、事件驱动、流这些概念在消息领域中颇为流行,但它们之间的具体区别和应用场景往往让人一头雾水。
本文将对这三个概念进行深入剖析,旨在为读者提供清晰、直观的理解。
首先,消息驱动、事件驱动、流三种模式都涉及异步通信,其核心在于发送消息的服务无需等待消费者响应,从而实现服务之间的解耦。
它们的共同特点是通过中间件缓存消息,直到消费者准备接收。
在消息驱动模式下,消息通常由生产者向消费者发送,中间件如RocketMQ、Kafka或RabbitMQ等确保消息传递,其格式由消费者需求决定,支持一对多、多对一等传递方式。
这种模式下,消息驱动通讯用于场景如商品订单推送,上游生成组件专注于高效生成订单,而不必关注整个订单流程。
事件驱动模式是对消息驱动的优化,通过限制消息大小和格式,将消息封装为事件。
生产者发布事件表示系统变更,感兴趣且有权接入的服务订阅事件,触发特定逻辑或任务。
事件驱动支持一对多、多对一等传递方式,事件格式由生产者制定,但无需关心消费系统。
事件不具命令性质,仅告知发生事件,支持过滤、转换等操作,提供最小耦合性,允许生产服务和消费服务按需扩展。
流则是一个有序的无界事件序列,通常通过过滤、组合、拆分等操作进行处理,适用于时间敏感的应用场景。
流可以是无状态或有状态的,例如物流系统中的物品流转状态。
Kafka是典型的流式中间件,位置信息由消费者托管。
事件规范是明确生产者和消费者关系的关键,包含AsyncAPI和CloudEvents两部分。
AsyncAPI提供与事件API对应的OpenAPI和Swagger等规范,而CloudEvents侧重处理事件元数据。
CloudEvents的核心定义了事件传输的元数据及其在消息体中的表现形式,强调事件体的准确性,确保稳定的系统架构。
综上所述,消息驱动、事件驱动、流在异步通信中各有特点,适用于不同场景。
理解这些概念的基础,对于构建高效、灵活的消息系统至关重要。

JavaScript中,1)何为事件驱动模式(文字陈述和代码) 2)JS中事件类型分类(用代码举例说明)
12.2事件驱动与事件处理事件驱动是JavaScript响应用户操作的一种处理方式,而事件处理是JavaScript响应用户操作所调用的程序代码。
12.2.1事件驱动在多年以前,计算机程序通常是以批处理的模式运行。
所谓批处理,就是开发者事先写好一些代码,再将这些代码一次运行。
这种处理方式有点类似于通过HTML代码直接编写的网页。
浏览器只是将HTML代码逐行解析,并显示在浏览器窗口。
后来,在批处理模式中,开发者可以加入一些特定的代码,在程序批处理期间,可以停下来等待用户输入一些信息,并根据用户输入的信息来判断和执行某个程序分支,这就使程序有了初步的交互性。
随着鼠标、触摸屏等设备的出现,批处理时代就逐渐远去,取而代之的是事件驱动的时代。
当然,批处理也还能使用,只是使用的范围和频率比事件驱动要少得多。
以鼠标为例,在事件驱动中,用户可以使用鼠标单击等方式进行操作,程序则根据鼠标指针的位置以及单击的方式进行响应。
JavaScript使用的就是这种事件驱动的程序设计方式。
在JavaScript中,事件(Even)包括以下两个方面:● 用户在浏览器中产生的操作是事件,如单击鼠标、按下键盘上的键等。
● 文档本身产生的事件,如文档加载完毕、卸载文档等,都是事件。
12.2.2事件处理在JavaScript中,浏览器会使用事件来通知JavaScript程序响应用户的操作。
事件的类型有很多种,如鼠标事件、键盘事件、加载与卸载事件、得到焦点与失去焦点事件等。
在事件产生的时候,浏览器会调用一个JavaScript程序来响应这个事件,这就是JavaScript的事件处理方式。
要想让浏览器可以调用合适的JavaScript程序,就必须要做到以下 3点:(1)设置HTML文档中响应事件的元素。
在一个HTML文档中,并非所有元素都会去响应事件。
就鼠标单击事件而言,一般在HTML文档的正文不会响应该事件,但在按钮中一般都会响应该事件。
(2)设置元素响应事件的类型。
在确定了哪些元素响应事件之后,要设置该元素响应事件的类型。
例如,一个按钮通常会响应鼠标单击事件(click事件),而一个下拉列表框通常会响应选项变化事件(change事件)。
在同一个元素中,也可以响应多个事件。
例如,一个超链接,在鼠标移动到该超链接上时,可以响应鼠标移动到对象上事件(mouseover事件),当鼠标从超链接上移开时,又可以响应鼠标移开事件(mouseout事件)。
(3)设置响应事件的程序。
为了让浏览器可以响应事件,必须要设置响应事件的程序。
例如一个按钮被单击时,浏览器会响应这个click事件,此时浏览器就会在JavaScript中寻找一个合适的程序,并运行该程序。
这个程序可以是用户自定义的函数,也可以是一段JavaScript代码,还可以是JavaScript内置对象的方法等。
看看这个更详细
传统过程化的应用程序和事件驱动的应用程序有什么区别?
传统的MS-DOS程序主要采用顺序的、关联的、过程驱动的程序设计方法。
一个程序是一系列预先定义好的操作序列的组合,它具有一定的开头、中间过程和结束。
程序直接控制程序事件和过程的顺序。
这样的程序设计方法是面向程序而不是面向用户的,交互性差,用户界面不够友好,因为它强迫用户按照某种不可更改的模式进行工作。
2\事件驱动程序设计是一种全新的程序设计方法,它不是由事件的顺序来控制,而是由事件的发生来控制,而这种事件的发生是随机的、不确定的,并没有预定的顺序,这样就允许程序的的用户用各种合理的顺序来安排程序的流程。
对于需要用户交互的应用程序来说,事件驱动的程序设计有着过程驱动方法无法替代的优点。
它是一种面向用户的程序设计方法,它在程序设计过程中除了完成所需功能之外,更多的考虑了用户可能的各种输入,并针对性的设计相应的处理程序。
它是一种“被动”式程序设计方法,程序开始运行时,处于等待用户输入事件