聊一聊系统设计中的信息队列

在一个电商平台系统里,每当客户下订单时,你须要:

在高峰期立刻口头一切这些操作,或许会减慢客户的体验。

在这种状况下,咱们有少量的运行事情,而无法同时处置一切事情。

信息队列的基本架构

信息队列是一个耐久化组件,存储在内存中,支持异步通讯。它充任缓冲区,并散发异步恳求。

信息队列的基本架构很便捷。输入服务称为消费者或颁布者,创立并将信息颁布到信息队列。其余服务称为消费者或订阅者,衔接到队列并口头信息定义的操作。

在实践场景中,或许有许多运行程序写入队列,也有许多主机从队列读取。

回到例子

在咱们的案例中,处置每个义务时,可以将其减少到队列的末尾,而后从这个队列将它们发送到咱们的主机。

咱们的主机确认已接纳并处置一条信息,队列则将其移除,免得第二次发送。

经常使用信息队列的好处

关键优势是咱们解耦了这些事情,信息队列准许咱们异步处置这些事情。咱们可以将它们排队,直到可以处置。

经常使用信息队列时,当消费者无法处置信息时,消费者可以将信息颁布到队列中。

消费者即使在消费者无法用时也可以从队列中读取信息。

另一个很大的好处是它们是耐久化的。假设队列解体,数据不会失落,由于它不存储在内存中,而是存储在磁盘上。

假设上班程序在处置信息时解体,也没疑问!信息仍在队列中,将被另一个上班程序提取。

信息队列还提供了可裁减性。假设接纳到少量订单,队列会变得更长。你可以减少更多的上班程序来处置额外的负载,而不影响网站。

不同的队列类型

信息队列有多种类型。最经常出现的包含:

推送与拉取

一些队列期待上班程序恳求信息(拉取式队列),而另一些则被动将信息发送给上班程序(推送式队列)。

示例

以下是一些盛行的信息队列示例:

您可能还会对下面的文章感兴趣: