專訪阿里巴巴畢玄:異地多活數(shù)據(jù)中心項(xiàng)目的來(lái)龍去脈

大數(shù)據(jù)時(shí)代,數(shù)據(jù)中心的異地容災(zāi)變得非常重要。在去年雙十一之前,阿里巴巴上線了數(shù)據(jù)中心異地雙活項(xiàng)目。InfoQ就該項(xiàng)目采訪了阿里巴巴的林昊(花名畢玄)。

畢玄是阿里巴巴技術(shù)保障部的研究員,負(fù)責(zé)性能容量架構(gòu)。數(shù)據(jù)中心異地多活項(xiàng)目就是他主導(dǎo)的。

InfoQ:首先請(qǐng)介紹一下數(shù)據(jù)中心異地多活這個(gè)項(xiàng)目。

畢玄:這個(gè)項(xiàng)目在我們內(nèi)部的另外一個(gè)名字叫做單元化,雙活是它的第二個(gè)階段,多活是第三個(gè)階段。所以我們把這個(gè)項(xiàng)目分成三年來(lái)實(shí)現(xiàn)。所謂異地多活,故名思義,就是在不同地點(diǎn)的數(shù)據(jù)中心起多個(gè)我們的交易,并且每個(gè)地點(diǎn)的那個(gè)交易都是用來(lái)支撐流量的。

歡迎工作一到五年的Java工程師朋友們加入Java技術(shù)交流:611481448

群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識(shí)點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來(lái)學(xué)習(xí)提升自己,不要再用"沒(méi)有時(shí)間“來(lái)掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來(lái)的自己一個(gè)交代!

InfoQ:當(dāng)時(shí)為什么要做這件事呢?

畢玄:其實(shí)我們大概在2009還是2010年左右的時(shí)候,就開始嘗試在異地去做一個(gè)數(shù)據(jù)中心,把我們的業(yè)務(wù)放過(guò)去。更早之前,我們做過(guò)同城,就是在同一個(gè)城市建多個(gè)數(shù)據(jù)中心,應(yīng)用部署在多個(gè)數(shù)據(jù)中心里面。同城的好處就是,如果同城的任何一個(gè)機(jī)房掛掉了,另外一個(gè)機(jī)房都可以接管。做到這個(gè)以后,我們就在想,異地是不是也能做到這樣?整個(gè)業(yè)界傳統(tǒng)的做法,異地是用來(lái)做一個(gè)冷備份的,等這邊另外一個(gè)城市全部掛掉了,才會(huì)切過(guò)去。我們當(dāng)時(shí)也是按照這個(gè)方式去嘗試的,嘗試了一年左右,我們覺(jué)得冷備的方向?qū)ξ覀儊?lái)講有兩個(gè)問(wèn)題:第一個(gè)問(wèn)題是成本太高。我們需要備份全站,而整個(gè)阿里巴巴網(wǎng)站,包括淘寶、天貓、聚劃算等等,所有加起來(lái),是一個(gè)非常大的量,備份成本非常高。第二個(gè)問(wèn)題是,冷備并不是一直在跑流量的,所以有個(gè)問(wèn)題,一旦真的出問(wèn)題了,未必敢切過(guò)去。因?yàn)椴恢狼羞^(guò)去到底能不能起來(lái),而且整個(gè)冷備恢復(fù)起來(lái)要花多長(zhǎng)時(shí)間,也不敢保證。因此在嘗試之后,我們發(fā)現(xiàn)這個(gè)方向?qū)ξ覀兌圆⒉缓?。那為什么我們最后下定決心去做異地多活呢?最關(guān)鍵的原因是,我們?cè)?013年左右碰到了幾個(gè)問(wèn)題。首先,阿里巴巴的機(jī)房不僅僅給電商用,我們有電商,有物流,有云,有大數(shù)據(jù),所有業(yè)務(wù)共用機(jī)房。隨著各種業(yè)務(wù)規(guī)模的不斷增長(zhǎng),單個(gè)城市可能很難容納下我們,所以我們面臨的問(wèn)題是,一定需要去不同的城市建設(shè)我們的數(shù)據(jù)中心。其次是我們的伸縮規(guī)模的問(wèn)題。整個(gè)淘寶的量,交易量不斷攀升,每年的雙十一大家都看到了,增長(zhǎng)非???。而我們的架構(gòu)更多還是在2009年以前確定的一套架構(gòu),要不斷的加機(jī)器,這套架構(gòu)會(huì)面臨風(fēng)險(xiǎn)。如果能夠做到異地部署,就可以把伸縮規(guī)模縮小。雖然原來(lái)就是一套巨大的分布式應(yīng)用,但是其實(shí)可以認(rèn)為是一個(gè)集群,然后不斷的加機(jī)器。但是在這種情況下,隨著不斷加機(jī)器,最終在整個(gè)分布式體系中,一定會(huì)有一個(gè)點(diǎn)是會(huì)出現(xiàn)風(fēng)險(xiǎn)的,會(huì)再次到達(dá)瓶頸,那時(shí)就無(wú)法解決了。這兩個(gè)問(wèn)題讓我們下定決心去做異地多活這個(gè)項(xiàng)目。為什么我們之前那么糾結(jié)呢?因?yàn)檎麄€(gè)業(yè)界還沒(méi)有可供參考的異地多活實(shí)現(xiàn),這就意味著我們必須完全靠自己摸索。而且相對(duì)來(lái)講,它的風(fēng)險(xiǎn)以及周期可能也是比較大的。

InfoQ:這個(gè)項(xiàng)目具體是怎樣部署的?

畢玄:以去年雙十一為例,當(dāng)時(shí)我們?cè)诤贾萦幸粋€(gè)數(shù)據(jù)中心,在另外一個(gè)城市還有個(gè)數(shù)據(jù)中心,一共是兩個(gè),分別承擔(dān)50%用戶的流量。就是有50%的用戶會(huì)進(jìn)入杭州,另外50%會(huì)進(jìn)入到另外一個(gè)城市。當(dāng)用戶進(jìn)入以后,比如說(shuō)在淘寶上看商品,瀏覽商品,搜索、下單、放進(jìn)購(gòu)物車等等操作,還包括寫數(shù)據(jù)庫(kù),就都是在所進(jìn)入的那個(gè)數(shù)據(jù)中心中完成的,而不需要跨數(shù)據(jù)中心。

InfoQ:這樣的優(yōu)勢(shì)是?

畢玄:異地部署,從整個(gè)業(yè)界的做法上來(lái)講,主要有幾家公司,比如Google、Facebook,這兩家是比較典型的,Google做到了全球多個(gè)數(shù)據(jù)中心,都是多活的。但是Google具體怎么做的,也沒(méi)有多少人了解。另外一家就是Facebook,我們相對(duì)更了解一些,F(xiàn)acebook在做多個(gè)數(shù)據(jù)中心時(shí),比如說(shuō)美國(guó)和歐洲兩個(gè)數(shù)據(jù)中心,確實(shí)都在支撐流量。但是歐洲的用戶有可能需要訪問(wèn)美國(guó)的數(shù)據(jù)中心,當(dāng)出現(xiàn)這種狀況時(shí),整個(gè)用戶體驗(yàn)不是很好。國(guó)內(nèi)的情況,我們知道的像銀行,還有其他一些行業(yè),傾向于做異地災(zāi)備。銀行一般都會(huì)有兩地,一個(gè)地方是熱點(diǎn),另一個(gè)地方是冷備。2013年工商銀行出現(xiàn)故障時(shí),就沒(méi)有辦法做出決定,到底要不要切到災(zāi)備數(shù)據(jù)中心,他們會(huì)碰到我們以前摸索時(shí)所面對(duì)的問(wèn)題,就是不確定切換過(guò)程到底要多久,災(zāi)備中心到底多久才能把流量接管起來(lái)。而且接管以后,整個(gè)功能是不是都正常,也可能無(wú)法確定。剛才也提到過(guò),冷備的話,我們要備份全站,成本是非常高的。如果每個(gè)地點(diǎn)都是活的,這些數(shù)據(jù)中心就可以實(shí)時(shí)承擔(dān)流量,任何一點(diǎn)出問(wèn)題,都可以直接切掉,由另外一點(diǎn)直接接管。相對(duì)冷備而言,這是一套可以運(yùn)行的模式,而且風(fēng)險(xiǎn)非常低。

InfoQ:不過(guò)這樣的話,平時(shí)要預(yù)留出很多流量才能保證?

畢玄:沒(méi)錯(cuò)。因?yàn)樵诋惖鼗蛲墙ǘ鄠€(gè)數(shù)據(jù)中心時(shí),建設(shè)過(guò)程中一定都會(huì)保有一定的冗余量。因?yàn)橐紤]其他數(shù)據(jù)中心出現(xiàn)故障時(shí)加以接管。不過(guò)隨著數(shù)據(jù)中心建設(shè)的增多,這個(gè)成本是可以控制的。如果有兩個(gè)異地的數(shù)據(jù)中心,冗余量可能是一倍,因?yàn)橐庸苋?。但是如果有三個(gè)數(shù)據(jù)中心,互為備份,就不需要冗余兩倍了。

InfoQ:這個(gè)項(xiàng)目挑戰(zhàn)還是比較大的。您可以介紹一下研發(fā)過(guò)程中遇到的挑戰(zhàn)嗎?又是怎樣克服的?

畢玄:對(duì)于我們來(lái)講,異地項(xiàng)目最大的挑戰(zhàn)是延時(shí)。跨城市一定會(huì)有延時(shí)的問(wèn)題。在中國(guó)范圍內(nèi),延時(shí)可能在一百毫秒以內(nèi)。看起來(lái)單次好像沒(méi)什么,但是像淘寶是個(gè)很大的分布式系統(tǒng),一次頁(yè)面的展現(xiàn),背后的交互次數(shù)可能在一兩百次。如果這一兩百次全部是跨城市做的,整個(gè)響應(yīng)時(shí)間會(huì)增加很多,所以延時(shí)帶來(lái)的挑戰(zhàn)非常大。在解決挑戰(zhàn)的過(guò)程中,我們會(huì)面臨更細(xì)節(jié)的一些問(wèn)題。怎樣降低延時(shí)的影響,我們能想到的最簡(jiǎn)單、最好的辦法,就是讓操作全部在同一機(jī)房?jī)?nèi)完成,那就不存在延時(shí)的挑戰(zhàn)了。所以最關(guān)鍵的問(wèn)題,就是怎樣讓所有操作在一個(gè)機(jī)房?jī)?nèi)完成。這就是單元化。為什么叫單元化,而沒(méi)有叫其他名字呢?原因在于,要在異地部署我們的網(wǎng)站,首先要做一個(gè)決定。比如說(shuō),冷備是把整個(gè)站全部備過(guò)去,這樣可以確??梢匀拷庸堋5嵌嗷畹那闆r下,要考慮成本,所以不能部署全站。整個(gè)淘寶的業(yè)務(wù)非常豐富,其實(shí)有很多非交易類型的應(yīng)用,這些功能可能大家平時(shí)用的不算很多。但對(duì)我們來(lái)講,又是不能缺失的。這部分流量可能相對(duì)很小。如果這些應(yīng)用也全國(guó)到處部署,冗余量就太大了。所以我們需要在異地部署的是流量會(huì)爆發(fā)式增長(zhǎng)的,流量很大的那部分。雖然有冗余,但是因?yàn)榱髁繒?huì)爆發(fā)式增長(zhǎng),成本比較好平衡。異地部署,我們要在成本之間找到一個(gè)平衡點(diǎn)。所以我們決定在異地只部署跟買家交易相關(guān)的核心業(yè)務(wù),確保一個(gè)買家在淘寶上瀏覽商品,一直到買完?yáng)|西的全過(guò)程都可以完成。其他一些功能就會(huì)缺失,所以我們?cè)诋惖夭渴鸬牟⒎侨?,而是一組業(yè)務(wù),這組業(yè)務(wù)就成為單元。比如說(shuō)我們現(xiàn)在做的就是交易單元。這時(shí)淘寶會(huì)面臨一個(gè)比Google、Facebook等公司更大的一個(gè)挑戰(zhàn)。像Facebook目前做的全球化數(shù)據(jù)中心,因?yàn)镕acebook更多的是用戶和用戶之間發(fā)消息,屬于社交領(lǐng)域。但淘寶是電商領(lǐng)域,對(duì)數(shù)據(jù)的一致性要求非常高,延時(shí)要求也非常高。還有個(gè)更大的挑戰(zhàn),那就是淘寶的數(shù)據(jù)。如果要把用戶操作封閉在一個(gè)單元內(nèi)完成,最關(guān)鍵的是數(shù)據(jù)。跟冷備相比,異地多活最大的風(fēng)險(xiǎn)在于,它的數(shù)據(jù)會(huì)同時(shí)在多個(gè)地方寫,冷備則不存在數(shù)據(jù)會(huì)寫錯(cuò)的問(wèn)題。如果多個(gè)地方在寫同一行數(shù)據(jù),那就沒(méi)有辦法判斷哪條數(shù)據(jù)是正確的。在某個(gè)點(diǎn),必須確保單行的數(shù)據(jù)在一個(gè)地方寫,絕對(duì)不能在多個(gè)地方寫。為了做到這一點(diǎn),必須確定數(shù)據(jù)的維度。如果數(shù)據(jù)只有一個(gè)維度,就像Facebook的數(shù)據(jù),可以認(rèn)為只有一個(gè)緯度,就是用戶。但是像淘寶,如果要在淘寶上買一個(gè)東西,除了用戶本身的信息以外,還會(huì)看到所有商品的數(shù)據(jù)、所有賣家的數(shù)據(jù),面對(duì)的是買家、賣家和商品三個(gè)維度。這時(shí)就必須做出一個(gè)選擇,到底用哪個(gè)維度作為我們唯一的一個(gè)封閉的維度。單元化時(shí),走向異地的就是買家的核心鏈路,所以我們選擇了買家這個(gè)維度。但是這樣自然會(huì)帶來(lái)一個(gè)問(wèn)題,因?yàn)槲覀冇腥齻€(gè)維度的數(shù)據(jù),當(dāng)操作賣家商品數(shù)據(jù)時(shí),就無(wú)法封閉了,因?yàn)檫@時(shí)一定會(huì)出現(xiàn)需要集中到一個(gè)點(diǎn)去寫的現(xiàn)象。從我們的角度看,目前實(shí)現(xiàn)整個(gè)單元化項(xiàng)目最大的幾個(gè)難點(diǎn)是:第一個(gè)是路由的一致性。因?yàn)槲覀兪前促I家維度來(lái)切分?jǐn)?shù)據(jù)的,就是數(shù)據(jù)會(huì)封閉在不同的單元里。這時(shí)就要確保,這個(gè)買家相關(guān)的數(shù)據(jù)在寫的時(shí)候,一定是要寫在那個(gè)單元里,而不能在另外一個(gè)單元,否則就會(huì)出現(xiàn)同一行數(shù)據(jù)在兩個(gè)地方寫的現(xiàn)象。所以這時(shí)一定要保證,一個(gè)用戶進(jìn)到淘寶,要通過(guò)一個(gè)路由規(guī)則來(lái)決定這個(gè)用戶去哪里。這個(gè)用戶進(jìn)來(lái)以后,到了前端的一組Web頁(yè)面,而Web頁(yè)面背后還要訪問(wèn)很多后端服務(wù),服務(wù)又要訪問(wèn)數(shù)據(jù)庫(kù),所以最關(guān)鍵的是要保障這個(gè)用戶從進(jìn)來(lái)一直到訪問(wèn)服務(wù),到訪問(wèn)數(shù)據(jù)庫(kù),全鏈路的路由規(guī)則都是完全一致的。如果說(shuō)某個(gè)用戶本來(lái)應(yīng)該進(jìn)A城市的數(shù)據(jù)中心,但是卻因?yàn)槁酚慑e(cuò)誤,進(jìn)入了B城市,那看到的數(shù)據(jù)就是錯(cuò)的了。造成的結(jié)果,可能是用戶看到的購(gòu)買列表是空的,這是不能接受的。所以如何保障路由的一致性,非常關(guān)鍵。第二個(gè)是挑戰(zhàn)是數(shù)據(jù)的延時(shí)問(wèn)題。因?yàn)槭钱惖夭渴?,我們需要同步賣家的數(shù)據(jù)、商品的數(shù)據(jù)。如果同步的延時(shí)太長(zhǎng),就會(huì)影響用戶體驗(yàn)。我們能接受的范圍是有限的,如果是10秒、30秒,用戶就會(huì)感知到。比如說(shuō)賣家改了一個(gè)價(jià)格,改了一個(gè)庫(kù)存,而用戶隔了很久才看到,這對(duì)買家和賣家都是傷害。所以我們能接受的延時(shí)必須要做到一秒內(nèi),即在全國(guó)的范圍內(nèi),都必須做到一秒內(nèi)把數(shù)據(jù)同步完。當(dāng)時(shí)所有的開源方案,或者公開的方案,包括MySQL自己的主備等,其實(shí)都不可能做到一秒內(nèi),所以數(shù)據(jù)延時(shí)是我們當(dāng)時(shí)面臨的第二個(gè)挑戰(zhàn)。第三個(gè)挑戰(zhàn),在所有的異地項(xiàng)目中,雖然冷備成本很高,多活可以降低成本,但是為什么大家更喜歡冷備,而不喜歡多活呢?因?yàn)閿?shù)據(jù)的正確性很難保證。數(shù)據(jù)在多點(diǎn)同時(shí)寫的時(shí)候,一定不能寫錯(cuò)。因?yàn)閿?shù)據(jù)故障跟業(yè)務(wù)故障還不一樣,跟應(yīng)用層故障不一樣。如果應(yīng)用出故障了,可能就是用戶不能訪問(wèn)。但是如果數(shù)據(jù)寫錯(cuò)了,對(duì)用戶來(lái)說(shuō),就徹底亂了。而且這個(gè)故障是無(wú)法恢復(fù)的,因?yàn)闊o(wú)法確定到底那里寫的才是對(duì)的。所以在所有的異地多活項(xiàng)目中,最重要的是保障某個(gè)點(diǎn)寫進(jìn)去的數(shù)據(jù)一定是正確的。這是最大的挑戰(zhàn),也是我們?cè)谠O(shè)計(jì)整個(gè)方案中的第一原則。業(yè)務(wù)這一層出故障我們都可以接受,但是不能接受數(shù)據(jù)故障。還有一個(gè)挑戰(zhàn)是數(shù)據(jù)的一致性。多個(gè)單元之間一定會(huì)有數(shù)據(jù)同步。一方面,每個(gè)單元都需要賣家的數(shù)據(jù)、商品的數(shù)據(jù);另一方面,我們的單元不是全量業(yè)務(wù),那一定會(huì)有業(yè)務(wù)需要這個(gè)單元,比如說(shuō)買家在這個(gè)單元下了一筆定單,而其他業(yè)務(wù)有可能也是需要這筆數(shù)據(jù),否則可能操作不了,所以需要同步該數(shù)據(jù)。所以怎樣確保每個(gè)單元之間的商品、賣家的數(shù)據(jù)是一致的,然后買家數(shù)據(jù)中心和單元是一致的,這是非常關(guān)鍵的。這幾個(gè)挑戰(zhàn)可能是整個(gè)異地多活項(xiàng)目中最復(fù)雜的。另外還有一點(diǎn),淘寶目前還是一個(gè)高速發(fā)展的業(yè)務(wù),在這樣的過(guò)程中,去做一次比較純技術(shù)的改造,怎樣確保對(duì)業(yè)務(wù)的影響最小,也是一個(gè)挑戰(zhàn)。

InfoQ:要將延時(shí)控制在1秒之內(nèi),網(wǎng)絡(luò)和硬件方面都有哪些工作?

畢玄:如果網(wǎng)絡(luò)帶寬質(zhì)量不好,1秒是不可能做到的。我們?cè)诿總€(gè)城市的數(shù)據(jù)中心之間,會(huì)以一個(gè)點(diǎn)做成自己的骨干網(wǎng),所以可以保障不同城市之間的網(wǎng)絡(luò)質(zhì)量。但是要保證到1秒,還必須自己再去做東西來(lái)實(shí)現(xiàn)數(shù)據(jù)的同步,這個(gè)很關(guān)鍵。這個(gè)東西現(xiàn)在也在阿里云上有開放了。

InfoQ:異地多活其實(shí)也是實(shí)現(xiàn)高可用。阿里技術(shù)保障的梁耀斌(花名追源)老師會(huì)在4月23日~25日的QCon北京2015大會(huì)上分享《你的網(wǎng)站是高可用的嗎?》,因?yàn)楫?dāng)時(shí)的題目和內(nèi)容也是您參與擬定的。您可以先談一下其中的一些標(biāo)準(zhǔn)嗎?

畢玄:其實(shí)每家比較大的互聯(lián)網(wǎng)公司,每年可能都會(huì)對(duì)外公開說(shuō),我們今年的可用性做到了多少,比如4個(gè)9或者5個(gè)9。但是每家公司對(duì)可用性的定義可能并不一樣。比如說(shuō),有的公司可能認(rèn)為業(yè)務(wù)響應(yīng)時(shí)間超過(guò)多少才叫可用性損失,而其他公司可能認(rèn)為業(yè)務(wù)受損多少就是可用性損失。我們希望大家以后有一個(gè)統(tǒng)一的定義,這樣就比較好比較了。我們發(fā)現(xiàn),真正所有做到高可用的網(wǎng)站,最重要的一點(diǎn)是故障恢復(fù)時(shí)間的控制。因?yàn)槌龉收鲜遣豢杀苊獾模麄€(gè)網(wǎng)站一定會(huì)出現(xiàn)各種各樣的故障,關(guān)鍵是在故障出現(xiàn)以后,應(yīng)對(duì)能力有多強(qiáng),恢復(fù)時(shí)間可以做到多短。追源會(huì)在QCon上分享,我們?cè)趹?yīng)對(duì)不同類型的故障時(shí),我們是怎樣去恢復(fù)的,恢復(fù)時(shí)間能控制到多短,為什么能控制到那么短。在不同的技術(shù)能力,以及不同的技術(shù)設(shè)施的情況下,能做到的恢復(fù)時(shí)間可能是不一樣的,所以我們會(huì)定義一個(gè)在不同的技術(shù)能力和不同的技術(shù)設(shè)施的情況下,恢復(fù)時(shí)間的標(biāo)準(zhǔn)。如果恢復(fù)時(shí)間能控制得非常好,可能整個(gè)故障控制力就非常強(qiáng)。舉個(gè)例子,比如淘寶因?yàn)槟軌蜃龅疆惖囟嗷?,并且流量是可以隨時(shí)切換的,所以對(duì)于我們來(lái)講,如果一地出現(xiàn)故障,不管是什么原因,最容易的解決方案,就是把這一地的流量全部切走。這樣可以把故障控制在一分鐘以內(nèi),整個(gè)可用性是非常高的。關(guān)于系統(tǒng)的容災(zāi)能力,國(guó)家也有一個(gè)標(biāo)準(zhǔn),最重要的一點(diǎn)就是故障的恢復(fù)時(shí)間。如果大家都以故障恢復(fù)時(shí)間控制到哪個(gè)級(jí)別來(lái)衡量,那所有網(wǎng)站就有了一套標(biāo)準(zhǔn)。

InfoQ:好的,異地多活我們就聊到這里。您現(xiàn)在在維護(hù)一個(gè)叫做HelloJava的微信公共帳號(hào),您在工作中還是會(huì)去調(diào)優(yōu)一些具體的Java問(wèn)題嗎?

畢玄:沒(méi)錯(cuò)。我在阿里巴巴這些年來(lái),很多問(wèn)題有一些會(huì)流轉(zhuǎn)到我這里,或者有人會(huì)反饋到我這里,所以我會(huì)介入到很多問(wèn)題的排查,現(xiàn)在也是一樣,有些問(wèn)題我可能就會(huì)介入,直接去排查。為什么有HelloJava那個(gè)微信公共賬號(hào)呢?最大的原因也是因?yàn)?,我們都知道很多人?huì)排查故障,有些人可能只是一眼掃過(guò)去就已經(jīng)知道原因是什么。為什么呢?他可能已經(jīng)排查過(guò)很多的故障,積累出了經(jīng)驗(yàn),并不一定是這個(gè)人的能力比你強(qiáng),可能就是因?yàn)樗?jiàn)的比你多,他對(duì)工具使用的熟悉程度比你強(qiáng)。比如說(shuō)我們看到故障很多,排查故障很厲害的人,他可能就是會(huì)善于用各種各樣的工具,而且用的非常熟練。所以我做自己的HelloJava,就是希望有更多的人看到,我們?cè)诿鎸?duì)一個(gè)故障的時(shí)候是怎樣處理的。希望大家即使沒(méi)有處理過(guò)這個(gè)故障,至少也看過(guò)一篇文章,也許在下次面對(duì)這個(gè)故障時(shí),至少有點(diǎn)思路,知道應(yīng)該怎么去處理。這個(gè)也是阿里巴巴分享給外面的一些經(jīng)驗(yàn),很多時(shí)候就是經(jīng)驗(yàn)的積累。

InfoQ:您最近在HelloJava里提到了一些期待的Java特性,您這邊會(huì)將它們反饋給Oracle,讓他們加入嗎?

畢玄:我們跟Oracle官方有過(guò)一些交流,談到我們期望的JVM的一些改進(jìn)。但是說(shuō)實(shí)話,因?yàn)槲覀兛吹降暮芏郕VM的問(wèn)題,可能是因?yàn)槲覀兞髁勘容^大,我們對(duì)Java的性能、高并發(fā)有很高的期望。如果能夠突破一點(diǎn),對(duì)于我們整個(gè)網(wǎng)站來(lái)講,提升可能就是巨大的。但是對(duì)于Oracle來(lái)講,因?yàn)镺penJDK不僅僅是為大公司做的,而是為所有不同的用戶,比如中小企業(yè)、大用戶,所以他們必須衡量需求的分布。所以有可能我們的需求,對(duì)于Orcale的官方JVM團(tuán)隊(duì)而言,只是小眾需求,他們不大會(huì)投入很大精力去做。

InfoQ:所以您這邊的團(tuán)隊(duì)會(huì)做一些定制?

畢玄:對(duì)。很多人知道,趙海平加入了我們的團(tuán)隊(duì),如果知道他背景的話,知道他以前做過(guò)PHP運(yùn)行引擎的開放,不僅僅是HipHop的翻譯,還包括怎么運(yùn)行整個(gè)PHP應(yīng)用程序。其實(shí)你可以認(rèn)為也會(huì)類似VM,因?yàn)槲覀円呀?jīng)看到在Java、JVM的哪些點(diǎn)上如果有突破,可以給我們帶來(lái)巨大提升,所以既然官方很難往前推進(jìn),那我們就自己來(lái)推進(jìn)。另外趙海平在Facebook做過(guò)一套很完善的Profiling系統(tǒng),他加入阿里巴巴之后,我們也會(huì)做一套。

喜歡小編輕輕點(diǎn)個(gè)關(guān)系哦!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容