联系方式

d2FuZ0B5dWVtYWlsLmNvbQ==

Windows Azure云的存储交易使用量过高的问题

by 猫小星经济人

发布时间:2014-08-05 10:34本文标签:Azure存储交易

微软的Azure云相当好用,尤其是基于REST的Blob存储功能简单清晰明了。但是很多人和我一样经常会遇到存储交易(Transactions )使用量过高的问题。微软和国内的世纪互联对存储交易的定义是这样的:

世纪互联:跟存储服务相关的任何操作,都是通过调用REST Api的方式发送请求,所以每一个针对Blob,Table或者Queue发起的REST API的调用都是一个存储交易。
微软:Each individual Blob, Table and Queue REST request to the storage service is considered as a potential transaction for billing. Applications can then control their transaction costs by controlling how often and how many requests they send to the storage service. We analyze each request received and then classify it as billable or not billable based upon our ability to process the request and the request’s outcome.

按照微软和世纪互联的说法,每次REST调用都被计算做一次存储交易,随后会判断这个存储交易是否算钱。(经过跟世纪互联的确认,微软方面对虚拟机自身对存储操作产生的存储交易不产生billing)

对于显示的通过REST使用Blob增加存储交易的次数,这是很好理解的,但是因为Azure云的虚拟机本身也是搭建在自己的存储设备上,并且也是一个Blob容器,因此虚拟机上的操作系统(如Windows)上的程序,即便通过最简单的C函数fwrite、fread,最终也会造成虚拟机和Blob之间通过REST进行交互。

实际上我自己检查了自己订阅的详细账单,显示的Blob读写造成的存储交易,远远小于虚拟机自身的用量。这是因为虚拟机的程序中大量的频繁的写操作造成的(实际上我程序的数据频率更高,自己已经在堆上缓存了)。因此对于存储交易猛增的情况,如果不是显示的REST操作本身造成的,就要从虚拟机上的程序着手,看看能否进一步缓存数据,减少fwrite/fread的次数,增加fwrite/fread的buffer长度。

 

分享到: