1.要解决的问题
在为批处理进程分配负载时,可以通过使用队列来控制工作请求,被列队的工作请求将被多个批服务器平行处理。然而,如果不采用云技术,批处理服务器的创建数量将由高峰请求量决定,那么在高峰期外的其他时段多余的批处理服务器将造成资源浪费,这不利于经济效益。除此之外,当出现无法预估的大量请求负载时,批处理系统也不能及时响应。
2.云模式的说明
在过去,服务器资源是不能动态增加或者减少的,批处理服务器的提供数量是由高峰需求和可用成本决定的。这导致了较低的成本效益和无力应对预料之外的负载等问题。 在AWS云中,系统可以通过监控负载自动增加或减少虚机的数量。您可以根据负载自动伸缩批处理服务器的数量,获得极佳的成本效益,并且可以应对预料之外的负载。具体说来,通过监控工作请求(队列消息),批处理服务器可按要求自动增加或减少。
3.实施
AWS中有一个名叫“Auto Scaling”的系统,可以自动增加或减少EC2实例的数量,它和资源监控工具,也就是”CloudWatch“协同工作,按照监测值来决定增加或者减少EC2实例的数量。在AWS中,SQS队列中的消息数量可被CloudWatch监控。您可以使用SQS管理工作请求,并且使用Auto Scaling和CloudWatch构建一个可以根据队列消息数量自动增加或减少批处理服务器数量的系统。
将工作请求纳入队列作为SQS消息。
使批处理服务器获取来自SQS的队列消息并进行处理。
设置Auto Scaling用来自动增加或减少批处理服务器的数量,使用SQS消息数量(云监控)作为触发器。
4.配置
5.好处
这可以协调作为工作服务器的EC2实例数量和任务数量,从而提高成本效益。
通过并行处理,可以减少处理工作的总体时间。
即使EC2实例出现故障,SQS消息(工作请求)仍会保留,使得进程能够在EC2实例恢复后立刻继续执行,打造一个面对故障也能稳如泰山的系统。
6.注意事项
EC2实例的租用是根据单位时间计费的,最少一小时起,所以如果一个EC2实例启动了之后立即关闭也会收一个小时的费用。因此,您需要注意实例的启动和关闭时间。
7.其他
队列链表模式和优先级队列模式可以结合使用。