【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)

来源:互联网 发布:海马助手mac版 编辑:程序博客网 时间:2024/05/22 14:41

1.要解决的问题

  如果对运行在多个系统上的相关进程(例如,在图像处理过程中,上传、存储、图像转码、创建缩略图等等顺序操作)执行顺序处理,往往会因为系统间联系过于紧密而造成性能瓶颈。当出现故障时,这种紧密的联系同样会使恢复操作变得复杂。所以,考虑到性能和维护的需要,应尽可能地使系统实现松耦合。

2.云模式的说明

  您可以在系统间使用队列来实现松散耦合,然后通过交换消息来转换工作。这可以实现系统的异步连接。这种方法可以增加接收和处理消息的虚拟服务器数量,必要时,通过并行处理来轻松解决瓶颈问题。即使其中某台虚拟服务器出现故障,未处理的消息仍会保存在队列中,这样当虚拟机恢复时即可重新开始处理。
  
  虽然可以不借助云技术来使用这种模式,但是AWS云已经提供了这种队列服务,考虑到云技术能弹性地提供虚拟服务器的特性,这种模式的使用较以往会变得容易得多。

3.实施

  使用Amazon简单队列服务(SQS),从EC2实例中的一个进程转换为另一个EC2实例中的另一个进程。SQS是AWS的队列服务。EC2中的处理过程如下:接收一项工作(消息) –> 处理工作 –> 传递工作(消息) –>重复。
依据工作的性质,您可以在多个EC2实例中运行这些进程。

4.配置

图1

5.好处

  • 您可以使用异步处理来快速返回响应。

  • 您可以通过简单进程(EC2实例)的松散耦合来构造系统。

  • 您仅需通过增加或减少工作进程中的EC2实例数量来满足性能和服务需求。

  • 即使EC2实例出现故障,消息(工作)仍会留在队列服务中,使得进程能够在EC2实例恢复后立刻继续执行,打造一个面对故障也能稳如泰山的系统。

6.注意事项

  在一些进程必须严格按照顺序执行的系统中,您需要注意,在SQS中,不能完全保证队列中的消息的执行顺序。

7.其他

  • 您可以将本模式与优先队列模式相结合使用。

  • 您可以使用Amazon的简单工作流(SWF)来相对轻松地支持复杂的工作流,而不是仅仅使用简单队列。

0 0