阅读时间: 2 分钟
如果你有一个服务有重量级的处理请求怎么办?或者它有一个非常尖锐的工作负载?可能有多种方法来处理这个问题。其中一种可能是使用消息队列。所以在这篇博客中,我将为你总结一下消息队列。今天我将介绍它的内容和原因,在下一篇博客中,你将了解到AWS提供的简单队列服务。让我们开始吧!
什么是消息队列?
在现代社会,我们已经转向了微服务和无服务器架构。在这里,服务被解耦为较小的独立块,使其易于开发、部署和维护。消息队列为这些分布式应用提供通信和协调。
消息队列暂时存储消息,直到它们被删除。它也有关于端点的信息,所以任何服务都可以连接到队列。一个消息可以是请求、错误信息或其他任何东西。当我们谈论队列时,有一个发送方和接收方的概念。发送者向队列发送消息,接收者从队列中异步检索消息。
一般来说,在使用消息队列时,一个服务将消息放在队列中,消息一直在那里,直到被删除。然后,处理这些消息的服务从队列中检索它们,在处理之后,从队列中删除消息。许多队列有一个保留期。保留期是指消息存储在队列中的时间,之后再删除。
消息队列的好处
消息可以安全地等待,直到接收应用程序准备好处理它们的时候。
考虑一下,你有一个微服务,它收到了一个需要较长时间处理的请求(一个重量级的进程)。实际上,你不能一直等待请求的处理。你不能让其他的请求等待并使你的应用程序变慢。即使请求是异步的,你也不能让你的客户等待或用这么多的消息加载服务,这最终会消耗大量的资源。这时,队列就来救场了。只要把你的请求作为消息发送到队列,然后根据你的服务的处理能力来获取它们。
另一种情况是,一个微服务向另一个微服务发送请求。但如果另一个微服务当时没有准备好处理这些请求怎么办。队列使服务能够方便地处理请求,使其容易和可用。只需从队列中获取消息并处理它。
可靠的消息传递
由于消息被存储在队列中,它们确保了在向应用程序发送消息时不会丢失。而且也只会被发送到收件人那里。这就使得消息传递可靠。
使服务更有弹性
由于消息在队列中是可用的,没有消息丢失,所以即使一个应用程序停滞不前或一个组件失败,其他组件仍然可以与队列互动并继续工作。
所以这就是对消息队列的总结,只是一些关键点,给你一个开始。在下一篇博客中,我将从AWS SQS即简单队列服务开始介绍。到时见!