當前位置: 華文星空 > 知識

一直很熱鬧的數據庫領域,有哪些事情讓你感覺眼前一亮?

2021-12-03知識

我之前也說過,Serverless代表了最高層次的雲端運算抽象形式,以為Serverless最大程度讓開發者不用關註基礎設施的細節,從而可以最大程度關註於套用層的業務邏輯,所以,要說2021年最讓我眼前一亮的數據庫發展,當然也是在Serverless方面,所以,在2021年亞馬遜雲科技re:Invent全球大會上,Aurora Serverless v2的釋出是最讓我興奮的。

Aurora是亞馬遜雲科技提供的關系型數據庫引擎,我敢說,Aurora Serverless v2誕生之後,關系型數據庫將會煥發第N春!

雖然近幾年NoSQL也是風生水起,但是關系型數據庫依然是主流,這是因為關系型數據庫足夠強大,能夠支持不同靈活度的數據儲存設計,能夠支持幾乎所有的套用場景,就如同這次re:Invent全球大會重申的一樣: Aurora是亞馬遜雲科技歷史上增長最快的服務 (The fastest growing service in the history of Amazon),沒有之一。

傳統套用上雲需要用Aurora,還有新的套用也會按照關系型數據庫來構築儲存模型,Aurora成為增長最快的亞馬遜雲科技服務,可以說預料之中。我想,也正是因為Aurora增長這麽猛,所以2017年亞馬遜雲科技推出了Aurora Serverless,提供了Serverless版的Aurora。

今年Aurora Serverless出了v2,所以2017年那版自然就加了字尾v1,實話實說,雖然2017年的Aurora Serverless v1也很讓人興奮,但是那時候我們就感覺那版限制太多(這個後面細說),今年的Aurora Serverless v2雖然還只是preview版,但是真的是一個大飛躍,這才是——真·Serverless!

在Aurora Serverless出現之前,Aurora只支持偏好設定(Provision)方式分配資源,也就是需要透過手工方式擴充套件分配至數據庫例項的計算資源,包括記憶體和 CPU和儲存,對於需求量可預期而且穩定的套用,這當然挺好,但是如果需求量不可預期,或者起伏很大呢?這就顯得不夠了,想想看,你的套用平時只需要50G,但是尖峰時刻需要200G,為了應對尖峰你還是要偏好設定200G的資源,這就花了冤枉錢,當然,你可以在尖峰時刻的前後手工調整偏好設定資源,這且不說很麻煩,而且沒辦法應對突如其來的尖峰,如果尖峰時刻不可預期,你還是只能回退到多偏好設定資源的方法。

Auora Serverless v1的出現就是為了應對這種困境,提出真正的『需要多少分配多少』,由亞馬遜雲科技平台根據實際需求量自動動態分配資源。在Aurora Serverless中,用ACU(Aurora Compute Unit)代表分配資源的最小單位,一個ACU相當於2G記憶體加上配套的CPU和網絡資源,Aurora Serverless自動根據需求量自動增加和減少ACU數量,遇到尖峰時刻自動擴容,流量歸零的時候一分錢不花,這種服務當然很棒!

但是,Aurora Serverless v1畢竟還是v1,有一些方面還是做得不夠極致,有這些方面:

  • ACU的擴容(scale up),只能按照x2的節奏來走,好比本來一開始ACU的數量是4,當需求量增加的時候,ACU數量一下子跳到8,再撐不住時,一下子跳到16,而不是4、5、6、7... 15、16這樣的節奏擴容,坦白說,這樣造成了一定程度浪費。
  • ACU的擴容雖然自動,但是要花幾秒鐘的時間,對於頻繁擴容而且對響應時間敏感的套用,這就不大爽了。
  • ACU的縮容(scale down)雖然自動,但是要花15分鐘,也就是說,需求量已經沒那麽大了,還是要花15分鐘的錢來支持原有ACU數量。
  • Aurora Serverless v1並不支持所有Aurora功能,比如全球數據庫(Global Database)、內送流量備援容錯機制集群等等功能,簡單說,v1是一個殘缺版的Aurora。
  • 然而,上面收的這些缺點,隨著Aurora Serverless v2的推出被一掃而光了!

    我先要說清楚,我並不是批評v1,我只是指出v1的不足,我相信一個產品的前進演化都是逐步完善的過程,沒有v1的基礎,Aurora Serverless v2也不會這麽閃亮,我們來看看在re:Invent 2021全球大會上宣布的Aurora Serverless v2的亮點吧:

  • ACU的擴容,以0.5個ACU的節奏遞增,這比4、5、6、7...15、16的預期還要好,是按照4、4.5、5、5.5、6、6.5...15、15.5、16這樣的節奏擴容,這毫無疑問更加節省資源。
  • 實作了毫秒級別的ACU擴容,這相對於v1秒級別擴容是一個巨大飛躍,沒有哪個套用會被毫秒級別擴容耽誤實際效能,這就是真的神速。
  • ACU縮容也是以0.5 ACU為節奏,而且只需要1分鐘就完成
  • Aurora Serverless v2支持所有Aurora功能!!!
  • 現在你理解了,為什麽我說Aurora Serverless v2才是『真·Serverless』了吧。

    當然,我們也可以說Aurora Serverless v2這些新功能『本來就是Serverless該具備的』,只是晚來了幾年而已,最最最讓我感到興奮的突破,是—— Serverless和偏好設定(Provision)兩種模式可以存在以同一個Aurora集群中

    你知道這意味著什麽嗎?

    意味著,我可以在一個Aurora集群中偏好設定資源用於寫操作,然後用Serverless來支持讀操作,對於新聞媒體服務,就是寫操作(編輯創作)穩定而且可預期,而讀操作(讀者訂閱閱讀)可能隨新聞熱點劇烈波動,這種Aurora Serverless和Provision的組合就十分合適。

    同樣,對於IoT這種寫操作可能劇烈波動,而讀操作相對穩定的系統,就可以反過來在一個集群中讓寫操作走Serverless,而讀操作走Provision。

    Serverless和Provision雙劍合璧,得心應手!

    在re:Invent的Deep dive on Amazon Aurora演講中,還提到一個有趣的事情,在Aurora Serverless v2中,為了控制Buffer Pool的大小,結合了LFU(Least Frequently Used)和LRU(Least Recently Used)演算法,才實作了縮容的效率。

    演講者Richard Waymire也說,這樣一項技術,源自於Aurora Serverless,但是也會套用到Aurora Provision中去。

    這是一個很好的Serverless反哺其他雲端運算服務的例子,我對於Serverless一直很有信心,因為這是大勢所趨。

    在亞馬遜雲科技re:Invent全球大會上,還有很多這樣讓人興奮和有趣的知識,大家要是感興趣也不妨去了解下。