2017雲栖大會POLARDB專場,阿裡雲資深技術專家林曉斌帶來最流行的高性能關系型資料庫是如何在雲端打造的演講。本文主要從資料庫雲服務目标開始說起,又介紹了經典模式痛點,接着提出了下一代資料庫需要解決的問題和方案,最後做了簡要總結。
以下是精彩内容整理:
資料庫雲服務的目标
做雲資料庫的目标,讓DBA創造更大的價值,不僅阿裡巴巴自己的DBA,還有客戶的DBA,以及沒有DBA的公司,擔負DBA責任的開發人員,讓這些人能夠更加省心,這是我們做雲資料庫的目标。
基于這個目标有五個名額,包括可用性、可靠性、安全性、可擴充性和可診斷性。
按重要性來說,要從安全性說起。安全包含了兩點,一是資料本身的安全,一是對于資料洩露的安全。在安全上我們做了很多工作,比如現在允許使用者通過配置,讓資料落地後是加密的,也就是說你不用擔心資料被拷走的問題。我們還有這樣的設定,現在阿裡雲的業務人員無法通路資料庫,讓使用者在前台授權才可以做到,通過這種方式提升它的安全性。
在可靠性上常做備份恢複到任意時間點的功能。使用者出現誤删資料庫,或者把表改錯了,我們會提供恢複到任意時間點的功能。
常見擴充性其實很好了解,就是通過圖表。當我們自己在内部維護,剛開始近千個執行個體,後來發現執行個體數和DBA的數目呈比例了,阿裡雲有10萬多個執行個體,但沒有1萬多個DBA,隻有四五個。中間有一段鎮痛,怎麼讓執行個體數增長的情況下,運維人員不要線性的增加,可診斷性也是展現雲服務是不是成熟的标志。
經典模式
公有雲上大量的執行個體都是雙節點結構。從2015年開始,我們就預設改為semisync,甚至很多公司,包括一些友商預設還是用異步模式。如果把它設成最安全的模式就會比較吃虧,使用者要找兩個雲廠商做測試。在阿裡雲,資料的準确性、可靠性是第一位的,是以在2015年後,我們把預設改為雙節點,保證資料不丢。
都有哪些痛點呢?比如分鐘級擴容,包括電商也會碰到這樣的問題,很多小的電商在雲上做,使用者不用告訴我們的。去年“雙11”的時候,我們運維團隊的要求是“雙11”那天要做到零幹預,前幾年已經做到零故障了。有一個公有雲的使用者,也是一個電商網站,他沒有告訴我們,等到他們說準備半年的挂了,他們買了兩個很小的執行個體,“雙11”之前也沒有壓測,那一天壓力一上來馬上打爆,臨時加機器已經來不及了,資料量又大,我們從2個節點擴到8個節點,花了20個小時的時間把擴容做起來,最終幫助他們把東西賣出去。分鐘級擴容,後面慢慢是一個剛需。
超大容量,遷移資料第一步就是備份。一旦發起備份,看上去備份在内庫備,意味着這時候是隐含的單點系統,主庫不敢挂。我們的需求是備份肯定要做,但是要讓備份最快的做,而且最好做的不影響其它。成本來說也是使用者的痛點。
下一代資料庫需要解決的問題
從研發的角度以及資料庫本身發展角度來說,還需要解決哪些問題?比如:
硬體紅利,其實資料庫這幾年來,尤其是MySQL在過去20幾年來的發展,它還是沒有真正把硬體紅利榨幹。好像一些新的資料庫,NewSQL資料庫,把小量企業變成大批量企業,讀也是這樣。很多硬體已經不再是RDS瓶頸了,這時候資料庫應該考慮反過來,盡量多的把随機寫變成資料寫,還有備份要吃帶寬,備份是整個拷走。整個設計理念就是按照機械硬碟在做,雖然慢慢在改進,但改進量還不夠多。
我們資料庫怎麼用好現在的硬體紅利?最近推出的POLARDB,資料系統是從網絡取過來的,資料從網絡取過來不從本地拷反而慢,怎麼做到性能翻倍呢?POLARDB底層存儲已經做到網絡上讀取的性能,目前已經達到和本地一樣快,而且還有空間,以後就會超過。它是一個網絡叢集,它的LBS和帶寬不再受限了,資訊越多越細節,對終端使用者的體驗就越好。有更多的資訊可以參考,使用者的體驗就更好,我們怎麼通過硬體紅利展現資料庫的能力更加擴大,再讓使用者利用資料展現到他們的産品,讓終端使用者提升使用者體驗,這是我們需要解決的問題。
HTAP,現在我們說的MySQL一般是做事務,甚至比較長的一段時間,MySQL做什麼最好是當天利用,越簡單應用,越不容易出BUG。越簡單,意味着需要别的能力時,就需要拿别的系統補充。把MySQL當KV用當然可以,我現在要一個複雜的交易,需要找另外一個系統過來做,這個系統專門做交易,接下來要做資料分析,又拉一個系統過來做,結果發現一份資料要從好多地方開始大量的資料同步,以前做資料同步還可以,現在都是分鐘級别了,這是一個沖突,越來越大。資料越來越大,一個要分析的快,一個是資料量變大,拷起來快。最好能把系統放在一起,哪裡寫就在哪裡讀,這樣就很好了。
智能服務,阿裡很多基礎運維DBA越來越少了,以前DBA要搬機器,現在已經沒有這個需求了,後來要經驗豐富,意味着不容易在雲上擴充。其實很難要求一個創業公司裡有一個經驗豐富的資料庫專家,我們怎麼讓使用者擁有資料庫專家,如果隻有一個客戶,支撐起來比較容易,當我們有10萬個客戶時,需要考慮怎麼讓一個智能系統幫助我們服務。
解決方案
<b>POLARDB</b>
怎麼解決痛點呢?POLARDB基本的想法是這樣的,資料和存儲分離,計算和存儲分離。圖上一個節點,主庫、讀庫、遠端通路資料,解決分鐘級擴容。以前我們怕别人拷資料,現在不用怕了,找一個機器把程序開起來就可以了。本地磁盤大小和備份時間的限制容量,以前一個資料有三份拷貝,備份都是分片備的,不會對系統造成很大的沖擊。
<b>HybridDB</b>
現在資料量的問題解決了,就是拷貝,如果隻有POLARDB一個單點,分析這個問題還是沒有解決,它還是偏向事務的系統。我們有HybirdDB,資料可以直接在這裡讀取,算完給使用者。列後引擎可以認為使用者獨立入口,當使用者來使用時隻看到這個點,語句可能不一樣。分析類語句有定制文法,相容hadoop的語句。
<b>CloudDBA</b>
由于磁盤老化,做DBA使用者和你說語句慢了,我們看看語句是不是錯了,表結構對不對,需要查很久才能懷疑到硬體壞了。另外就是網絡,網絡有很多層,我們會花好多時間在這個事情上。鍊路上做了全鍊路監控,從用戶端到服務端,每個節點都采集,先寫後讀,他認為這個事情是并行的,是兩個語句寫下去的,使用者根本查不出來的。現場ID不一樣,說明是從不同現場發下來的。以審計日志為基礎,我們現在做的POLARDB,已經開始做公測,後面使用者可以自己在入口上升系統。我們把問題暴露出來,并不是所有問題使用者都需要關注,有了完整系統之後,希望把系統的能力覆寫給客戶。
總結
我們想讓所有公司DBA卸掉繁重機械的工作,以前是搬機器裝執行個體,大家已經過了這個時代了。下一步要做什麼事情?擴容、縮容,大促容災等體系設計,這些不是展現DBA的價值的,真正展現DBA價值的能力是他們對公司業務的了解,DBA風頭最盛的是Oracle時代,因為Oracle很穩定,他們做業務的架構師。希望阿裡雲資料庫讓我們自己做到Oracle那樣的能力,讓DBA業務人員可以擺脫低端的工作,了解公司業務,成為業務架構師,創造更大的價值。