“ShardingSphere大大簡(jiǎn)化了分庫(kù)分表的開發(fā)和維護(hù)工作,對(duì)于業(yè)務(wù)的快速上線起到了非常大的支撐作用,保守估計(jì) ShardingSphere 至少為我們節(jié)省了 4個(gè)月的研發(fā)成本。”
--史墨軒,易華錄·技術(shù)總監(jiān)
今年以來,伴隨著易華錄旗下面向個(gè)人用戶的云服務(wù)產(chǎn)品【葫蘆 App】正式上線,后臺(tái)架構(gòu)所承受的業(yè)務(wù)壓力也與日俱增。
為此,葫蘆 App 研發(fā)團(tuán)隊(duì)選擇采用 ShardingSphere 分庫(kù)分表的功能對(duì)數(shù)據(jù)進(jìn)行了橫向的拆分,圍繞 ShardingSphere 靈活敏捷的特性,滿足了葫蘆 App 業(yè)務(wù)對(duì)數(shù)據(jù)層擴(kuò)展性的要求,避免團(tuán)隊(duì)重復(fù)“造輪子”,最大程度簡(jiǎn)化了隨著業(yè)務(wù)增長(zhǎng)而帶來的愈發(fā)復(fù)雜化的分庫(kù)分表的開發(fā)與維護(hù)工作。
從能力擴(kuò)展到業(yè)務(wù)上新,葫蘆 App 所面臨的增長(zhǎng)壓力
對(duì)于數(shù)據(jù)存算能力的高要求,深深鑄在了葫蘆 App 技術(shù)團(tuán)隊(duì)的基因中。
由于葫蘆 App 正處于快速成長(zhǎng)期,業(yè)務(wù)和功能的調(diào)整需求相對(duì)頻繁,這就需要后臺(tái)技術(shù)團(tuán)隊(duì)能夠根據(jù)前端業(yè)務(wù)變化而快速做出適配調(diào)整。用戶數(shù)量和業(yè)務(wù)所產(chǎn)生的數(shù)據(jù)體量都在飛速增長(zhǎng)的同時(shí),也為后臺(tái)底層數(shù)據(jù)庫(kù)帶來了更大的壓力。
隨著 2020 年 5 月 17 日葫蘆 App 的正式上線,用戶數(shù)據(jù)和業(yè)務(wù)體量也呈現(xiàn)出快速增長(zhǎng)的態(tài)勢(shì),后臺(tái)數(shù)據(jù)庫(kù)不可避免地需要進(jìn)行多次水平拆分。同時(shí)隨著業(yè)務(wù)需求的快速變化,新的挑戰(zhàn)也不斷隨之出現(xiàn):
· 能力擴(kuò)展問題
隨著用戶量的快速增長(zhǎng)以及產(chǎn)品形態(tài)的演變,用戶數(shù)據(jù)出現(xiàn)了爆發(fā)式增長(zhǎng),過去傳統(tǒng)架構(gòu)的存算能力遭到了極為嚴(yán)峻的挑戰(zhàn),因此葫蘆 App 對(duì)于后端數(shù)據(jù)處理平臺(tái)的要求是在具備擴(kuò)展能力的同時(shí),也要保證一定的靈活性。
·效率提升問題
為應(yīng)對(duì)快速多變的業(yè)務(wù),葫蘆 App 的研發(fā)團(tuán)隊(duì)需要能夠根據(jù)業(yè)務(wù)訴求來進(jìn)行快速調(diào)整,以提升后臺(tái)架構(gòu)對(duì)業(yè)務(wù)的適應(yīng)性,高靈活、易拓展特性的數(shù)據(jù)架構(gòu)將能夠極大提升團(tuán)隊(duì)研發(fā)效能。另一方面在大體量數(shù)據(jù)的影響下,數(shù)據(jù)庫(kù)的檢索效率難免出現(xiàn)延遲、讀寫慢等問題,進(jìn)而會(huì)影響到最上層的用戶體驗(yàn)。
·業(yè)務(wù)上線問題
功能上新頻繁、上線時(shí)間提前等是任何一款新產(chǎn)品在上市初期都會(huì)遇到的問題,這對(duì)研發(fā)團(tuán)隊(duì)的研發(fā)能力提出了極大挑戰(zhàn)。此前葫蘆團(tuán)隊(duì)本計(jì)劃通過內(nèi)部研發(fā)力量并結(jié)合業(yè)務(wù)情況打造出自己的 Sharding 方案,不過由于時(shí)間關(guān)系,從方案設(shè)計(jì)、研發(fā)再到方案落地的自研路線已無法走通,因此敲定 Sharding 方案迫在眉睫。
·系統(tǒng)穩(wěn)定問題
在引入新技術(shù)的同時(shí),系統(tǒng)穩(wěn)定性也會(huì)面臨較大的挑戰(zhàn),尤其是面向底層技術(shù)的引用,大多具備一定的平臺(tái)業(yè)務(wù)侵入性,在引入后大概率會(huì)對(duì)業(yè)務(wù)系統(tǒng)的穩(wěn)定性產(chǎn)生一定影響。葫蘆 App 研發(fā)團(tuán)隊(duì)需要一款對(duì)底層數(shù)據(jù)庫(kù)侵入性低、適應(yīng)期短、穩(wěn)定性高的數(shù)據(jù)應(yīng)用產(chǎn)品。
利用 ShardingSphere 的特性構(gòu)建靈活高可用的數(shù)據(jù)架構(gòu)解決方案
圍繞上述的一些訴求,葫蘆團(tuán)隊(duì)用了 2 周左右時(shí)間對(duì)ShardingSphere及同類解決方案進(jìn)行了全面評(píng)估,綜合考慮了如產(chǎn)品功能、成熟度、穩(wěn)定性、性能等多方面評(píng)估指標(biāo),最終 ShardingSphere 憑借完善的功能支持程度以及高成熟度,充分滿足了葫蘆團(tuán)隊(duì)的業(yè)務(wù)訴求。
從上圖中可以看出,葫蘆團(tuán)隊(duì)將 ShardingSphere部署在了阿里云的 RDS 之上,相較于對(duì)本體數(shù)據(jù)庫(kù)做調(diào)整,葫蘆團(tuán)隊(duì)更傾向于在數(shù)據(jù)庫(kù)之上來進(jìn)行數(shù)據(jù)治理。而 ShardingSphere 能夠從可插拔架構(gòu)所帶來高擴(kuò)展性、距離業(yè)務(wù)更緊密的貼合性以及對(duì)于業(yè)務(wù)架構(gòu)的零侵入性這三個(gè)層面對(duì)葫蘆的后臺(tái)數(shù)據(jù)架構(gòu)進(jìn)行有效改進(jìn),并帶來了明顯的效果提升:
1.可插拔架構(gòu)的『高擴(kuò)展性』
由于業(yè)務(wù)特性,葫蘆 App 原本有限的存儲(chǔ)空間被消耗得非???,并逐漸開始影響用戶在前端的響應(yīng)效率。通過采用 ShardingSphere 的分片策略,葫蘆研發(fā)團(tuán)隊(duì)在應(yīng)對(duì)海量計(jì)算+存儲(chǔ)所帶來的業(yè)務(wù)問題同時(shí),能夠確保分片擴(kuò)展策略的靈活性?;诖耍J團(tuán)隊(duì)可以在 ShardingSphere 上快速做出相應(yīng)的功能擴(kuò)展,為后續(xù)架構(gòu)調(diào)整提供優(yōu)化方案,進(jìn)一步強(qiáng)化突出了 ShardingSphere 分庫(kù)分表的優(yōu)勢(shì)。
2.距離業(yè)務(wù)更緊密的『貼合性』
后臺(tái)架構(gòu)的變化越小,對(duì)于業(yè)務(wù)而言就越可控。ShardingSphere 這種位于數(shù)據(jù)庫(kù)之上的生態(tài),距離業(yè)務(wù)更近,部署起來也更加輕量,無疑是解決葫蘆 App 前臺(tái)業(yè)務(wù)變更與后臺(tái)架構(gòu)調(diào)整之間矛盾的最優(yōu)解。此外在靈活性層面,ShardingSphere 通過相關(guān)配置即可實(shí)現(xiàn)的方式,極大簡(jiǎn)化了葫蘆研發(fā)團(tuán)隊(duì)在分庫(kù)分表層面的研發(fā)與維護(hù)工作,對(duì)于業(yè)務(wù)的快速上線起到了非常大的支撐作用。
3.對(duì)于業(yè)務(wù)架構(gòu)的『零侵入性』
葫蘆 App 選擇了 ShardingSphere-Proxy 部署模式,在不更換底層數(shù)據(jù)庫(kù)的前提下通過 Proxy 來管理真實(shí)的數(shù)據(jù)庫(kù)集群,基本無需對(duì)業(yè)務(wù)進(jìn)行改造就已經(jīng)完成了業(yè)務(wù)與數(shù)據(jù)在架構(gòu)層面的分離,并避免了因更換數(shù)據(jù)庫(kù)導(dǎo)致的業(yè)務(wù)不可用、漫長(zhǎng)穩(wěn)定周期等風(fēng)險(xiǎn)。另外,ShardingSphere 的無狀態(tài)模式,幾乎不會(huì)對(duì)前端用戶產(chǎn)生任何可感知的影響,業(yè)務(wù)層也無需關(guān)注數(shù)據(jù)的存儲(chǔ)方式。
因此對(duì)于葫蘆 App 這種上線時(shí)間緊張、功能迭代快的產(chǎn)品來說,ShardingSphere-Proxy 通過復(fù)用原有數(shù)據(jù)庫(kù)的能力,幫助葫蘆研發(fā)團(tuán)隊(duì)在數(shù)據(jù)庫(kù)之上實(shí)現(xiàn)分片、數(shù)據(jù)加密等增量能力的開發(fā),且向下不需考慮底層數(shù)據(jù)庫(kù)的配置,向上能夠屏蔽用戶感知,從而快速構(gòu)建起面向業(yè)務(wù)的數(shù)據(jù)庫(kù)直連能力,從系統(tǒng)架構(gòu)層面進(jìn)行了比較好的分離,確保后續(xù)數(shù)據(jù)庫(kù)代理層的問題修復(fù)、版本更新等日常維護(hù)工作都不會(huì)影響到業(yè)務(wù)。
最 后
此次與易華錄葫蘆 App 研發(fā)團(tuán)隊(duì)的合作,助力葫蘆研發(fā)團(tuán)隊(duì)平穩(wěn)度過了數(shù)次業(yè)務(wù)體量翻倍的歷程,正是 ShardingSphere 在全球多種應(yīng)用場(chǎng)景下的一個(gè)縮影。在商業(yè)化公司 SphereEx 的推動(dòng)下,ShardingSphere 正在持續(xù)向著云化、商業(yè)化穩(wěn)步邁進(jìn)。在社區(qū)和商業(yè)化公司的雙重加持下,未來 ShardingSphere 將繼續(xù)深耕數(shù)據(jù)應(yīng)用場(chǎng)景,持續(xù)挖掘 ShardingSphere 在各領(lǐng)域場(chǎng)景下的深層次價(jià)值,為用戶提供覆蓋更全面、性能更強(qiáng)大的數(shù)據(jù)服務(wù)。
目前,ShardingSphere 作為 Apache 基金會(huì)下的頂級(jí)開源項(xiàng)目,在 GitHub 上獲得了超 14K Star 的關(guān)注,已成為行業(yè)內(nèi)最受歡迎的開源項(xiàng)目之一,全球有超過 170 家企業(yè)用戶登記使用,覆蓋金融、電子商務(wù)、云服務(wù)、旅游、物流、教育、文娛等多個(gè)領(lǐng)域。
關(guān)于易華錄 & 葫蘆 App
北京易華錄信息技術(shù)股份有限公司,成立于 2001 年,是國(guó)務(wù)院國(guó)資委直接監(jiān)管的中央企業(yè)中國(guó)華錄集團(tuán)旗下控股的上市公司,致力于建設(shè)城市數(shù)字經(jīng)濟(jì)基礎(chǔ)設(shè)施,以努力降低全社會(huì)長(zhǎng)期保存數(shù)據(jù)的能耗和成本為使命,以成為社會(huì)可信的大數(shù)據(jù)一級(jí)開發(fā)和存儲(chǔ)服務(wù)提供商直至演變成數(shù)據(jù)銀行為愿景,構(gòu)建一個(gè)數(shù)字孿生的城市,最終實(shí)現(xiàn)數(shù)字永生。
作為易華錄內(nèi)部孵化的第一款 C 端產(chǎn)品,葫蘆 App 能夠?qū)⒂脩羯a(chǎn)內(nèi)容的構(gòu)思與素材妥善存儲(chǔ)下來,并提供故事化的記錄方式,降低用戶內(nèi)容制作門檻,讓每個(gè)用戶都能將生活的美好生動(dòng)地展現(xiàn)出來,發(fā)現(xiàn)個(gè)人生活的精彩之處。為用戶存儲(chǔ)一生,點(diǎn)亮美好。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請(qǐng)進(jìn)一步核實(shí),并對(duì)任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對(duì)有關(guān)資料所引致的錯(cuò)誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個(gè)人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識(shí)產(chǎn)權(quán)或存在不實(shí)內(nèi)容時(shí),應(yīng)及時(shí)向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會(huì)依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )