資安

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

演講嘉賓簡介:吳林(無才),阿里雲智能數據庫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臺計算機進行計算。

我們所熟知的微型機
在大家的生活中可能會接觸到臺式機和筆記本電腦,這類電腦屬於專屬計算機,一般情況下不會共享。

image.png
大型機
除了上述微型機之外還有很多其他類型的計算機,比如下圖所示的大機計算機,其體積非常大,可能佔據整個房間,而且線非常多並且雜亂。此外,當時使用的主要是真空管和晶體管等,並且主要提供給科研人員使用,這是因為其輸入非常複雜,計算機輸入所使用的是大家可能沒有見過的卡帶,也就是在卡帶紙條上進行打孔作為輸入。此外,機房的環境非常惡劣,因為晶體管和真空管等散熱非常嚴重,因此需要有水來散熱。
image.png
上圖中右側是近代金融機構和大型企業所使用的大型機,有點類似在阿里雲機房看到的機櫃,一個機櫃基本上是一個大型主機的規模。在老沃森所處的歷史背景下,一臺大型機處理一個企業的數據規模基本上是滿足要求的。

與大型機相對的就是小型機,以前有一個話題是“去IOE”,所謂“IOE”分別代表IBM、Oracle和EMC。下圖是2013年5月17日,阿里集團最後一臺IBM小型機下線的場景。
image.png
雲時代
為什麼小型機要下線,是因為我們要進入雲時代。機房中,機架上的每一排都是刀片服務器,而需要散熱,有很多風扇,因此在機房中非常吵。
image.png
其實,回到老沃森提出的全世界只需要5臺計算機這個預言,其實他說的是全世界需要有5大中心節點來處理大家的需求。在雲時代,像亞馬遜、微軟、阿里雲以及谷歌等雲產商來全球用戶提供服務,從這一點來看,老沃森說的也沒有錯。進入雲時代以後,很顯然,大家都希望能夠共享,這是因為在公有云中,大家都希望能夠隨時隨地享受到雲服務。

二、共享和專屬

數據庫發展歷程
今天分享的主題是共享和專屬,在以前的大型機時代,肯定是專屬於某一個大型企業和科研機構的。而在雲時代,則走向了共享經濟,大家可以隨時隨地享受到便捷的雲服務。
image.png
數據庫的歷史發展非常久遠,最早的大型機是在19世紀50年代出現的。標準意義上的大型機是從1964年推出的第一款S360機器開始,當然之前可能還有一些沒有量產的機型在50年代就已經出現了。當時出現的數據庫有層次數據庫和網狀數據庫,層次性數據庫和樹狀結構非常相似,像是具有根節點的倒立的樹,其中具有代表性的層次數據庫就是IBM IMS。在小型機時代,出現了關係型數據庫,包括MySQL、Oracle、IBM DB2等。進入PC時代之後,數據呈現出百花齊放的狀態,能夠看到NoSQL數據庫、開源數據庫以及進入雲時代,阿里雲等廠商所提供的雲原生數據庫,能夠滿足更多客戶和場景的訴求。

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

三、雲時代需要什麼樣的數據庫服務

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

資源隔離
image.png
對於數據庫的資源隔離而言,主要有幾種類型,包括物理資源隔離、ECS資源隔離以及Docker資源隔離。本次分享中主要介紹物理資源隔離,大家在使用雲服務的時候需要選擇使用共享實例還是獨享實例。

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

使用Cgroup進行資源隔離
image.png
在使用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,並同時考慮邏輯核和物理核之間的關係,讓一個物理核虛擬出兩個邏輯核,避免不同獨享實例之間共享相同的物理核心而產生資源爭搶。
image.png
雲數據庫服務形態
image.png
對於資源隔離的要求而言,在專享服務裡面,雲服務就是共用資源池,因此用戶不知道自己的機器是哪一個,那麼很有可能不同用戶的數據庫實例出現在同一臺物理機上,如果某一個客戶使用的資源比較多,那麼就有可能會產生資源爭搶。而對於一些對於性能、安全要求比較高的客戶而言,則希望在公共雲裡面對於某些資源進行獨佔。

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

Redis專屬集群助力CC視頻輕鬆應對業務洪峰
2020年,在線教育、視頻以及遊戲行業特別火熱。這些行業在業務洪峰的時候就會出現上述資源爭搶的情況,進而影響到自身業務。對於下圖中例子的CC視頻而言,就會影響其直播效果。
image.png
在疫情期間,直播業務場景內聊天、課件、進出日誌等信息實時數據量劇增,幾百萬在線併發使得傳統Redis實例在CPU和帶寬、流量方面無法承載。而CC視頻採用自建MQ等工具不僅使得管理和運維成本增加,也使得整個數據鏈路變成。與此同時,隨著在線教育的發展壯大,核心業務數據庫壓力越來越大,需要性能優化和支撐。後來,CC視頻在阿里雲上採用了多臺專屬集群主機承載直播視頻場景下消息分發業務。當業務高峰來臨之前,將核心Redis實例進行獨佔主機部署,獨享整機的CPU和帶寬,這是因為對於資源具有獨立控制權;而在業務低峰時,通過智能調度整合,通過合理資源縮減和調整分配,降低整體成本。

四、問答環節

最後是本次分享中三個互動問題:
問題1:層次型數據庫和關係型數據庫,哪個處理更快?
回答1:雖然層次型數據庫出現比關係型數據庫更早,但是從處理速度上來看,層次型數據庫更快。以前的大型機裡面有一種語言叫做COBAL,訪問數據庫的時候不像關係型數據庫這樣用戶友好,需要程序員自己定義訪問路徑,包括根節點、父節點、子節點等,所以從處理角度來講,層次型數據庫比關係型數據庫更快,因為指定了訪問路徑。
image.png
問題2:專屬集群支持哪些數據庫引擎?
回答2:當前阿里雲專屬集群支持MySQL、PostgreSQL、SQL Server、Redis和MongoDB等五款數據庫引擎。

image.png
問題3:Cgroup中採用哪三個子系統進行資源隔離?
回答3:Cgroup中memory、vlkio、cpu三個子系統分別對實例的內存、IO和CPU時間片資源進行了隔離。
image.png

Leave a Reply

Your email address will not be published. Required fields are marked *