发明名称 一种基于REST的云存储服务的计费方法
摘要 本发明提供了一种云存储服务的计费方法。本方法针对于基于REST访问接口的云存储服务,结合用户的计费指标,从实时存储空间、数据传输流量和HTTP请求次数三方面进行计费。计费方法基于可量化的客观数据,对用户完全透明,提高了计费准确度。
申请公布号 CN103533043A 申请公布日期 2014.01.22
申请号 CN201310472390.8 申请日期 2013.10.11
申请人 北京邮电大学 发明人 姚文斌;卢亮;熊飞
分类号 H04L29/08(2006.01)I;H04L12/14(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 代理人
主权项 1.一种基于REST的云存储服务的计费方法,其特征在于:设云存储系统拥有x个用户(U<sub>1</sub>,U<sub>2</sub>,…,U<sub>x</sub>),所有用户所拥有的存储资源由URI唯一标识,分为数据文件和包含数据文件的容器两种类型,数据文件占用一定的存储空间,资源的类型可以从URI中判断;所有对云存储服务的访问均基于HTTP请求,用户通过GET方法获取资源或资源的信息,PUT方法创建或替换资源,POST方法修改资源的信息,DELETE方法删除资源;设云存储系统可以获取每次HTTP请求的所属用户、请求方法、请求资源、请求时刻(采用时间戳方式表示,即自格林尼治标准时间1970年1月1日00时00分00秒起至现在的总秒数)和数据传输流量(单位为字节);如果这次请求是对数据文件的创建或删除,用户在该请求时刻的存储空间(单位为字节)也会相应的增加或减少;基于以上信息,系统建立并维护以下三个记录:a)HTTP请求记录RH:四元组(u,m,t,b)的有限集,其中u∈(U<sub>1</sub>,U<sub>2</sub>,…,U<sub>x</sub>),为请求所属用户,m∈{GET,PUT,DELETE,POST},为请求方法,t为请求时刻,b为数据传输流量;b)数据文件记录RD:三元组(u,r,s)的有限集,其中u为数据文件所属用户,r为数据文件的URI标识,s为数据文件的占用空间,与数据文件在传输时产生流量的值相同;c)实时存储空间变化记录RS:三元组(u,c,t)的有限集,其中u为每次存储空间变化的所属用户,c为变化后的存储空间,t为发生变化的时刻(时间戳格式);云存储系统在进行计费时,从上述的记录中获取到信息,然后从实时存储空间、数据传输流量和HTTP请求次数三方面进行计费,分别涉及到的计费参数如下:a)实时存储空间费用根据用户存储占用的空间和时间产生,用户拥有C<sub>f</sub>字节大小的免费空间,超过免费空间的部分,每秒内每字节的存储价格为P<sub>s</sub>(元);b)数据传输流量费用根据用户上传下载数据时累计的流量产生,上传流量和下载流量的价格分别为每字节P<sub>u</sub>和P<sub>d</sub>(元);c)HTTP请求次数费用根据用户HTTP请求成功次数产生,由于一天内的HTTP请求在各个时段分布并不均匀,一般情况下夜间的请求数远远小于白天的,那么服务器的响应便存在繁忙时段和空闲时段,设定云存储系统服务器在一天之内有M个繁忙时段,([t<sub>α1</sub>,t<sub>β1</sub>],[t<sub>α2</sub>,T<sub>β2</sub>],…,[T<sub>αλ</sub>,T<sub>βλ</sub>]),其中T<sub>αi</sub>,T<sub>βi</sub>,(i∈,1,λ-)均以标准的24小时制表示,其他时段为空闲时段;在繁忙时段内的单次GET、POST、PUT和DELETE请求成功的价格分别P<sub>g1</sub>、P<sub>o1</sub>、P<sub>p1</sub>和P<sub>l1</sub>(元),而在空闲时段内时单次GET、POST、PUT和DELETE请求成功的价格分别为P<sub>g2</sub>、P<sub>o2</sub>、P<sub>p2</sub>和P<sub>l2</sub>(元);设定云存储系统中包含n个计费参数集合(P<sup>1</sup>,P<sup>2</sup>,…,P<sup>n</sup>),其中任意的P<sup>i</sup>(i∈[1,n])均由参数<img file="FDA0000393770270000021.GIF" wi="948" he="92" />构成;设定所有用户均已经指定了唯一的计费参数集合;其具体方法步骤为:(1)云存储系统设置n个计费参数集合(P<sup>1</sup>,P<sup>2</sup>,…,P<sup>n</sup>);(2)云存储系统建立HTTP请求记录RH、数据文件记录RD和实时存储空间变化记录RS;(3)云存储系统获取到每次访问云存储服务的HTTP请求的所属用户u、请求方法m、请求资源r、请求时刻t和数据传输流量b,将记录(u,m,t,b)新增到RH中;(4)若m=PUT且r为数据文件,则说明用户创建了数据文件,将记录(u,r,b)新增到RD中,执行(5);否则执行(7);(5)若RS中存在记录,则获取所属用户为u,且变化时刻最接近t的记录(u,c′,t′),将记录(u,c′+b,t)新增到RS中,执行(7);否则,执行(6);(6)将记录(u,b,t)新增到RS中;(7)若m=DELETE且r为数据文件,则说明用户删除了数据文件,获取RD中的所属用户为u且数据文件URI为r的记录(u,r,s),然后获取RS中所属用户为u且变化时刻最接近t的记录(u,c′′,t′′),将记录(u,c′′-s,t)新增到RS中,在RD中删掉记录(u,r,s);(8)输入需要计费的用户U,以及计费开始时刻T<sub>1</sub>和结束时刻T<sub>n</sub>;(9)获取用户U的计费参数集合P<sup>w</sup>;(10)获取RS中所属用户为U,且变化时刻在T<sub>1</sub>到T<sub>n</sub>之间的所有记录,记为{(U,C<sub>2</sub>,T<sub>2</sub>),(U,C<sub>3</sub>,T<sub>3</sub>),…,(U,C<sub>h</sub>,T<sub>h</sub>)},其中T<sub>1</sub>&lt;T<sub>2</sub>&lt;…&lt;T<sub>h</sub>&lt;T<sub>n</sub>;(11)若RS中存在所属用户为U,且变化时刻在T<sub>1</sub>之前的记录,获取其中变化时刻最接近T<sub>1</sub>的记录(U,C<sub>0</sub>,T<sub>0</sub>),令C<sub>1</sub>=C<sub>0</sub>,执行(13);否则,执行(12);(12)令C<sub>1</sub>=0;(13)求得实时存储空间费用F<sub>1</sub>:<maths num="0001"><![CDATA[<math><mrow><msub><mi>F</mi><mn>1</mn></msub><mo>=</mo><msubsup><mi>&Sigma;</mi><mrow><mi>i</mi><mo>=</mo><mn>1</mn></mrow><mrow><mi>n</mi><mo>-</mo><mn>1</mn></mrow></msubsup><msub><mi>W</mi><mi>i</mi></msub><mo>,</mo></mrow></math>]]></maths>其中<img file="FDA0000393770270000023.GIF" wi="1043" he="174" />(14)获取RH中所属用户为U,且请求时刻在T<sub>1</sub>到T<sub>n</sub>之间的所有记录,记为{(U,M<sub>1</sub>,T<sub>1</sub>,B<sub>1</sub>),(U,M<sub>2</sub>,T<sub>2</sub>,B<sub>2</sub>),…,(U,M<sub>y</sub>,T<sub>y</sub>,B<sub>y</sub>)},其中T<sub>1</sub>&lt;T<sub>2</sub>&lt;…&lt;T<sub>y</sub>&lt;T<sub>n</sub>;(15)初始化B<sub>u</sub>=0,B<sub>d</sub>=0,H<sub>g1</sub>=0,H<sub>o1</sub>=0,H<sub>p1</sub>=0,H<sub>l1</sub>=0,H<sub>g2</sub>=0,H<sub>o2</sub>=0,H<sub>p2</sub>=0,H<sub>l2</sub>=0,令i=0;(16)获取记录(U,M<sub>i</sub>,T<sub>i</sub>,B<sub>i</sub>),将以时间戳格式表示的T<sub>i</sub>转换为以格林尼治标准时间格式表示的T<sub>i</sub>′;(17)若M<sub>i</sub>=PUT,则B<sub>u</sub>=B<sub>u</sub>+B<sub>i</sub>,执行(18);否则,执行(20);(18)若T<sub>i</sub>′所表示的时刻在一天内服务器繁忙时段[T<sub>α1</sub>,T<sub>β1</sub>],[T<sub>α2</sub>,T<sub>β2</sub>],…,[T<sub>αλ</sub>,T<sub>βλ</sub>]之内,H<sub>p1</sub>=H<sub>p1</sub>+1,执行(28);否则,执行(19);(19)H<sub>p2</sub>=H<sub>p2</sub>+1,执行(28);(20)若M<sub>i</sub>=GET,则B<sub>d</sub>=B<sub>d</sub>+B<sub>i</sub>,执行(21);否则,执行(23);(21)若T<sub>i</sub>′所表示的时刻在一天内服务器繁忙时段[T<sub>α1</sub>,T<sub>β1</sub>],[T<sub>α2</sub>,T<sub>β2</sub>],…,[T<sub>αλ</sub>,T<sub>βλ</sub>]之内,H<sub>g1</sub>=H<sub>g1</sub>+1,执行(28);否则,执行(22);(22)H<sub>g2</sub>=H<sub>g2</sub>+1,执行(28);(23)若M<sub>i</sub>=POST,则执行(24);否则,执行(26);(24)若T<sub>i</sub>′所表示的时刻在一天内服务器繁忙时段[T<sub>α1</sub>,T<sub>β1</sub>],[T<sub>α2</sub>,T<sub>β2</sub>],…,[T<sub>αλ</sub>,T<sub>βλ</sub>]之内,H<sub>o1</sub>=H<sub>o1</sub>+1,执行(28);否则,执行(25);(25)H<sub>o2</sub>=H<sub>o2</sub>+1,执行(28);(26)此时M<sub>i</sub>=DELETE,若T<sub>i</sub>′所表示的时刻在一天内服务器繁忙时段[T<sub>α1</sub>,T<sub>β1</sub>],[T<sub>α2</sub>,T<sub>β2</sub>],…,[T<sub>αλ</sub>,T<sub>βλ</sub>]之内,则H<sub>l1</sub>=H<sub>l1</sub>+1,执行(28);否则,执行(27);(27)H<sub>l2</sub>=H<sub>l2</sub>+1;(28)i=i+1,若i≤n,执行(16);否则,执行(29);(29)求得数据传输流量费用<maths num="0002"><![CDATA[<math><mrow><msub><mi>F</mi><mn>2</mn></msub><mo>=</mo><msub><mi>B</mi><mi>u</mi></msub><mo>&times;</mo><mo>+</mo><msubsup><mi>P</mi><mi>u</mi><mi>w</mi></msubsup><mo>+</mo><msub><mi>B</mi><mi>d</mi></msub><mo>&times;</mo><msubsup><mi>P</mi><mi>d</mi><mi>w</mi></msubsup><mo>;</mo></mrow></math>]]></maths>(30)求得HTTP请求次数费用<maths num="0003"><![CDATA[<math><mrow><msub><mi>F</mi><mn>3</mn></msub><mo>=</mo><msub><mi>H</mi><mrow><mi>g</mi><mn>1</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>g</mi><mn>1</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>g</mi><mn>2</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>g</mi><mn>2</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>o</mi><mn>1</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>o</mi><mn>1</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>o</mi><mn>2</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>o</mi><mn>2</mn></mrow><mi>w</mi></msubsup></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><mo>+</mo><msub><mi>H</mi><mrow><mi>p</mi><mn>1</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>p</mi><mn>1</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>p</mi><mn>2</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>p</mi><mn>2</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>l</mi><mn>1</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>l</mi><mn>1</mn></mrow><mi>w</mi></msubsup><mo>+</mo><msub><mi>H</mi><mrow><mi>l</mi><mn>1</mn></mrow></msub><mo>&times;</mo><msubsup><mi>P</mi><mrow><mi>l</mi><mn>2</mn></mrow><mi>w</mi></msubsup><mo>;</mo></mrow></math>]]></maths>(31)总费用F=F<sub>1</sub>+F<sub>2</sub>+F<sub>2</sub>;(32)计算完成,返回用户U的计费结果。
地址 100876 北京市海淀区西土城路10号
您可能感兴趣的专利