【CDP-云设计模式】第8章,2.优先级队列模式(Priority Queue Pattern)
2016-09-20 08:59
302 查看
1.要解决的问题
有时会有大量工作需要处理,而且这些工作可能需要重新定义优先级。例如,未付款用户和订阅用户(如截止出版时间)可享受的不同级别的服务之间存在区别,举个例子,从web浏览器上传出版物的描述文件。当用户上传一个描述文件时,例如对于出版物所执行的转换过程在系统端表现为一批进程,转换结束后文件就被发布了。那么此时给这些批处理进程指定优先级对于各类用户来说就显得十分重要了。2.云模式的说明
队列将被用于控制批处理工作。只需要给队列提供优先级序号。工作请求由队列控制,队列中的工作请求由批处理服务器处理。在云计算中,高可靠队列是作为一项服务被提供的,您可以用它来轻松构建高可靠的批处理系统。您可以根据优先级别准备多个队列,并依据优先级将请求放入队列,从而在批处理进程中应用优先级。相应队列的批处理服务器的性能(数量)应该与其优先级别相匹配。3.实施
在AWS中,队列服务是SQS。可能需要多个SQS队列为不同的优先级别准备队列(包括优先队列和次级队列)。此外,您还可以使用消息延迟发送功能来推迟进程的执行。使用SQS为不同的优先级别准备队列。
将需要立即执行的进程(工作请求)放置在高优先级队列中。
准备一定数量的批处理服务器,根据优先级别处理队列中的工作请求。
队列拥有消息“延迟发送”的功能。您可以使用这项功能来推迟进程开始的时间。
4.配置
5.好处
您可以增加或者减少处理工作的服务器数量从而自动调整优先队列和次级队列的工作处理速度。您仅需增加或者减少处理工作的EC2实例的数量就可以满足性能和服务需求。
即使EC2实例出现故障,消息(工作)仍会留在队列服务中,使得进程能够在EC2实例恢复后立刻继续执行,从而打造一个面对故障也能稳如泰山的系统。
6.注意事项
根据处理进程的EC2实例数量和队列中消息数量的平衡情况,可能会出现次级队列中的进程先处理完的情况,所以您需要监控主队列和次级队列的处理速度。相关文章推荐
- 【CDP-云设计模式】第8章,1.队列链表模式(Queuing Chain Pattern)
- Cloud Design Pattern - Priority Queue Pattern(优先级队列模式)
- 【CDP-云设计模式】第8章,4.预定的自动伸缩模式(Scheduled Autoscaling Pattern)
- 【CDP-云设计模式】第8章,3.工作观察者模式(Job Observer Pattern)
- C++ 标准模板库STL 优先级队列 priority_queue 使用方法与应用介绍(一)
- priority_queue优先级队列
- STL系列之五 priority_queue 优先级队列
- STL优先级队列(priority_queue)和集合(set)的使用
- STL系列之五 priority_queue 优先级队列
- STL中的优先级队列(priority_queue)的自己实现priqueue
- STL学习笔记6 -- 栈stack 、队列queue 和优先级priority_queue 三者比较
- C++最大堆实现priority_queue优先级队列(算法导论)
- STL系列之五 priority_queue 优先级队列
- ural 1306. Sequence Median(优先级队列 priority_queue用法)
- SeqPriorityQueue——顺序优先级队列
- STL中优先级队列的使用priority_queue
- STL系列之五 priority_queue 优先级队列
- java中PriorityQueue优先级队列使用方法
- STL系列之五 priority_queue 优先级队列
- [转载] STL 之 priority_queue 优先级队列