队列 Queue
队列是一种线性的数据结构, 其命名源自现实生活中的排队, 先排到的人先完事.
js的数组本身可以完全用来表示队列.
ts
const queue: number[] = []
// 入队
queue.push(1)
queue.push(2)
// 出队
queue.shift()
queue.shift()
使用场景
异步任务处理:将任务放入队列中,由后台进程或工作线程异步地处理。这可以提高系统的响应性,避免任务阻塞主线程或请求处理流程。
消息中间件:在分布式系统中,消息队列可以作为消息中间件,用于解耦不同的服务或组件之间的通信。消息队列可以提供可靠的消息传递和异步通信机制。
事件驱动架构:通过发布-订阅模式,将事件发布到队列中,然后订阅者可以接收并处理这些事件。这可以实现松耦合的组件间通信,支持事件驱动的架构。
缓存和削峰填谷:队列可以作为缓冲区,用于平衡系统中的负载和流量。当系统处理能力不足时,可以将请求或任务放入队列中,然后按照处理能力逐渐处理。
消息通知和推送:将消息放入队列中,然后推送给订阅者或用户。这可以用于实现实时通知、即时聊天等功能。
数据传输和同步:队列可以用于数据传输和同步,特别是在分布式系统中。数据可以通过队列中转,以确保数据的可靠性和一致性。
任务调度和处理:将任务放入队列中,然后按照优先级或其他规则进行调度和处理。这可以帮助管理和优化任务的执行顺序和资源利用。