有別于社交網(wǎng)絡(luò)垃帅、搜索和游戲等網(wǎng)站,電商網(wǎng)站的用戶流量具有操作性強(qiáng)剪勿、隨時(shí)令變化等特點(diǎn)贸诚。高流量、高并發(fā)情況下厕吉,如何保證整個(gè)系統(tǒng)的可靠性和穩(wěn)定性赦颇,是眾多電商企業(yè)研發(fā)團(tuán)隊(duì)都在思考的問(wèn)題。
高流量赴涵、高并發(fā)情況下媒怯,如何保證整個(gè)系統(tǒng)的可靠性和穩(wěn)定性,是眾多電商企業(yè)研發(fā)團(tuán)隊(duì)都在思考的問(wèn)題髓窜。為了盡量緩解峰值帶來(lái)的壓力扇苞,京東峰值系統(tǒng)的設(shè)計(jì)主要從性能提升欺殿、流量控制、災(zāi)備降級(jí)鳖敷、壓測(cè)預(yù)案四個(gè)角度來(lái)進(jìn)行脖苏。
有別于社交網(wǎng)絡(luò)、搜索和游戲等網(wǎng)站定踱,電商網(wǎng)站的用戶流量具有操作性強(qiáng)棍潘、隨時(shí)令變化等特點(diǎn)。在歐美國(guó)家崖媚,Black
Friday和Cyber
Monday標(biāo)志著節(jié)假日消費(fèi)的高峰亦歉。影響電商流量峰值的主要因素是搶購(gòu)、促銷和惡意攻擊畅哑,尤其是京東618店慶和雙11等大規(guī)模的促銷活動(dòng)肴楷。高流量、高并發(fā)情況下荠呐,如何保證整個(gè)系統(tǒng)的可靠性和穩(wěn)定性赛蔫,是眾多電商企業(yè)研發(fā)團(tuán)隊(duì)都在思考的問(wèn)題。
京東電商系統(tǒng)的設(shè)計(jì)是圍繞系統(tǒng)穩(wěn)定性泥张、可靠性呵恢、高并發(fā)和可擴(kuò)展性為核心開(kāi)展的。如何在峰值來(lái)臨時(shí)媚创,保證用戶有平滑流暢的體驗(yàn)瑰剃,且系統(tǒng)不會(huì)出現(xiàn)異常呢?我們先來(lái)看看京東系統(tǒng)的一些特點(diǎn)(圖1)。
圖1 系統(tǒng)架構(gòu)龐大復(fù)雜
京東的業(yè)務(wù)種類繁多筝野,涉及SKU幾千萬(wàn)種,這使得系統(tǒng)龐大粤剧,外部需要對(duì)接供應(yīng)商歇竟、消費(fèi)者和第三方商家三大板塊。內(nèi)部系統(tǒng)包括了商品供應(yīng)鏈中除商品設(shè)計(jì)和生產(chǎn)外的幾乎所有環(huán)節(jié)抵恋,包括登錄焕议、交易、后臺(tái)弧关、供應(yīng)鏈盅安、倉(cāng)配、客服等世囊。所有這些涉及大小系統(tǒng)幾千個(gè)别瞭,造就了一個(gè)極其復(fù)雜龐大的體系。除此之外株憾,京東系統(tǒng)交互強(qiáng)蝙寨,各個(gè)功能模塊之間關(guān)聯(lián)性強(qiáng)晒衩,牽一發(fā)而動(dòng)全身,做任何修改都需要慎之又慎墙歪。因此听系,一切優(yōu)化方案都以保持系統(tǒng)穩(wěn)定為前提。
為了在復(fù)雜的系統(tǒng)基礎(chǔ)之上虹菲,盡量緩解峰值帶來(lái)的壓力靠胜,京東峰值系統(tǒng)的設(shè)計(jì)主要從性能提升、流量控制毕源、災(zāi)備降級(jí)浪漠、壓測(cè)預(yù)案四個(gè)角度來(lái)進(jìn)行。
性能提升
1.切分業(yè)務(wù)系統(tǒng)
我們先將整個(gè)業(yè)務(wù)體系拆分為幾個(gè)相對(duì)獨(dú)立的子系統(tǒng)如SSO脑豹、交易平臺(tái)郑藏、POP平臺(tái)、訂單下傳系統(tǒng)瘩欺、WMS和倉(cāng)儲(chǔ)配送(圖2)必盖。每個(gè)子系統(tǒng)又可細(xì)分為若干部分,逐級(jí)簡(jiǎn)化俱饿,直至可操作可優(yōu)化的層級(jí)歌粥。例如,交易平臺(tái)包括價(jià)格拍埠、購(gòu)物車(chē)失驶、結(jié)算、支付和訂單中心等;網(wǎng)站系統(tǒng)包括首頁(yè)枣购、登錄嬉探、列表頻道、單品和搜索等棉圈。接下來(lái)涩堤,針對(duì)每個(gè)功能模塊的關(guān)鍵部分進(jìn)行切分,有針對(duì)性地做性能優(yōu)化分瘾。
圖2 業(yè)務(wù)切分方案
例如胎围,交易的秒殺系統(tǒng),原來(lái)是根植于普通交易系統(tǒng)之內(nèi)的德召,缺點(diǎn)非常明顯白魂。當(dāng)流量突然增大時(shí),不僅會(huì)導(dǎo)致秒殺系統(tǒng)反應(yīng)遲鈍上岗,而且會(huì)影響普通交易系統(tǒng)的正常運(yùn)作福荸。于是我們將其與其他業(yè)務(wù)系統(tǒng)物理分開(kāi),成為相對(duì)獨(dú)立的子系統(tǒng)肴掷。并且針對(duì)秒殺的特性逞姿,減少對(duì)后臺(tái)存儲(chǔ)的依賴辞嗡。同時(shí)優(yōu)化中間層存儲(chǔ)機(jī)制,使得相對(duì)熱點(diǎn)分散部署滞造。甚至支持單一SKU多點(diǎn)部署脑慧,從而大大提升了秒殺系統(tǒng)的吞吐量和可靠性个少。
2.分布式
分布式的交易系統(tǒng)是電商的未來(lái)。分布式系統(tǒng)解決兩大難題:提高用戶體驗(yàn)和增強(qiáng)容錯(cuò)能力。由于分布式系統(tǒng)設(shè)計(jì)時(shí)就會(huì)留有相當(dāng)?shù)牧髁吭鲩L(zhǎng)空間雪猪,所以當(dāng)一處數(shù)據(jù)中心飽和時(shí)谅畅,可以將其余的流量切入其他相對(duì)寬松的數(shù)據(jù)中心去胚迫,從而達(dá)到互為備份贾铝、互相支持的目的。與此同時(shí)始绍,由于為提供用戶就近服務(wù)瞳购,所以減少了網(wǎng)絡(luò)延時(shí),頁(yè)面反應(yīng)速度加快了亏推。舉一個(gè)例子学赛,Google搜索是全球服務(wù),歐亞美各地都有不同的IP提供服務(wù)吞杭。當(dāng)其中的某一個(gè)IP出現(xiàn)故障時(shí)盏浇,Google能夠從容地將其服務(wù)切換至最近的IP,繼續(xù)搜索服務(wù)芽狗。對(duì)于電商來(lái)說(shuō)绢掰,情況更復(fù)雜一些,需要同步的數(shù)據(jù)要求更精確童擎,數(shù)據(jù)量較大滴劲,對(duì)延時(shí)的容忍度更低,建設(shè)周期也就更長(zhǎng)顾复。京東正在此方面著力改進(jìn)班挖,從只讀的系統(tǒng)入手,一步一步實(shí)現(xiàn)系統(tǒng)的分布式捕透。
3.API服務(wù)化
在各個(gè)系統(tǒng)中,總是有很多相同的組件碴萧。前端的負(fù)載均衡自不必說(shuō)乙嘀,中間件的處理就是非常典型的例子。如何高效統(tǒng)一地管理這些組件破喻,API服務(wù)化是我們的答案虎谢。最好由一個(gè)訓(xùn)練有素的團(tuán)隊(duì)集中管理這些組件并對(duì)外提供接口服務(wù),將軟件的使用復(fù)雜性隱藏起來(lái)曹质,調(diào)用的是簡(jiǎn)單利索的API婴噩。讓專業(yè)人員去處理復(fù)雜邏輯擎场,確保系統(tǒng)的可用性和擴(kuò)展性,既能大大降低出錯(cuò)概率几莽,又能實(shí)現(xiàn)規(guī)模效益迅办。
Redis是我們常用的緩存組件。 過(guò)去都是由各個(gè)業(yè)務(wù)實(shí)現(xiàn)團(tuán)隊(duì)進(jìn)行分別維護(hù)章蚣,專業(yè)性不強(qiáng)站欺,使用多有不當(dāng)之處。后來(lái)我們進(jìn)行了集中管理纤垂,統(tǒng)一定制開(kāi)發(fā)新功能和升級(jí)矾策,并通過(guò)API服務(wù)化提供給各級(jí)用戶。這樣不僅豐富了應(yīng)用場(chǎng)景峭沦,還提升了性能和可靠性贾虽。
4.架構(gòu),代碼優(yōu)化
一個(gè)合理的電商系統(tǒng)架構(gòu)是與一家公司的研發(fā)水平和技術(shù)管理水平密不可分的吼鱼,這直接決定了可支撐峰值流量的多少和未來(lái)能達(dá)到的高度蓬豁。選取適合自身發(fā)展的框架,既能充分發(fā)揮其效能蛉抓,又可節(jié)約資源庆尘。代碼優(yōu)化也能提高效能,例如對(duì)于SQL語(yǔ)句的優(yōu)化巷送,能更好地利用索引;Java/C++邏輯的優(yōu)化驶忌,減少了不必要的循環(huán)和復(fù)雜的操作;算法優(yōu)化,使之更高效;功能實(shí)現(xiàn)邏輯的優(yōu)化笑跛,變得更簡(jiǎn)潔和清晰;等等付魔。但代碼優(yōu)化終究不能沖破極限,
難以追求極致飞蹂,適可為止為宜几苍。
5.系統(tǒng)虛擬彈性化
當(dāng)磁盤(pán)I/O不是瓶頸時(shí),解決系統(tǒng)水平擴(kuò)展就會(huì)變得容易許多陈哑∑薨樱可以通過(guò)ZooKeeper或類ZooKeeper將軟件棧有機(jī)地串聯(lián)起來(lái),并配以有效的性能監(jiān)管惊窖。當(dāng)事務(wù)處理成為瓶頸時(shí)刽宪,利用當(dāng)今流行的虛擬化技術(shù)(如LXC或VM)可以在沒(méi)有人為干預(yù)的狀況下自動(dòng)進(jìn)行彈性擴(kuò)展。
----------------------------------------------------------------------------------------------
閱讀更多好文界酒,請(qǐng)關(guān)注公眾號(hào):
新雨社