讀《當當網系統分級與海量資訊動態發布實踐》有感

2022-08-12 21:00:24 字數 1671 閱讀 5034

這週就暫停一段對微博的研究,最近我買了很多書,也經常瀏覽當當網,所以就看到了這篇文章。

當當網自成立以來,內部技術體系的發展已經有15年左右的歷史了。系統架構也經歷了從高度整合的軟體向分布式、低耦合、soa化系統的演進過程,形成全面支援網上零售業各種業態模式的系統架構,每天支撐著千萬級的pv訪問,承載了超過100億元人民幣的年營業額,2023年雙11峰值流量達到日常的10倍。

作為乙個典型的自營與開放平台相結合的網上零售電子商務平台,當當網網上購物流程由多達上百個大小系統共同實現。當當網最終服務於消費者,良好的使用者體驗、錢物準確是立足的根本,因此對系統穩定性、可靠性、準確性有非常嚴格的要求。任何時候都能保證線上系統的穩定執行,是我們工作的第一優先順序。電商系統的執行峰值通常出現在各類**、營銷活動期間,以及大量集中收訂的訂單帶來很大的生產和配送壓力時。

因流量**的不同,相應使用者的瀏覽、購物模式也大有不同。如很多**落地頁是當當網的「館」,或者專題頁,那麼我們可以在活動之前做非常有針對性的準備;有時使用者已提前準備好了購物清單,如雙11這樣的**中,訂單轉化率會比平時高,體現在訂單收訂和賣場流量不會成比例**——如訂單收訂**6倍,賣場流量可能只會漲3~4倍;而一些外部引流方式會帶來大量無效、垃圾流量,所以訂單轉化率會比正常流量低。

有的活動流量會對首頁有較大影響;有的活動會對購物車有較大影響,如閃購類的限時購買或複雜的**邏輯;有的活動會對當當網的倉儲、配送系統有較大影響,如當當網配送的訂單;有的活動會對開放平台有較大影響,如商家訂單。

因此,摸清業務模式和活動特點,是設計和運維高峰值電商系統,即高伸縮性系統的重中之重。但從另乙個角度來說,在沒有動態彈性部署的前提下,過度的設計和伺服器部署是一種浪費,特別是硬體非常有限的壽命會帶來每年巨大的成本攤銷。當當網根據業務發展速度和業務運營規律,結合多年的經驗,制定的系統伸縮性的設計原則和硬體常備策略使各流程能夠直接應對日常5倍業務量的**。通過增加伺服器的方式,能夠應對10倍業務量**。而如果要應對10倍以上的**,則需要提前做有針對性的系統優化。但無論當前承受的業務量是否超過了設計範圍,都不能影響設計範圍內業務量的正常處理。

設計和部署大流量、高併發系統的技術方案選擇比較多,業內有很多成功經驗和案例。但根據我們的經驗,設計高峰值的網上零售業電商應用系統通常要面對以下幾大難點。應用架構複雜,業務發展快,迭代速度快,各系統之間盤根錯節,歷史包袱重。不僅有牽一髮而動全身的風險,更有邊緣case出錯影響主流程處理、耗盡過多資源的隱患。

從前台到後台的業務流程長,用例多。在能承受的最大峰值上,存在短板效應。設計實現時要面面俱到。

通常**活動的持續時間短而集中,前期推廣活動已經啟動,在活動期間,短暫的系統不可用,也會帶來慘重的銷售損失與負面影響,沒有亡羊補牢的機會。要確保系統的穩定性,平時的工作就要做足。

針對這幾大難點,有以下幾大應對策略。基於soa架構理念,降低系統耦合性,介面定義清晰明確,保證獨立子系統的健壯性高,降低故障跨系統擴散風險,從而將伸縮性的困難逐步分解到各個系統。對系統進行分級,集中力量,突出重點系統。當當網從賣場到交易流程均屬於一級系統,這部分系統直接關乎使用者體驗和訂單量。在系統穩定性和可靠性等指標上,設計標準高於後台系統。

優先考慮用非同步處理代替同步處理,做好系統異常的降級方案,保證有限的合格服務。

當當網技術團隊經過多年的沉澱,積累了大量處理電商業務峰值的經驗。通過深入分析應用場景,對系統進行分級,soa化完成系統解耦,並採用多種技術手段實現海量資料的高效處理發布,不斷提公升系統吞吐能力,確保為使用者提供穩定友好的購物服務體驗,充分體現技術力量在產業中的重要作用。

2013 1 14當當網筆試歸來

1.以下電子商務都是什麼型別 當當網,京東,2.以下http各個狀態是什麼含義 200 403 404 503 301 303 3.寫出5個常用的linux命令,並解釋含義 4.說說記憶體洩露和記憶體溢位是什麼含義,區別是什麼 5.在本區域網內操作 ping 沒有用到什麼協議 選項dns tcp 6...

當當網 sharding jdbc學習參考資料

噹噹開源sharding jdbc,輕量級資料庫分庫分表中介軟體 分表分庫中介軟體 sharding jdbc 學習sharding jdbc 之spring mybatis sharding jdbc整合 學習dangdang的分庫分表擴充套件框架sharding jdbc 一 解讀分庫分表中介軟...

爬蟲爬取當當網書籍

初學者學習爬蟲爬取當當網會比較容易,因為噹噹沒有反爬蟲import requests from lxml import html name input 請輸入要搜尋書籍的資訊 1.準備url url format name start 1 while true print start start 1...