从Oracle到MySQL,余额宝云实践分享
余額寶、百度百發(fā)、騰訊財付通謀劃的互聯(lián)網(wǎng)理財工具,吹響了互聯(lián)網(wǎng)對金融行業(yè)的進軍節(jié)奏。而后,網(wǎng)易、和訊、京東商城、蘇寧云商等二線實力企業(yè)紛紛涉水。另一邊,一眾金融精英也在頻頻轉(zhuǎn)換思路,不僅銀行網(wǎng)絡(luò)中心從副行長牽頭的服務(wù)部門一躍成為行長主抓的業(yè)務(wù)部門,而且高調(diào)發(fā)布互聯(lián)網(wǎng)金融理財產(chǎn)品與攜手互聯(lián)網(wǎng)企業(yè)并行,力圖實現(xiàn)金融互聯(lián)網(wǎng)的新價值。一時之間,互聯(lián)網(wǎng)金融熱潮涌動,無數(shù)專家多視點多維度進行了深入剖析,數(shù)十篇業(yè)內(nèi)深度文章從產(chǎn)品、渠道、市場與趨勢等全面解析互聯(lián)網(wǎng)金融本質(zhì)。
天弘基金創(chuàng)新支持部總經(jīng)理樊振華(左),阿里云金融云服務(wù)架構(gòu)師白培新(中),深圳市金證科技股份有限公司副總裁徐岷波(右)
但洶涌的背后,是鮮為人知的技術(shù)實戰(zhàn)。從傳統(tǒng)封閉的IOE格局遷移到更加動態(tài)擴展、成本更經(jīng)濟的云平臺中,要跨越的障礙實在不少。即使在云計算發(fā)源地——美國,囿于安全性、合規(guī)性和風險等方面的挑戰(zhàn),金融業(yè)雖然與AWS接觸頻頻,但還沒有走出實質(zhì)性的那一步。到了國內(nèi),習(xí)慣有標桿可以模仿的我們,是繼續(xù)等待?還是走出新路?
好在,5個月,開戶用戶超過1600萬,貨幣基金累計申購超過1300億的余額寶在市場上砸出了聲音。而我們一直極為關(guān)注的,余額寶一期二期技術(shù)遷移實踐經(jīng)驗也終于浮出水面。余額寶的背后是四方力量:支付寶、天弘基金(基金合作方)、金證股份(軟件供應(yīng)商)和阿里云,在2013年阿里云開發(fā)者大會中,記者有機會直面其中三位核心人士:天弘基金創(chuàng)新支持部總經(jīng)理樊振華,深圳市金證科技股份有限公司副總裁徐岷波,阿里云金融云服務(wù)架構(gòu)師白培新,卻發(fā)現(xiàn):經(jīng)驗,比我們想象的要復(fù)雜;過程,卻比大家想象的要簡單。
一期“IOE”,二期要“入”云,原因何在?
外界看待余額寶是個整體,但沒想到在技術(shù)實踐上,余額寶是有一期和二期工程的。樊振華對CSDN云計算說:“最初余額寶與互聯(lián)網(wǎng)的嘗試,在整個基金行業(yè)也是第一次。完全是摸著石頭過河。為了穩(wěn)妥,我們在一期的時候是采用傳統(tǒng)IOE的架構(gòu),總投資400多萬。但是沒有想到數(shù)據(jù)量和交易量會增長幅度如此大,遠超平臺承受能力,以至于到了余額寶二期時,如果還采用IOE的模式,初步估算至少需要投入5000萬(主系統(tǒng)+同城災(zāi)備+異地災(zāi)備等)。再加上后期人力和周期服務(wù),要三個月完成目標,這將是不可承受之重?!?/p>
怎么辦?要知道,由于安全、合規(guī)和風險等方面的考慮,金融對公有云很抵制。但當余額寶6月13日上線,6月17日召開新聞發(fā)布會之后,天弘與支付寶一起來評估是否在11月的時候支持“雙十一”大促時,卻發(fā)現(xiàn):如果支持,那么按照2012年的數(shù)據(jù),余額寶平臺所承受的壓力要驟增數(shù)十倍甚至數(shù)百倍,估算約為1億客戶數(shù),3億筆交易,2.5小時完成清算。采用當時的IOE架構(gòu),投入將要增加數(shù)千萬,設(shè)備、軟件之外,甚至是余額寶一期所用的機房也完全無法滿足需求。
不僅如此,余額寶發(fā)布之后不到兩個月,就為天弘基金帶來百億級別的資金增量及百萬級活躍用戶,平均每月規(guī)模增長100億元左右,天弘增利寶已經(jīng)成為國內(nèi)用戶數(shù)最多的貨幣基金。如此增長之后,保證安全+降低成本+為未來業(yè)務(wù)提供彈性擴展架構(gòu)已經(jīng)成為必須。
如果說6月13日是一期的截止時間點的話,那么“二期,是從7月初開始開發(fā)的”。沒有先例,是否就需要繼續(xù)等待下去?沒有先例,是否要繼續(xù)投入上千萬去擴容和升級?沒有先例,是不是可以等等看,期待國外會有案例給以啟迪和復(fù)制?可市場會給予大家等待的時間么?
“余額寶遷移到云平臺上,已經(jīng)成為我們自發(fā)的需求。當然,也別無其他選擇?!狈袢A說。
下定決心,決策過程反而沒有想象中那么復(fù)雜了?!霸u估系統(tǒng)上線,只有三項標準:成本評估、安全評估、架構(gòu)擴展評估。盡管國際上,金融行業(yè)還也沒有采用公有云平臺的先例。這不僅是單純的技術(shù)障礙,還是意識、理解、勇氣和監(jiān)管要求等復(fù)雜交織的結(jié)果。但市場逼著我們向前,所以決策并沒有大家想象的那么復(fù)雜?!?/p>
事實證明,“沒有選擇的選擇,到后來卻發(fā)現(xiàn)是最好的選擇?!狈袢A笑著對CSDN云計算的記者說。
去IOE,最難的是去Oracle數(shù)據(jù)庫
要將曾經(jīng)根植在IOE的軟件遷移到阿里云上,開發(fā)、調(diào)整、優(yōu)化必不可少。但時間如此緊張(最多就3個月),那么,一開始,打造合作多方的信任關(guān)系自然至關(guān)重要。
“余額寶本身擁有極強的互聯(lián)網(wǎng)屬性,數(shù)據(jù)量大、業(yè)務(wù)量大、響應(yīng)速度要求高。時間這么緊,天弘、金證和阿里云、支付寶,簡單溝通后立即投入了啟動工作。也因為時間太緊,所以我們也沒有調(diào)研的時間,更沒有可調(diào)研的成功案例??梢哉f,基于多方的信任,資源共享和無所畏懼,是我們走到一起的根本原因。”樊振華如此表示。
去IOE,硬件相對容易些,最難的是與應(yīng)用密切相關(guān)的數(shù)據(jù)庫。
Oracle數(shù)據(jù)庫向MySQL轉(zhuǎn)換的時候,連最簡單的批量插入,由于對于底層理解的不同,都有很多問題。在Oracle中,開發(fā)者是不需要關(guān)心底層問題的,但在MySQL則不同,要關(guān)注很多。批量提交,事務(wù)開啟還是關(guān)閉,都需要人為干預(yù)。?
數(shù)據(jù)庫解決的問題是插入、刪除修改。所以遷移的時候,這些問題需要一個一個去研究去解決,然后復(fù)制過來一個一個測試,開發(fā)階段的測試工作量可想而知。業(yè)內(nèi)認為MySQL無法支撐大數(shù)據(jù)清算,這是有根據(jù)的。但在徹底了解MySQL之后,天弘感覺遷移就如同修路一樣,原來基于IOE是條路,而基于云架構(gòu),一條不行,可以修50條路,100條路,總歸是可以化整為零,用水平化、分庫分表等方式,并行化思路來解決,用小單位來解決問題的。雖然在遷移中,對中間層的要求更高,但是可行的。
白培新詳細介紹了一些技術(shù)難點。在數(shù)據(jù)庫切換過程中遇到一些比較困難的點,比如說Oracle集中管理強,MySQL單機的能力顯然要弱很多。余額寶遷移到阿里云上之后,要考慮雙十一對于天弘基金系統(tǒng)吞吐量的壓力。在評審架構(gòu)后,通過對性能進行預(yù)估,采用了50個MySQL實例的方式。但需要天弘將業(yè)務(wù)邏輯、應(yīng)用層所用的數(shù)據(jù)庫通過一個維度來進行水平拆分,然后將這些業(yè)務(wù)平均分配在這50個MySQL實例上,以保證每一個MySQL的性能負載比較平均,從而實現(xiàn)用50個MySQL來支撐的大業(yè)務(wù)量。阿里在去IOE方面實踐的時間長,有經(jīng)驗,阿里云底層專業(yè)的DBA團隊和數(shù)據(jù)庫專家都參與到項目中,共同和天弘來做拆分方案。而后,在從Oracle平臺到MySQL的過程中,金證承擔了主要的遷移工作。
徐岷波也對CSDN云計算表示:“金證在金融行業(yè)有20年的歷史了,客戶廣泛。由于業(yè)務(wù)需要,金證對DB2、Sybase、Oracle、SQLServer這樣在金融行業(yè)應(yīng)用較多的數(shù)據(jù)庫都有應(yīng)用。這也使得金證在開發(fā)新系統(tǒng)的時候,一直非常關(guān)注‘跨平臺特性’,盡可能不要用到哪一種單一數(shù)據(jù)庫的很特殊的功能。所以金證開發(fā)的系統(tǒng),完全沒有采用存儲過程的模式,所有的應(yīng)用和業(yè)務(wù)邏輯都是在中間件這一層,于是所有的業(yè)務(wù)( 數(shù)據(jù)管理、業(yè)務(wù)服務(wù)等,如現(xiàn)在用到的PA和直銷,未來用到的交易、管理、甚至數(shù)據(jù)倉庫這樣的業(yè)務(wù)系統(tǒng)等)都可以放在應(yīng)用服務(wù)器上,數(shù)據(jù)庫就是存儲的功能。這也使得從余額寶的Oracle到MySQL的切換數(shù)據(jù)庫比較容易實現(xiàn)。除此以外,余額寶使用的中間件也是金證開發(fā)的,原有軟件架構(gòu)非常好,雖然第一次接觸MySQL,但跨平臺很容易實現(xiàn)遷移。但如果系統(tǒng)利用了大量存儲,且大量業(yè)務(wù)是跑在數(shù)據(jù)庫上,中間件也是用的Oracle的,那么應(yīng)用移植其實就非常難,因為每一種數(shù)據(jù)庫的存儲過程的差別是非常大的,現(xiàn)在來看其實有很多有利的因素是我們各方的配合達到現(xiàn)在這樣的效果。”
事實上,單純從技術(shù)上看,余額寶是個性且不易復(fù)制的。一方面,金證的直銷系統(tǒng)和中間件都是自主開發(fā)的,比較可控;另一方面,業(yè)務(wù)系統(tǒng)對底層的業(yè)務(wù)依賴主要是在應(yīng)用層,整體的改造難度較小。不過即使如此,有了多方匯聚的極強技術(shù)實力,阿里云還是和金證一起,用兩天時間來將金證系統(tǒng)中所有SQL語句都過了一遍,大概是有幾十萬條SQL語句,才徹底解決一些性能優(yōu)化的問題。
好在,遷移到云上之后,白培新表示:“在預(yù)測環(huán)節(jié),實時并發(fā)數(shù),要求為3000TPS(每秒可以開3000戶),但測試結(jié)果是可以開到5000,極限容量可以到12000TPS。”徐岷波進一步補充說:“50個MySQL的實例完全可以支撐余額寶的雙十一峰值業(yè)務(wù),并且在沒有做過任何優(yōu)化的情況下,還留出了很大余量。如果經(jīng)過系統(tǒng)調(diào)優(yōu),以過去的工作經(jīng)驗來看,在現(xiàn)有的設(shè)備和硬件網(wǎng)絡(luò)環(huán)境下,性能翻一倍應(yīng)該是正常的?!?/p>
除此以外,樊振華對安全也很滿意:“在測試中,阿里云提供的數(shù)據(jù)庫服務(wù)主備切換時,速度非???。再加上我們化整為零的策略,全部熱插播硬盤,使得數(shù)據(jù)的安全性得到了很大的滿足。一直到現(xiàn)在,都沒有出現(xiàn)過任何問題。坦白說,在基礎(chǔ)平臺安全方面,阿里云已經(jīng)比較成熟了,尤其是在應(yīng)對高流量、大數(shù)據(jù)量沖擊的時候,要比很多中小基金自己的系統(tǒng)穩(wěn)定和安全很多。”
據(jù)悉,每一次系統(tǒng)遷移的演練是需要36個小時,反復(fù)演練多次,確保萬無一失,才在9月份正式做了切換。
下一步,大數(shù)據(jù)挖掘與分析
從IOE向云中遷移,余額寶的項目團隊作出了非凡的努力。
樊振華說:“天弘投入了10個人,金證投入20多人,阿里云(主要是專業(yè)金融集群)投入了50多人,支付寶投入了數(shù)十人,就這樣,組建了我們的百人技術(shù)團隊。項目組從7月閉關(guān)到9月底,每天從早上8點開始一直到晚上12點,根本沒有周六周日,很辛苦,非常辛苦。而由于項目開發(fā)中出現(xiàn)了很多問題,非常多的問題,爭吵、低落、抱怨都是常態(tài),甚至一度整個團隊都覺得項目失敗的概率很高,幾乎處于崩潰邊緣。但好在幾位項目帶頭人非常有信心,知道最高的風險點在哪里,我們和金證、阿里云從架構(gòu)設(shè)計到技術(shù)遷移、業(yè)務(wù)實現(xiàn),一點點來摳,一點點地解決問題。四方合作,忘我的奉獻和投入讓我們終于拿下這個如今成為行業(yè)典范的項目。現(xiàn)在余額寶的系統(tǒng)架設(shè)在300余臺云主機上,使用了阿里云的ECS+RDS+SLB+云監(jiān)控等多項服務(wù)。 ”
“真正去了IOE,發(fā)現(xiàn)沒有想象中復(fù)雜?!睅缀跏敲课唤M員的感受。
一直很低調(diào)的余額寶,在技術(shù)上更加低調(diào),老老實實做事。據(jù)悉,二期整個團隊都是封閉的,“我們做什么外面基本都不知道”。在切身體驗了互聯(lián)網(wǎng)金融“用戶多,數(shù)據(jù)量大;分時段爆發(fā)增長;用戶體驗要求很高”的特性之后,下一步,天弘希望能夠聯(lián)合更多伙伴,建設(shè)數(shù)據(jù)中心、數(shù)據(jù)倉庫,并繼續(xù)完善安全監(jiān)控,爭取在數(shù)據(jù)挖掘和分析方面,提供更多“非高大上”的產(chǎn)品以及創(chuàng)新的服務(wù)。
寫在最后:
余額寶的成功,是個性的,即使從共性上來分析,且也僅能代表金融行業(yè)中新機構(gòu)成立,新系統(tǒng)建設(shè)這兩個方向。但不可否認的是,余額寶揭示了技術(shù)變遷的一種可能,尤其是在如今大數(shù)據(jù)背景之下。
總結(jié)
以上是生活随笔為你收集整理的从Oracle到MySQL,余额宝云实践分享的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 几种常见数据库连接池的使用比较
- 下一篇: Win7 64位下PowerDesign