
導(dǎo)讀
在當(dāng)今數(shù)智化飛速發(fā)展的時(shí)代,現(xiàn)代應(yīng)用架構(gòu)正經(jīng)歷著一場(chǎng)深刻的變革。云原生、微服務(wù)、大數(shù)據(jù)等新興技術(shù)與架構(gòu)模式不斷涌現(xiàn),推動(dòng)著應(yīng)用向更高效、更靈活、更智能的方向演進(jìn)。然而,數(shù)據(jù)量的爆發(fā)式增長(zhǎng)、并發(fā)訪問(wèn)的急劇增加、多租戶與混合負(fù)載的需求,以及企業(yè)對(duì)智能化運(yùn)維和數(shù)據(jù)安全性的更高期望,都使得數(shù)據(jù)庫(kù)在性能、擴(kuò)展性、可靠性等方面面臨嚴(yán)峻考驗(yàn)。TiDB 作為分布式數(shù)據(jù)庫(kù),在高擴(kuò)展性、高可用性、性能卓越等方面為現(xiàn)代應(yīng)用架構(gòu)提供了全新的解決方案。
本文將深入探討現(xiàn)代應(yīng)用架構(gòu)的發(fā)展趨勢(shì),分析數(shù)據(jù)庫(kù)的挑戰(zhàn)與需求,并為架構(gòu)師們提供數(shù)據(jù)庫(kù)的選型建議,助力企業(yè)在數(shù)字化浪潮中穩(wěn)健前行。
本文作者:藍(lán)功儒 & 李仲舒 & 童童

隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、AI 等技術(shù)的大爆發(fā)背景下,現(xiàn)代企業(yè)主要面臨六大挑戰(zhàn):AI 驅(qū)動(dòng)下數(shù)據(jù)量的爆炸性增長(zhǎng);對(duì)高并發(fā)和高吞吐需求的應(yīng)對(duì);高可用以及業(yè)務(wù)連續(xù)性保障;多租戶和資源隔離能力實(shí)現(xiàn)降本增效;IT 架構(gòu)向云方向的演進(jìn)以及與云基礎(chǔ)設(shè)施的無(wú)縫集成;現(xiàn)代應(yīng)用架構(gòu)下諸多技術(shù)挑戰(zhàn)等。
現(xiàn)代應(yīng)用架構(gòu)在業(yè)務(wù)需求與技術(shù)進(jìn)步雙輪驅(qū)動(dòng)下,依托于開源技術(shù),經(jīng)歷了高速的發(fā)展,成熟度也在不斷提升。回顧往昔,Linux、Apache、MySQL 以及 PHP 的簡(jiǎn)單組合(LAMP)曾是搭建應(yīng)用網(wǎng)站的主流框架。而隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)用戶規(guī)模的幾何級(jí)膨脹、業(yè)務(wù)場(chǎng)景的復(fù)雜化,以及企業(yè)對(duì)系統(tǒng)性能、擴(kuò)展性、穩(wěn)定性要求的不斷提高,傳統(tǒng)的 LAMP 架構(gòu)逐漸暴露出諸多瓶頸。為突破這些限制,無(wú)論是應(yīng)用還是數(shù)據(jù)庫(kù)都向著分布式的大方向演進(jìn)。整體來(lái)看,現(xiàn)代應(yīng)用技術(shù)整體向分布式化、技術(shù)精細(xì)化、功能模塊化、智能化、可視化、需求多樣化等方向演進(jìn)。

數(shù)據(jù)庫(kù)經(jīng)過(guò)近 60 年的發(fā)展歷程看,1980 年代的大型機(jī)占主導(dǎo),關(guān)系型模型與 SQL 成為主流。1990 年代,隨著互聯(lián)網(wǎng)的快速發(fā)展,小型機(jī)興起,開源數(shù)據(jù)庫(kù)逐步興起。2000 年代,互聯(lián)網(wǎng)技術(shù)的推動(dòng)下,數(shù)據(jù)量暴增,虛擬化技術(shù)、分布式崛起。2010 年代,移動(dòng)互聯(lián)網(wǎng)讓聯(lián)網(wǎng)人數(shù)又有了指數(shù)級(jí)的增長(zhǎng),驅(qū)動(dòng)了大數(shù)據(jù)與云技術(shù)的發(fā)展,在此背景下,應(yīng)用以及數(shù)據(jù)庫(kù)又朝著云原生方向進(jìn)一步發(fā)展。2020 年代,實(shí)時(shí)數(shù)據(jù)分析以及 AI 需求驅(qū)動(dòng)下,應(yīng)用以及數(shù)據(jù)庫(kù)又有了進(jìn)一步的迭代發(fā)展。
從全球數(shù)據(jù)庫(kù)技術(shù)的發(fā)展趨勢(shì)中,我們可以看到幾個(gè)關(guān)鍵要素:
1. 數(shù)據(jù)庫(kù)技術(shù)不斷進(jìn)步,進(jìn)入多元化發(fā)展階段
2. 分布式和云原生重新塑造數(shù)據(jù)庫(kù)形態(tài)
3. 數(shù)據(jù)庫(kù)技術(shù)與大數(shù)據(jù)應(yīng)用深度融合發(fā)展
4. 存算分離已成為數(shù)據(jù)庫(kù)發(fā)展的主流方向
5. HTAP 成為新的關(guān)注方向
天下合久必分,分久必合。從數(shù)據(jù)庫(kù)發(fā)展趨勢(shì)中,我們看到原生分布式已經(jīng)是數(shù)據(jù)庫(kù)發(fā)展的主流方向、是新質(zhì)生產(chǎn)力的代表、是防止技術(shù)斷代的核心技術(shù)。分庫(kù)分表模式是過(guò)渡性技術(shù),集中式數(shù)據(jù)庫(kù)會(huì)越來(lái)越邊緣化。我們也可以預(yù)測(cè),數(shù)據(jù)庫(kù)的技術(shù)棧將逐漸收斂,以此為企業(yè)提供扎實(shí)的數(shù)據(jù)底座、敏捷的開發(fā)體驗(yàn)、極簡(jiǎn)的技術(shù)棧,幫助企業(yè)應(yīng)對(duì)現(xiàn)代企業(yè)的六大挑戰(zhàn)。

MySQL 演變趨勢(shì)
MySQL 的發(fā)展起步于 3.23 版本,當(dāng)時(shí)嶄露頭角,以 MyISAM 作為存儲(chǔ)引擎,完善了基礎(chǔ) SQL 功能,并支持多用戶多線程處理。到了 4.0 版本,引入 InnoDB 引擎,構(gòu)建起關(guān)系型事務(wù)模型,同時(shí)增加了存儲(chǔ)過(guò)程和觸發(fā)器等功能。5.7 版本則標(biāo)志著 MySQL 邁向企業(yè)級(jí)應(yīng)用,存儲(chǔ)引擎變得可插拔,具備外鍵約束、主從復(fù)制以及分區(qū)表等特性。8.1 版本進(jìn)一步提升,達(dá)到金融級(jí)標(biāo)準(zhǔn),增強(qiáng)了安全性、數(shù)據(jù)分析能力、Cluster 能力和資源控制。最新的 9.1 版本構(gòu)建起現(xiàn)代架構(gòu),引入 Vector 數(shù)據(jù)類型,更加面向云原生,并增強(qiáng)了可觀測(cè)性。
我們可以看到,MySQL 產(chǎn)品及生態(tài)近幾年主要是圍繞著云原生、HTAP、高可用、AI、可觀測(cè)性、Resource Control、安全性等方面進(jìn)行迭代演進(jìn)。

- 數(shù)據(jù)量承載:早期,MySQL 主要以單體機(jī)架構(gòu)運(yùn)行,適用于 GB 級(jí)別的數(shù)據(jù)量。隨著業(yè)務(wù)發(fā)展,數(shù)據(jù)量增長(zhǎng),開始采用分庫(kù)分表的方式承載 PB 級(jí)數(shù)據(jù)。但這種方式帶來(lái)了業(yè)務(wù)和運(yùn)維的高復(fù)雜度,因此,許多企業(yè)選擇切換到 TiDB 這種原生分布式數(shù)據(jù)庫(kù),它能在保證性能的同時(shí),更便捷地處理大規(guī)模數(shù)據(jù)。
- 云原生部署:MySQL 最初以單體機(jī)架構(gòu)部署,后來(lái)發(fā)展到 RDS(關(guān)系型數(shù)據(jù)庫(kù)服務(wù))。隨后,出現(xiàn)了以 Auraro、PolarDB 為代表的基于共享分布式存儲(chǔ)的云原生架構(gòu)。然而,這些架構(gòu)在吞吐擴(kuò)展和數(shù)據(jù)承載能力上存在局限。為滿足更高需求,用戶逐漸轉(zhuǎn)向 TiDB Cloud,它們具備更強(qiáng)大的云原生能力,能更好地適應(yīng)復(fù)雜多變的云計(jì)算環(huán)境。


1. 數(shù)據(jù)強(qiáng)一致:讀寫分離架構(gòu)或者分庫(kù)分表架構(gòu)的引入,數(shù)據(jù)的強(qiáng)一致性保障成為重點(diǎn)關(guān)注問(wèn)題,保證強(qiáng)一致性便需極大的犧牲性能,這是 MySQL 體系一直以來(lái)困擾諸多 MySQL 使用者的問(wèn)題。
2. 業(yè)務(wù)無(wú)侵入:隨著業(yè)務(wù)系統(tǒng)數(shù)據(jù)量的增長(zhǎng),早起只能無(wú)奈采取分庫(kù)分表方案以及架構(gòu),這不單為運(yùn)維帶來(lái)了極高的復(fù)雜度,同時(shí)對(duì)業(yè)務(wù)開發(fā)也帶來(lái)的極大的入侵,SQL 只能限定按照 shard key 維度進(jìn)行編寫,無(wú)法任意維度的進(jìn)行 SQL 查詢,開發(fā)不得不犧牲業(yè)務(wù)需求,業(yè)務(wù)的發(fā)展也不得不受限,同時(shí)又需投入大量的高精尖人才進(jìn)行開發(fā)維護(hù)。
3. TB~PB 級(jí)別數(shù)據(jù)承載能力:隨著互聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)、AI 的爆發(fā),各個(gè)企業(yè)的業(yè)務(wù)系統(tǒng)數(shù)據(jù)量都在向著 TB 級(jí)別、百 TB 級(jí)別,甚至我們發(fā)現(xiàn)也有很多用戶數(shù)量在向著 PB 級(jí)別增長(zhǎng)。這對(duì)數(shù)據(jù)庫(kù)的承載能力提出了極高的挑戰(zhàn),不但需要承載大數(shù)據(jù)量,又需要保障業(yè)務(wù)讀寫性能的穩(wěn)定性,而在數(shù)據(jù)的承載能力上,MySQL 的極限,是 TiDB 的起點(diǎn)。
4. 高吞吐能力 & 多點(diǎn)讀寫能力:對(duì)于數(shù)據(jù)庫(kù)多點(diǎn)讀寫是一個(gè)稀缺的能力,而基于 MySQL 二次開發(fā)的生態(tài)下的產(chǎn)品很難實(shí)現(xiàn)業(yè)務(wù)無(wú)侵入的需求下數(shù)據(jù)庫(kù)的多點(diǎn)讀寫能力,以適應(yīng)高吞吐場(chǎng)景。
5. 高可用:盡管 MySQL 提供了多種高可用架構(gòu)(如主從復(fù)制、主主復(fù)制、MHA、InnoDB Cluster 等),但這些方案仍存在一些不足,如配置復(fù)雜、運(yùn)維困難、性能損耗、一致性保障困難等。
6. 橫向擴(kuò)展能力:MySQL 的讀寫分離架構(gòu)提供了弱一致性讀能力的擴(kuò)展,分庫(kù)分表架構(gòu)必須成倍的擴(kuò)容且需要業(yè)務(wù)停機(jī),數(shù)據(jù)重分布又極其復(fù)雜,這對(duì)架構(gòu)師、DBA、開發(fā)者都提供了極大的復(fù)雜度和挑戰(zhàn)。
7. 復(fù)雜 SQL 查詢能力強(qiáng):MySQL 的復(fù)雜查詢能力一直被大家所詬病,在 MySQL 的版本迭代中,我們也可以看到一直在做優(yōu)化器的增強(qiáng),提升 MySQL 對(duì)復(fù)雜 SQL 的處理能力,但相對(duì) Oracle,目前仍存在一定差距。

與傳統(tǒng)的 MySQL 架構(gòu)相比,原生分布式數(shù)據(jù)庫(kù)憑借完全分布式架構(gòu)、數(shù)據(jù)透明分布、原生高可用、數(shù)據(jù)強(qiáng)一致、HTAP 等能力特點(diǎn),極大簡(jiǎn)化讀寫分離和分庫(kù)分表的復(fù)雜度,減少了中間件的使用,大幅降低運(yùn)維復(fù)雜性并提高了系統(tǒng)的穩(wěn)定性和性能;具備為現(xiàn)代應(yīng)用架構(gòu)提供一個(gè)強(qiáng)大、靈活、高效、敏捷的數(shù)據(jù)底座能力。

原生分布式數(shù)據(jù)庫(kù)一站式應(yīng)對(duì):
1. 數(shù)據(jù)強(qiáng)一致:原生分布式數(shù)據(jù)庫(kù)采用多數(shù)派協(xié)議,默認(rèn)的三副本配置,數(shù)據(jù)強(qiáng)一致同步,徹底的解決了數(shù)據(jù)強(qiáng)一致性的問(wèn)題。
2. 業(yè)務(wù)無(wú)侵入:在原生分布式數(shù)據(jù)庫(kù)中,業(yè)務(wù)開發(fā)者完全回歸 MySQL 單機(jī)開發(fā)體驗(yàn),數(shù)據(jù)可以任意維度分析,無(wú)需犧牲任何也許需求或引入更多技術(shù)棧。
3. TB~PB 級(jí)別數(shù)據(jù)承載能力:原生數(shù)據(jù)庫(kù)憑借著細(xì)粒度的數(shù)據(jù)存儲(chǔ)單位,強(qiáng)大的數(shù)據(jù)管理及調(diào)度能力,充分利用大數(shù)據(jù)下多點(diǎn)計(jì)算的能力,具備支撐PB級(jí)別數(shù)據(jù)量承載以及業(yè)務(wù)穩(wěn)定性保障能力。
4. 高吞吐能力 & 多點(diǎn)讀寫能力:對(duì)于數(shù)據(jù)庫(kù)多點(diǎn)讀寫是一個(gè)稀缺的能力,采用存算分離的原生分布式數(shù)據(jù)庫(kù)以更小的單位為存儲(chǔ)單位,可充分發(fā)揮數(shù)據(jù)庫(kù)多點(diǎn)讀寫能力,以適應(yīng)高吞吐場(chǎng)景。尤其在 DTC 場(chǎng)景,如互聯(lián)網(wǎng)、零售、公共事業(yè)這類直接面向最終用戶的場(chǎng)景下,原生分布式數(shù)據(jù)庫(kù)可以充分利用分布式的多點(diǎn)寫入能力來(lái)滿足業(yè)務(wù)極高吞吐的要求。
5. 高可用:原生分布式數(shù)據(jù)庫(kù)采用的多數(shù)派協(xié)議,原生具備故障自愈、故障轉(zhuǎn)移、數(shù)據(jù)副本自動(dòng)補(bǔ)充等能力,對(duì)用戶提供了更友好更可靠的高可用能力。
6. 橫向擴(kuò)展能力:原生分布式數(shù)據(jù)庫(kù)可按需針對(duì)計(jì)算或存儲(chǔ)去擴(kuò)容,且可隨意數(shù)量的擴(kuò)展,比如一次只擴(kuò)展一個(gè) 8c16G 配置的存儲(chǔ)實(shí)例。一行命令完成擴(kuò)展,無(wú)需任何的人工干預(yù)。
7. 復(fù)雜 SQL 查詢能力強(qiáng):原生分布式數(shù)據(jù)庫(kù)充分利用分布式的架構(gòu)以及能力,將行列雙引擎物理隔離,列引擎具備 MPP 計(jì)算能力,讓數(shù)據(jù)庫(kù)擁有了接近傳統(tǒng) OLAP 數(shù)據(jù)庫(kù)的復(fù)雜 SQL 處理效率和能力。

(一)企業(yè)實(shí)力
1. 代碼自主可控率:核心自主可控率,生態(tài)工具自主可控率,是否能真正掌握產(chǎn)品核心代碼
2. 企業(yè)資本規(guī)模:企業(yè)的資產(chǎn)規(guī)模,企業(yè)的背景
3. 研發(fā)力量投入:研發(fā)實(shí)力,數(shù)據(jù)庫(kù)產(chǎn)品投入力度
4. 原廠工程師數(shù)量:原廠售前售后工程師數(shù)量
(二)市場(chǎng)認(rèn)可
1. 產(chǎn)品下載量、裝機(jī)量、市場(chǎng)關(guān)注度
2. 同業(yè)案例:同業(yè)核心系統(tǒng)案例數(shù)量,市場(chǎng)認(rèn)可度
3. 同業(yè)調(diào)研:同業(yè)一般系統(tǒng)案例數(shù)量,同業(yè)調(diào)研認(rèn)可度
4. 三方評(píng)估:權(quán)威的評(píng)估機(jī)構(gòu),中立的第三方評(píng)估網(wǎng)站
5. 在行業(yè)內(nèi)橫向?qū)Ρ惹闆r做參考
(三)生態(tài)環(huán)境
1. 工具完善性:監(jiān)控巡檢工具的關(guān)鍵指標(biāo)完善性,數(shù)據(jù)遷移工具、數(shù)據(jù)同步工具支持情況
2. 文檔完善性:官方文檔準(zhǔn)確性、完普性,問(wèn)題知識(shí)庫(kù)的完備性
3. 認(rèn)證完善性:培訓(xùn)體系的完整性,獲得證書人員的數(shù)量
4. 軟硬件兼容性:支持國(guó)產(chǎn)操作系統(tǒng)數(shù)量,支持國(guó)產(chǎn)芯片服務(wù)器數(shù)量
5. 備份恢復(fù)的便捷性,安裝部署的方便性
6. 社區(qū)支持:是否自己構(gòu)建開源社區(qū),是否與國(guó)內(nèi)外開源社區(qū)合作
7. 社區(qū)活躍度:社區(qū)注冊(cè)人數(shù),企業(yè)數(shù)量等
(四)產(chǎn)品實(shí)力
1. 架構(gòu)先進(jìn)性:可靠性、可用性、可橫向擴(kuò)展性、云原生,多地多中心架構(gòu)支持情況
2. 語(yǔ)法兼容性:兼容 MySQL、PostgreSQL、Oracle 語(yǔ)法其中一種或多種語(yǔ)法
3. 采購(gòu)維保成本:軟件 License 成本,每年維保服務(wù)成本相同架構(gòu)基礎(chǔ)設(shè)施成本
4. 性能:選定業(yè)務(wù)系統(tǒng)進(jìn)行 QPS/TPS 對(duì)比、橫向擴(kuò)展性的性能提升
5. 產(chǎn)品生命力:產(chǎn)品是否具備不斷迭代提升能力,產(chǎn)品成長(zhǎng)能力是否足夠,是否具備長(zhǎng)期做好一款數(shù)據(jù)庫(kù)的決心和實(shí)力


存算分離的云原生架構(gòu),用戶投票的結(jié)果
TiDB 在架構(gòu)上選擇存算分離的云原生架構(gòu),對(duì)開發(fā)者提供了極致的敏捷開發(fā)體驗(yàn),對(duì)業(yè)務(wù)提供了多點(diǎn)讀寫能力應(yīng)對(duì)高吞吐場(chǎng)景,采用多數(shù)派協(xié)議默認(rèn)三副本配置,原生的具備高可用以及故障自動(dòng)轉(zhuǎn)移能力。同時(shí),采用業(yè)界領(lǐng)先的行列雙引擎物理隔離的 HTAP 架構(gòu),為用戶的實(shí)時(shí)數(shù)據(jù)分析簡(jiǎn)化架構(gòu),提升實(shí)時(shí)性。其實(shí),TiDB 的整體架構(gòu)演變是基于用戶需求投票出來(lái)的結(jié)果。
那么,TiDB 對(duì)于現(xiàn)代企業(yè)具備什么價(jià)值呢?企業(yè)利用 TiDB 的橫向擴(kuò)展聯(lián)機(jī)能力能應(yīng)對(duì)絕大多數(shù)聯(lián)機(jī)業(yè)務(wù)場(chǎng)景,再借助 TiDB 的列存引擎以及大數(shù)據(jù)庫(kù)計(jì)算引擎的能力,應(yīng)對(duì)大數(shù)據(jù)實(shí)時(shí)以及離線的數(shù)據(jù)分析需求??蓸O大的簡(jiǎn)化技術(shù)棧,提升敏捷開發(fā)體驗(yàn),為企業(yè)諸多業(yè)務(wù)提供扎實(shí)的數(shù)據(jù)底座。徹底擺脫數(shù)據(jù)強(qiáng)一致性、業(yè)務(wù)侵入、擴(kuò)展能力、高可用、數(shù)據(jù)分析等常面臨的挑戰(zhàn)。

強(qiáng) MySQL 生態(tài)兼容,實(shí)現(xiàn)低成本遷移
TiDB 提供了強(qiáng) MySQL 生態(tài)。無(wú)論是開發(fā)語(yǔ)言、ORM、連接池,客戶端工具,基本都保持強(qiáng)兼容。同時(shí)也提供了最高效的數(shù)據(jù)導(dǎo)出導(dǎo)入、備份恢復(fù)工具,進(jìn)一步加強(qiáng)了 TiDB 的生態(tài)。另一方面,TiDB 和常見的國(guó)產(chǎn)操作系統(tǒng)、CPU 芯片都是 100% 兼容,且有生產(chǎn)案例。

熱門跟貼