云存储:使用 Windows Azure Storage 增强应用程序的引擎
2010-03-26 00:00:00 来源:WEB开发网很多开发人员在适应这种分布式计算和分布式数据时面临着一些不熟悉的问题,例如对可能出现的故障进行编码、针对数据提交形成多次重试的概念甚至幂等性的理念。
只要您不将 Windows Azure Queue 视为进程内的常规 CLR 队列,其工作方式其实非常简单。首先,应用程序将向队列获取一些数量的消息(需要记住,一次不会超过 20 条)并提供一个超时。此超时控制对其他队列处理客户端隐藏这些消息的时间。当应用程序成功完成需要对队列消息进行的所有处理后,将删除该消息。
如果应用程序引发异常或处理队列消息失败,则在超时期限过后,其他客户端可以再次看到该消息。因此,当一个工作者角色处理失败后,其他工作者角色可以继续进行处理。向队列提交消息非常简单:应用程序直接或借助客户端库形成适当的 HTTP POST 消息,然后提交字符串或字节数组。队列专门用于进行内部应用程序消息传送和非永久存储,因此这些消息占用的空间需要相当小。
如上所述,您可能安排多个工作者角色都尝试处理同一消息。虽然隐藏当前正在处理的消息的不可见超时很有帮助,但不能确保万无一失。要完全避免冲突,您应该将您的引擎处理设计为幂等。换句话说,同一队列消息应该可以由一个或多个工作者角色处理多次,而不会使应用程序处于不一致的状态。
理想情况下,您希望工作者角色可以检测出是否已完成对给定消息的处理。在编写工作者角色来处理队列消息时,请牢记您的代码可能会尝试处理已处理过的消息,尽管这个可能性微乎其微。
图 1 中的代码段显示了如何使用随 Windows Azure SDK 一起提供的 StorageClient 程序集创建消息并将其提交给 Windows Azure Queue。StorageClient 库实际上只是 Windows Azure Storage HTTP 接口周围的包装。
更多精彩
赞助商链接