MK-商品上下架系統(tǒng)應(yīng)對

參考當(dāng)當(dāng)網(wǎng),京東,海爾等電商峰值策略,不考慮hadoop等高級框架,整理資料如下提供參考。

首先,設(shè)計和部署大流量、高并發(fā)系統(tǒng)的技術(shù)方案通常要面對以下幾大難點。
1. 應(yīng)用架構(gòu)復(fù)雜,業(yè)務(wù)發(fā)展快,迭代速度快,各系統(tǒng)之間盤根錯節(jié),歷史包袱重。不僅有牽一發(fā)而動全身的風(fēng)險,更有邊緣case出錯影響主流程處理、耗盡過多資源的隱患。
2. 從前臺到后臺的業(yè)務(wù)流程長,用例多。在能承受的最大峰值上,存在短板效應(yīng)。設(shè)計實現(xiàn)時要面面俱到。
3. 通常促銷活動的持續(xù)時間短而集中,前期推廣活動已經(jīng)啟動,在活動期間,短暫的系統(tǒng)不可用,也會帶來慘重的銷售損失與負(fù)面影響,沒有亡羊補(bǔ)牢的機(jī)會。要確保系統(tǒng)的穩(wěn)定性,平時的工作就要做足。
針對這些難點,有以下應(yīng)對策略。
1. 基于SOA架構(gòu)理念,降低系統(tǒng)耦合性,接口定義清晰明確,保證獨立子系統(tǒng)的健壯性高,降低故障跨系統(tǒng)擴(kuò)散風(fēng)險,從而將伸縮性的困難逐步分解到各個系統(tǒng)。
2. 對系統(tǒng)進(jìn)行分級,集中力量,突出重點系統(tǒng)。從賣場到交易流程均屬于一級系統(tǒng),這部分系統(tǒng)直接關(guān)乎用戶體驗和訂單量。在系統(tǒng)穩(wěn)定性和可靠性等指標(biāo)上,設(shè)計標(biāo)準(zhǔn)高于后臺系統(tǒng)。
3. 優(yōu)先考慮用異步處理代替同步處理,做好系統(tǒng)異常的降級方案,保證有限的合格服務(wù)。

前端頁面系統(tǒng)是電商業(yè)務(wù)的流量入口,需解決的核心問題是保證大流量高并發(fā)情況下的快速展示可用,這方面業(yè)界已有較為成熟的解決方案,如CDN、緩存、靜態(tài)化、異步加載、與依賴的數(shù)據(jù)源解耦、同機(jī)部署、數(shù)據(jù)庫讀寫分離等。通過這樣的設(shè)計使前端無狀態(tài)頁面應(yīng)用可以水平擴(kuò)展,增加Web服務(wù)器即可提升系統(tǒng)能力。

商品的關(guān)鍵數(shù)據(jù)包括商品基本信息、庫存和價格,庫存和價格都依賴于商品基本信息,對于不同類型的數(shù)據(jù),根據(jù)應(yīng)用場景區(qū)別對待。平臺化之后,每個商品都?xì)w屬于一個商家,以商家ID為維度進(jìn)行散列,將商品基本信息保存在數(shù)據(jù)庫中,支持水平擴(kuò)展,可以滿足商品數(shù)據(jù)不斷增長的需要。對于歷史版本的商品信息,則遷移至歷史版本庫,作為訂單交易快照供用戶查詢。庫存數(shù)據(jù)在前端展示只關(guān)注是否有貨,并不需要將每一次庫存變化同步,在庫存變?yōu)?或從0變?yōu)檎麛?shù)時觸發(fā)狀態(tài)同步,交易下單時實時查詢當(dāng)前庫存即可,此種變數(shù)量為狀態(tài)的方式極大地減少了同步數(shù)據(jù)量,提高了數(shù)據(jù)一致性。

即便已經(jīng)對不同類型的商品信息數(shù)據(jù)流進(jìn)行了差異化處理,仍然不能排除短時間內(nèi)會發(fā)生大量數(shù)據(jù)造成系統(tǒng)同步阻塞,影響正常業(yè)務(wù)運(yùn)營操作的及時發(fā)布。極端情況下,超出系統(tǒng)處理能力還可能導(dǎo)致系統(tǒng)崩潰。為解決此類問題,采用批量、異步、分流、限流等手段進(jìn)行處理。
批量、批次操作:
限制API調(diào)用頻次的同時,提供批量API供商家對商品信息進(jìn)行更新,批量更新方式減少了各環(huán)節(jié)交互次數(shù),提高了系統(tǒng)吞吐量,更好地貼合營銷活動中批量處理的需求。在系統(tǒng)內(nèi)部,批量方式能夠有效降低系統(tǒng)資源開銷,并能對頻繁更新的商品數(shù)據(jù)進(jìn)行合并處理,提高處理速度,使數(shù)據(jù)更新及時準(zhǔn)確。
增加異步處理,減少同步處理:
信息流同步經(jīng)過多個系統(tǒng),每個系統(tǒng)處理邏輯和吞吐能力不同,采用同步機(jī)制可能導(dǎo)致上游系統(tǒng)將下游系統(tǒng)拖垮,因此采用異步機(jī)制最為穩(wěn)妥。異步方式有兩點好處:一方面起到緩沖的作用,下游系統(tǒng)依據(jù)自身能力控制處理數(shù)據(jù)量,避免遭受超負(fù)荷的沖擊,保證系統(tǒng)穩(wěn)定運(yùn)行;另一方面實現(xiàn)系統(tǒng)隔離解耦,一旦下游系統(tǒng)出現(xiàn)異常,上游系統(tǒng)仍然能正常處理數(shù)據(jù),不至于引發(fā)連鎖反應(yīng)。
分流:
不同的信息對處理時效的要求也不同,庫存、價格、商品上下架狀態(tài)同步及時性要求很高,而商品基本信息,如名稱、副標(biāo)題、詳情則相對較低。拆分不同的同步路徑,對及時性要求高的數(shù)據(jù)配置更多的系統(tǒng)資源,既保障了敏感數(shù)據(jù)的及時性,又避免了數(shù)據(jù)積壓相互干擾。同理,針對三種不同的數(shù)據(jù)來源渠道(ERP、數(shù)字業(yè)務(wù)系統(tǒng)、開放平臺),也可通過分流方式保證自營實物、電子書和商家商品信息的及時同步。
限流:
多數(shù)的商品數(shù)據(jù)來源于商家,商家會通過一些第三方系統(tǒng)與開放平臺對接,調(diào)用API進(jìn)行數(shù)據(jù)同步。一些不合理的同步機(jī)制設(shè)置會頻繁發(fā)起大量的數(shù)據(jù)同步請求,而多數(shù)請求屬于無效數(shù)據(jù),這類數(shù)據(jù)難以識別,會浪費大量的系統(tǒng)資源,干擾有效數(shù)據(jù)的處理。在開放平臺對每個商家調(diào)用API的頻次進(jìn)行限制,根據(jù)商家商品數(shù)量合理分配,有效地抑制了無效數(shù)據(jù)的泛濫。

分布式:
分布式的交易系統(tǒng)是電商的未來。分布式系統(tǒng)解決兩大難題:提高用戶體驗和增強(qiáng)容錯能力。由于分布式系統(tǒng)設(shè)計時就會留有相當(dāng)?shù)牧髁吭鲩L空間,所以當(dāng)一處數(shù)據(jù)中心飽和時,可以將其余的流量切入其他相對寬松的數(shù)據(jù)中心去,從而達(dá)到互為備份、互相支持的目的。與此同時,由于為提供用戶就近服務(wù),所以減少了網(wǎng)絡(luò)延時,頁面反應(yīng)速度加快了。

邏輯優(yōu)化、算法優(yōu)化和代碼優(yōu)化:

1.優(yōu)化算法,選擇合適高效的算法,降低不必要的遞歸、循環(huán)、多層循環(huán)嵌套等計算。用簡單的算法完成大部分情況,不要為少數(shù)特例而將算法復(fù)雜化。特例由特殊的分支處理。
2.避免申請過多不必要的內(nèi)存開銷。
3.及時釋放資源,降低資源占用時間,包括內(nèi)存、I/O、網(wǎng)絡(luò)和數(shù)據(jù)庫等。
4.善用緩存:緩存常用的、不易變化的;偶有變化,可以考慮緩存依賴機(jī)制。
5.慎用數(shù)據(jù)庫鎖。
6.恰當(dāng)?shù)厥褂檬聞?wù),事務(wù)要細(xì)粒度。
7.選擇適當(dāng)?shù)耐ㄐ欧绞剑篠ocket、Remoting、Web Services(REST和SOAP)、WCF、 Named Pipes等,要特別注意長連接和短連接的恰當(dāng)使用。
8.計算并行化。
9.降低系統(tǒng)或模塊之間的通信次數(shù),例如工作流服務(wù)和數(shù)據(jù)庫服務(wù)。
10.降低系統(tǒng)或模塊之間的傳輸數(shù)據(jù)量,不必要傳輸?shù)牟粋骰蛏賯鳌?br>11.異步計算,降低等待時間。
12.考慮延遲加載和提前加載兩種方式。
13.分離原則:分離業(yè)務(wù)模塊,如分離大I/O模塊、分離高耗內(nèi)存模塊和分離高耗寬帶模塊。
14.統(tǒng)籌使用計算資源,如尋求內(nèi)存計算、數(shù)據(jù)庫計算和網(wǎng)絡(luò)開銷三者之間的最佳平衡。

最后,為了保障系統(tǒng)性能和伸縮性,不少時候需要犧牲或者完全拒絕某些功能,或者降低系統(tǒng)的靈活性和擴(kuò)展性等。

在數(shù)據(jù)庫層允許復(fù)雜的產(chǎn)品存儲結(jié)構(gòu)設(shè)計,以細(xì)粒度、深度優(yōu)化的關(guān)系模型充分實現(xiàn)產(chǎn)品數(shù)據(jù)模型的通用性、可擴(kuò)展性。在數(shù)據(jù)模型設(shè)計時完全不用關(guān)心客戶端檢索查找的復(fù)雜性和性能問題。

產(chǎn)品查詢引擎將復(fù)雜的數(shù)據(jù)存儲模型封裝成一個簡單的邏輯模型。這個邏輯模型實現(xiàn)的效果,完全等同于產(chǎn)品的所有屬性都存儲在同一張數(shù)據(jù)庫表中,邏輯模型的每 個屬性對應(yīng)數(shù)據(jù)庫表中的一個字段。在這個邏輯模型的基礎(chǔ)上實現(xiàn)了一個簡潔的DSL,供客戶端進(jìn)行檢索查詢。客戶端工作在邏輯模型和DSL之上,檢索查詢簡單、靈活,同樣完全不用關(guān)心產(chǎn)品數(shù)據(jù)存儲模型的復(fù)雜性和性能問題。

產(chǎn)品服務(wù)分不同集群進(jìn)行部署,面向Web應(yīng)用和其他服務(wù)的集群在運(yùn)行期間幾乎不會產(chǎn)生數(shù)據(jù)庫請求,因此不管網(wǎng)站訪問量和交易量多高,數(shù)據(jù)庫都不會產(chǎn)生壓力瓶頸。只需為Web和服務(wù)添加服務(wù)器,實現(xiàn)了高伸縮目標(biāo)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,967評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,273評論 3 415
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,870評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,742評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,527評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,010評論 1 322
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,108評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,250評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,769評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,656評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,853評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,371評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,103評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,472評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,717評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,487評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,815評論 2 372

推薦閱讀更多精彩內(nèi)容