聊一聊系统设计中的信息队列
在一个电商平台系统里,每当客户下订单时,你须要:
在高峰期立刻口头一切这些操作,或许会减慢客户的体验。
在这种状况下,咱们有少量的运行事情,而无法同时处置一切事情。
信息队列的基本架构
信息队列是一个耐久化组件,存储在内存中,支持异步通讯。它充任缓冲区,并散发异步恳求。
信息队列的基本架构很便捷。输入服务称为消费者或颁布者,创立并将信息颁布到信息队列。其余服务称为消费者或订阅者,衔接到队列并口头信息定义的操作。
在实践场景中,或许有许多运行程序写入队列,也有许多主机从队列读取。
回到例子
在咱们的案例中,处置每个义务时,可以将其减少到队列的末尾,而后从这个队列将它们发送到咱们的主机。
咱们的主机确认已接纳并处置一条信息,队列则将其移除,免得第二次发送。
经常使用信息队列的好处
关键优势是咱们解耦了这些事情,信息队列准许咱们异步处置这些事情。咱们可以将它们排队,直到可以处置。
经常使用信息队列时,当消费者无法处置信息时,消费者可以将信息颁布到队列中。
消费者即使在消费者无法用时也可以从队列中读取信息。
另一个很大的好处是它们是耐久化的。假设队列解体,数据不会失落,由于它不存储在内存中,而是存储在磁盘上。
假设上班程序在处置信息时解体,也没疑问!信息仍在队列中,将被另一个上班程序提取。
信息队列还提供了可裁减性。假设接纳到少量订单,队列会变得更长。你可以减少更多的上班程序来处置额外的负载,而不影响网站。
不同的队列类型
信息队列有多种类型。最经常出现的包含:
推送与拉取
一些队列期待上班程序恳求信息(拉取式队列),而另一些则被动将信息发送给上班程序(推送式队列)。
示例
以下是一些盛行的信息队列示例: