天天看點

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

演講嘉賓簡介:吳林(無才),阿裡雲智能資料庫PD,18年IT領域工作經驗,對資料庫、雲計算、金融領域有深度實踐,現負責阿裡雲資料庫專屬叢集MyBase産品。

以下内容根據演講視訊以及PPT整理而成。

觀看回放

https://developer.aliyun.com/live/245475 更多課程請進入“資料庫大講堂”了解 https://developer.aliyun.com/topic/database/lives

本次分享主要圍繞以下四個方面:

一、背景介紹

二、共享和專屬

三、雲時代需要什麼樣的資料庫服務

四、問答環節

世界隻需要5台計算機——笑話還是預言

在1943年的時候,IBM董事長托馬斯·沃森(老沃森)提出了一個預言:世界隻需要5台計算機.當時,世界上的很多人相信這個預言。而當今天回頭再看1943年老沃森提出的這個預言,很多人認為是一個笑話,因為現在計算機非常多。其實老沃森在做這個預言的時候肯定是有曆史背景的,因為在1943年的時候,全世界的資料量也非常小,而随着計算機技術發展到今天,整個世界的資料量變大非常大,需要以萬億億來進行計算,是以不能僅靠5台計算機進行計算。

我們所熟知的微型機

在大家的生活中可能會接觸到桌上型電腦和筆記本電腦,這類電腦屬于專屬計算機,一般情況下不會共享。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

大型機

除了上述微型機之外還有很多其他類型的計算機,比如下圖所示的大機計算機,其體積非常大,可能占據整個房間,而且線非常多并且雜亂。此外,當時使用的主要是真空管和半導體等,并且主要提供給科研人員使用,這是因為其輸入非常複雜,計算機輸入所使用的是大家可能沒有見過的卡帶,也就是在卡帶紙條上進行打孔作為輸入。此外,機房的環境非常惡劣,因為半導體和真空管等散熱非常嚴重,是以需要有水來散熱。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

上圖中右側是近代金融機構和大型企業所使用的大型機,有點類似在阿裡雲機房看到的機櫃,一個機櫃基本上是一個大型主機的規模。在老沃森所處的曆史背景下,一台大型機處理一個企業的資料規模基本上是滿足要求的。

與大型機相對的就是小型機,以前有一個話題是“去IOE”,所謂“IOE”分别代表IBM、Oracle和EMC。下圖是2013年5月17日,阿裡集團最後一台IBM小型機下線的場景。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

雲時代

為什麼小型機要下線,是因為我們要進入雲時代。機房中,機架上的每一排都是刀片伺服器,而需要散熱,有很多風扇,是以在機房中非常吵。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

其實,回到老沃森提出的全世界隻需要5台計算機這個預言,其實他說的是全世界需要有5大中心節點來處理大家的需求。在雲時代,像亞馬遜、微軟、阿裡雲以及谷歌等雲産商來全球使用者提供服務,從這一點來看,老沃森說的也沒有錯。進入雲時代以後,很顯然,大家都希望能夠共享,這是因為在公有雲中,大家都希望能夠随時随地享受到雲服務。

資料庫發展曆程

今天分享的主題是共享和專屬,在以前的大型機時代,肯定是專屬于某一個大型企業和科研機構的。而在雲時代,則走向了共享經濟,大家可以随時随地享受到便捷的雲服務。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

資料庫的曆史發展非常久遠,最早的大型機是在19世紀50年代出現的。标準意義上的大型機是從1964年推出的第一款S360機器開始,當然之前可能還有一些沒有量産的機型在50年代就已經出現了。當時出現的資料庫有層次資料庫和網狀資料庫,層次性資料庫和樹狀結構非常相似,像是具有根節點的倒立的樹,其中具有代表性的層次資料庫就是IBM IMS。在小型機時代,出現了關系型資料庫,包括MySQL、Oracle、IBM DB2等。進入PC時代之後,資料呈現出百花齊放的狀态,能夠看到NoSQL資料庫、開源資料庫以及進入雲時代,阿裡雲等廠商所提供的雲原生資料庫,能夠滿足更多客戶和場景的訴求。

傳統自建資料庫的挑戰

進入雲時代之後,雲廠商會提供雲資料庫服務,但是依然會有很多使用者會選擇自建資料庫。而對于企業而言,所需要維護的資料庫數量非常多,雖然現在很多企業選擇使用開源資料庫,不需要為商業許可證付費,但是對于自建資料庫而言,運維成百上千個資料庫的壓力非常大。而如果企業選擇使用開源資料庫,技術來源于自身的積累或者開源社群,缺少商業服務,而商業資料庫的服務則是收費的,比如Oracle和SQL Server,收費是非常昂貴的。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

在雲計算時代,我們所需要的資料庫服務需要關注資源、成本、安全、運維、核心的完整方案。

資源隔離

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

對于資料庫的資源隔離而言,主要有幾種類型,包括實體資源隔離、ECS資源隔離以及Docker資源隔離。本次分享中主要介紹實體資源隔離,大家在使用雲服務的時候需要選擇使用共享執行個體還是獨享執行個體。

實體機資源隔離

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

阿裡雲對于實體資源隔離分成了共享執行個體、專享執行個體、獨享執行個體以及獨占主機執行個體。對于共享執行個體而言,一個實體部署裡面可以建立多個資料庫,讓資料庫1服務于A客戶,資料庫2服務于B客戶,可以通過賬号進行隔離。對于專享執行個體而言,就是說這一個資料庫執行個體就是給某一個使用者或者說企業使用的,不會和其他的使用者在一起,一般是通過Cgroup進行資源隔離。所謂獨享執行個體就是希望對于資源在一定範圍内能夠保證資源獨占性。對于更加“土豪”的客戶而言,就可以使用獨占主機執行個體。

使用Cgroup進行資源隔離

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

在使用Cgroup進行資源隔離時,阿裡雲資料庫使用了memory、vlkio、cpu三個子系統分别對執行個體的記憶體、IO和CPU時間片資源進行了隔離。使用cpu.share配置各個執行個體的權重,根據Instance_leve表的limit_memory值進行記憶體隔離,并根據iops進行配置隔離。針對獨享執行個體,CPU子系統不能完全避免CPU資源的競争,開始引入CPUSET對獨享執行個體綁定CPU核心資源。獨享執行個體使用CPU+CPUSET兩個子系統隔離CPU資源。綁定的CPU核心為邏輯核心,不考慮被綁定的邏輯核心是否在相同的實體核中。

CPUSET

由于獨享執行個體已經使用CPUSET綁定CPU核心,而不同執行個體綁定不同的CPU核心,是以不會互相争搶CPU核心資源。阿裡雲資料庫團隊在使用CPUSET時設定了獨享執行個體CPU核心規格均為偶數,如2、4、8、16、32,并同時考慮邏輯核和實體核之間的關系,讓一個實體核虛拟出兩個邏輯核,避免不同獨享執行個體之間共享相同的實體核心而産生資源争搶。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

雲資料庫服務形态

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

對于資源隔離的要求而言,在專享服務裡面,雲服務就是共用資源池,是以使用者不知道自己的機器是哪一個,那麼很有可能不同使用者的資料庫執行個體出現在同一台實體機上,如果某一個客戶使用的資源比較多,那麼就有可能會産生資源争搶。而對于一些對于性能、安全要求比較高的客戶而言,則希望在公共雲裡面對于某些資源進行獨占。

雲資料庫專屬叢集

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

基于使用者的上述考量,阿裡雲就推出了雲資料庫專屬叢集MyBase,這個産品就是為了解決使用者的此類問題。阿裡雲雲資料庫專屬叢集産品已經上線一段時間了,現在已經能夠支援MySQL、PostgreSQL、SQL Server、Redis和MongoDB等五款資料庫引擎,在賦予使用者PaaS層資料庫服務同樣能力的同時,還具備資源超配、混合部署、資源排程、彈性政策、更開放的權限、自主運維能力等,能夠滿足大中型企業客戶對雲上資料庫自主管理的核心需求。

Redis專屬叢集助力CC視訊輕松應對業務洪峰

2020年,線上教育、視訊以及遊戲行業特别火熱。這些行業在業務洪峰的時候就會出現上述資源争搶的情況,進而影響到自身業務。對于下圖中例子的CC視訊而言,就會影響其直播效果。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

在疫情期間,直播業務場景内聊天、課件、進出日志等資訊實時資料量劇增,幾百萬線上并發使得傳統Redis執行個體在CPU和帶寬、流量方面無法承載。而CC視訊采用自建MQ等工具不僅使得管理和運維成本增加,也使得整個資料鍊路變成。與此同時,随着線上教育的發展壯大,核心業務資料庫壓力越來越大,需要性能優化和支撐。後來,CC視訊在阿裡雲上采用了多台專屬叢集主機承載直播視訊場景下消息分發業務。當業務高峰來臨之前,将核心Redis執行個體進行獨占主機部署,獨享整機的CPU和帶寬,這是因為對于資源具有獨立控制權;而在業務低峰時,通過智能排程整合,通過合理資源縮減和調整配置設定,降低整體成本。

最後是本次分享中三個互動問題:

問題1:層次型資料庫和關系型資料庫,哪個處理更快?

回答1:雖然層次型資料庫出現比關系型資料庫更早,但是從處理速度上來看,層次型資料庫更快。以前的大型機裡面有一種語言叫做COBAL,通路資料庫的時候不像關系型資料庫這樣使用者友好,需要程式員自己定義通路路徑,包括根節點、父節點、子節點等,是以從處理角度來講,層次型資料庫比關系型資料庫更快,因為指定了通路路徑。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

問題2:專屬叢集支援哪些資料庫引擎?

回答2:目前阿裡雲專屬叢集支援MySQL、PostgreSQL、SQL Server、Redis和MongoDB等五款資料庫引擎。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題

問題3:Cgroup中采用哪三個子系統進行資源隔離?

回答3:Cgroup中memory、vlkio、cpu三個子系統分别對執行個體的記憶體、IO和CPU時間片資源進行了隔離。

資料庫大講堂·第五期 雲資料庫服務:共享還是專屬,這是一個問題