请选择 进入手机版 | 继续访问电脑版

LuckyDraw app使用CosmosDB的成本分析

[复制链接]
菜鸡 发表于 2021-1-2 19:42:13 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
我在以前的博客里说过我的LuckyDraw app在数据存储方面使用的是 Azure Table Storage,其时选择这个的原因是本钱思量,因为它实在是自制,对于我这种个人开辟维护的免费的teams app来说,本钱是一个很重要的考量点。
固然,我也为这个运营本钱的节省,付出了许多开辟本钱。因为针对Table Storage,在代码开辟,业务逻辑处置处罚,开源库的支持度等方面,比传统的数据库复杂许多。最简单的一个例子是,当需要生存一个大的json的时候,在SQL,我们可以简单的使用nvarchar(max),在table storage里,需要把列拆分成许多小的列举行生存,读取时也需要读取多个列的数据然后举行拼接处置处罚。十分复杂。而且自动化测试的时候,也没有类似 EntityFramework Core的in-memory db。
其时在设计时,我也思量过CosmosDB,这个是更加符合未来发展趋势的数据库,它的优点我就不再在这里重复了。我最后没有接纳它的唯一的原因就是其时太贵了,最最起步的设置是400RU/s,也就是说我的测试情况和开辟情况,纵然寻常不怎么使用,这400RU/s的钱照旧要付的。
随着cosmos db的遍及和发现,最近有一些新的收费方式出来,我就在第一时间去研究了一下。
下图是传统的方式Provisioned throughput,灰色的上下浮动变革的线是假设的使用量,为了包管这个使用量,一般就需要设置一个略高于使用量的RU值,这里就用 5000 RU/s 作为例子。所以系统收费的时候就按照 5000 RU/s 来收费。

但是我们通常的系统不会上上图那样负载一直保持在一个相对稳定的高位,真实的情况更像下图,使用量随着时间有高有低,好比晚上大概周末大概低一些,这个时候为了满足最高的使用峰值,如果使用传统方式,我们照旧需要设置成 5000 RU/s,但是各人大概已经发现了,在使用低谷时,5000 RU/s 是一种很大的浪费。

针对上面这种情况,Cosmos DB推出了 Autoscale 收费模式,我们可以设置一个最大值,好比 5000 RU/s,Cosmos DB平台会自动根据你的使用量的高低来变革 RU/s,当你的使用量不大的时候,RU/s就低沉,但是最低不会低于最高值的10%,这里是 500 RU/s,当使用量增加时,Cosmos DB自动增加 RU/s,最高可以到达你设置的上限。这样在收费时,就是根据实际分配的 RU 来盘算。可以看到这种模式下,我们可以省下许多费用。

但是如果对于一个使用率很低的系统来说,好比下图,如果是一个测试情况,那大概用户在测试时才用一会儿,大多数时间都是空置状态。

如果照旧使用Autoscale模式,可以看到如下图。因为有一个最低的10%的生存量,和auto scale的时间问题,cosmos db收取的费用照旧有一部门浪费了。 


幸亏Cosmos DB最近推出了 serverless 模式,虽然在我写这篇文章的时候照旧在 preview 状态。可以看到如下图,serverless收费是真正按照调用量来的,有一次算一次,用多少算多少。

看到这里,我相信各人和我有一样的想法,还在等什么呢?是时候开始使用CosmosDB了!

来源:https://blog.csdn.net/xxjjxx/article/details/112061184
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )