LuckyDraw app使用CosmosDB的成本分析
我在以前的博客里說過我的LuckyDraw app在數(shù)據(jù)存儲(chǔ)方面使用的是 Azure Table Storage,當(dāng)時(shí)選擇這個(gè)的原因是成本考慮,因?yàn)樗鼘?shí)在是便宜,對(duì)于我這種個(gè)人開發(fā)維護(hù)的免費(fèi)的teams app來說,成本是一個(gè)很重要的考量點(diǎn)。
當(dāng)然,我也為這個(gè)運(yùn)營(yíng)成本的節(jié)省,付出了很多開發(fā)成本。因?yàn)獒槍?duì)Table Storage,在代碼開發(fā),業(yè)務(wù)邏輯處理,開源庫(kù)的支持度等方面,比傳統(tǒng)的數(shù)據(jù)庫(kù)復(fù)雜很多。最簡(jiǎn)單的一個(gè)例子是,當(dāng)需要保存一個(gè)大的json的時(shí)候,在SQL,我們可以簡(jiǎn)單的使用nvarchar(max),在table storage里,需要把列拆分成很多小的列進(jìn)行保存,讀取時(shí)也需要讀取多個(gè)列的數(shù)據(jù)然后進(jìn)行拼接處理。十分復(fù)雜。而且自動(dòng)化測(cè)試的時(shí)候,也沒有類似 EntityFramework Core的in-memory db。
當(dāng)時(shí)在設(shè)計(jì)時(shí),我也考慮過CosmosDB,這個(gè)是更加符合未來發(fā)展趨勢(shì)的數(shù)據(jù)庫(kù),它的優(yōu)點(diǎn)我就不再在這里重復(fù)了。我最后沒有采用它的唯一的原因就是當(dāng)時(shí)太貴了,最最起步的配置是400RU/s,也就是說我的測(cè)試環(huán)境和開發(fā)環(huán)境,即使平時(shí)不怎么使用,這400RU/s的錢還是要付的。
隨著cosmos db的普及和發(fā)現(xiàn),最近有一些新的收費(fèi)方式出來,我就在第一時(shí)間去研究了一下。
下圖是傳統(tǒng)的方式Provisioned throughput,灰色的上下浮動(dòng)變化的線是假設(shè)的使用量,為了保證這個(gè)使用量,一般就需要配置一個(gè)略高于使用量的RU值,這里就用 5000 RU/s 作為例子。所以系統(tǒng)收費(fèi)的時(shí)候就按照 5000 RU/s 來收費(fèi)。
但是我們通常的系統(tǒng)不會(huì)上上圖那樣負(fù)載一直保持在一個(gè)相對(duì)穩(wěn)定的高位,真實(shí)的情況更像下圖,使用量隨著時(shí)間有高有低,比如晚上或者周末可能低一些,這個(gè)時(shí)候?yàn)榱藵M足最高的使用峰值,如果使用傳統(tǒng)方式,我們還是需要配置成 5000 RU/s,但是大家可能已經(jīng)發(fā)現(xiàn)了,在使用低谷時(shí),5000 RU/s 是一種很大的浪費(fèi)。
針對(duì)上面這種情況,Cosmos DB推出了 Autoscale 收費(fèi)模式,我們可以設(shè)置一個(gè)最大值,比如 5000 RU/s,Cosmos DB平臺(tái)會(huì)自動(dòng)根據(jù)你的使用量的高低來變化 RU/s,當(dāng)你的使用量不大的時(shí)候,RU/s就降低,但是最低不會(huì)低于最高值的10%,這里是 500 RU/s,當(dāng)使用量增加時(shí),Cosmos DB自動(dòng)增加 RU/s,最高可以達(dá)到你設(shè)置的上限。這樣在收費(fèi)時(shí),就是根據(jù)實(shí)際分配的 RU 來計(jì)算??梢钥吹竭@種模式下,我們可以省下很多費(fèi)用。
但是如果對(duì)于一個(gè)使用率很低的系統(tǒng)來說,比如下圖,如果是一個(gè)測(cè)試環(huán)境,那可能用戶在測(cè)試時(shí)才用一會(huì)兒,大多數(shù)時(shí)間都是空置狀態(tài)。
如果還是使用Autoscale模式,可以看到如下圖。因?yàn)橛幸粋€(gè)最低的10%的保留量,和auto scale的時(shí)間問題,cosmos db收取的費(fèi)用還是有一部分浪費(fèi)了。?
好在Cosmos DB最近推出了 serverless 模式,雖然在我寫這篇文章的時(shí)候還是在 preview 狀態(tài)??梢钥吹饺缦聢D,serverless收費(fèi)是真正按照調(diào)用量來的,有一次算一次,用多少算多少。
看到這里,我相信大家和我有一樣的想法,還在等什么呢?是時(shí)候開始使用CosmosDB了!
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的LuckyDraw app使用CosmosDB的成本分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【学习OpenCV4】键盘鼠标操作总结
- 下一篇: 汉仪欧楷字体获2016中国设计红星奖银奖
