嘉賓 | 張俊傑
編輯 | 薛梁
Shopee 是東南亞領航電商平台,業務範圍覆蓋新加坡、馬來西亞、菲律賓、泰國、越南、巴西等十余個市場。作爲一個電商平台,商品系統處理著百億級商品和百萬級的並發,這對服務器資源提出了巨大的需求。
即將在 6 月 14-15 日深圳召開的 ArchSummit 架構師峰會上,來自 Shopee 的商品系統的 Team Leader 張俊傑會分享 Shopee 是如何基于成本優先的原則去思考和應對海量商品系統帶來的挑戰並且成功節省下來千萬級(人民幣)的服務器成本。其中涉及到緩存的應對、存儲的應對等更多的應對措施。在會議召開前,我們采訪了張老師,提前介紹一些技術內容,讓更多的人能提前了解到張老師團隊在系統治理中的技術實踐情況。
![](http://image.uc.cn/s/wemedia/s/upload/2024/e10835a5df38fdb945d8f49780bd7198.jpg)
InfoQ:作爲 Shopee 商品系統的 Team Leader,您如何應對海量商品系統的挑戰?在這個過程中,您最大的收獲是什麽?
張俊傑:商品作爲電商平台的核心,我們必須應對不斷增長的商品數量和用戶浏覽量,同時確保系統的穩定性和高效性,在這個過程中,我們獲得了很多寶貴的經驗和成果。
在實踐中,最大的收獲就是保障了系統的穩定性同時實現了資源的合理利用。通過緩存和數據治理的方法,我們能夠在海量商品系統中提供更高效的服務,並降低資源成本。
我們發現這些經驗是可以應用到其他業務場景中的,因此,我們希望將這些寶貴的經驗與大家分享,爲業界創造更多的價值。
InfoQ:在處理百億級商品和百萬級並發的情況下,您提到了采取了一系列措施來降低服務器成本,能否詳細介紹一下這些措施的實施過程和效果?
張俊傑:當處理百億級商品和百萬級並發的情況時,降低服務器成本是一個關鍵問題。我們采取了一系列措施來應對這個挑戰,並取得了顯著的效果。
緩存在降低服務器負載和提升響應速度方面起著重要作用。我們首先進行了緩存技術的選型。爲了找到最適合我們業務需求的方案,我們對數據特征和流量規模進行了深入了解。通過性能驗證,我們嘗試了不同的緩存架構,並對其性能進行了評估和測試。最終,我們選擇了對我們業務最有效的緩存技術。接下來,我們結合業務特征對數據進行定制化處理。通過設置合適的緩存策略和優化緩存命中率等措施,我們成功實現了緩存使用率和命中率都大于 90% 的效果。甚至在大型促銷期間,這個數字還可以進一步提升。
接下來是存儲方面的措施。選型合適的存儲技術對于降低服務器成本至關重要。在選擇存儲技術時,我們充分考慮了數據量、訪問頻率、持久性和成本等因素。然而,在這次的經驗中,我們意識到通過重新審視數據的生命周期,我們可以進一步降低存儲成本。我們從業務角度重新定義了數據的生命周期,並針對不同生命周期階段的數據采用不同的存儲資源。通過這種做法,我們成功節省了 50% 的數據庫資源,從而大大降低了服務器成本。
這些措施的實施過程涉及到團隊的緊密合作和持續的實踐與優化。然而,通過我們的努力,取得了明顯的成果。我們不僅成功降低了服務器成本,還提升了系統的性能和穩定性。這些成果爲我們應對百億級商品和百萬級並發的挑戰提供了強有力的支持,並爲未來的業務發展奠定了堅實的基礎。
InfoQ:在您的演講提綱中,提到了緩存的應對策略,包括緩存利用率、預熱和多級緩存,這些策略是如何幫助 Shopee 應對高並發場景的?
張俊傑:在面對高並發的情況下,選擇使用數據庫還是緩存中間件是一個有趣的問題。事實上,這取決于不同業務的需求和成本優先原則。根據我們的經驗,緩存在高並發場景下更適合作爲中間件。
理想情況下,我們希望:
(1)將所有可能被訪問的數據都緩存起來,確保沒有緩存資源被浪費。
(2) 所有用戶的讀請求都能夠在緩存中命中,減輕數據庫的負載。
然而,實際情況是,內存的成本要比磁盤高得多。如果我們簡單地將所有數據都存放在緩存中,這將增加昂貴的服務器成本。
因此,在高並發場景中,我們需要著重考慮以下幾點優化策略:
(1)如何盡可能預測哪些數據會被頻繁訪問,提前將其緩存起來。
(2)如何充分利用緩存和服務的內存,使得緩存的數據能夠盡可能地滿足請求,減少對數據庫的訪問。
預熱是一種常用的策略,它可以在系統啓動前將一部分熱點數據加載到緩存中,提前准備好響應請求的數據,從而避免請求落到數據庫上。這樣可以加快響應速度並減輕數據庫負載。
另外,多級緩存也是一個有效的應對策略。通過使用不同級別、容量和訪問速度的緩存,我們可以更好地平衡成本和性能。將更熱點的數據放在更快速但容量較小的緩存中,而將其他熱點數據放在容量更大的緩存中,這樣可以更有效地利用緩存的資源,並提升系統整體性能。
總而言之,緩存的應對策略在高並發場景下發揮著重要作用。通過精心選擇緩存中間件、預熱數據和多級緩存配置,我們能夠在成本和性能之間尋找到一個平衡點,從而提升系統的穩定性和用戶體驗。
InfoQ:您提到了數據歸檔和冷熱分離等存儲方面的應對措施,這些措施是如何在海量存儲情況下幫助 Shopee 節約成本的?是否有具體的案例或數據可以分享?
張俊傑:舉個例子來說明,假設一個商品在 2 年前被賣家標記爲刪除,從那時起就沒有産生過銷量。在業務系統最初設計規則時,往往不會考慮到幾年後這些數據的處理方式,重點是先讓系統正常運行起來。隨著時間的推移和業務的發展,這些數據可能會擴散到多個關聯的數據實體,例如商品的圖片、視頻等。同時,數據可能也會被複制到其他地方,例如搜索引擎、數據分析平台等。
然而,當數據規模不斷膨脹後,我們可以重新審視數據的生命周期。在這個過程中,我們可能會發現一些意外的收獲,例如發現大約 1/3 或 1/2 的數據已經不會被正常訪問,或者一些數據可以用成本更低的介質進行存放。
因此,在 Shopee 的實踐中,我們進行了數據歸檔和冷熱分離的措施。通過數據歸檔,我們直接減少了數據庫的存儲需求。同時,由于數據總量減少,也同步減少了計算、網絡等資源的消耗,從而幫助我們節省了大量的服務器成本。通過數據歸檔和冷熱分離等技術手段,我們成功實現了對海量存儲進行成本優化的目標,爲公司節省了千萬。
InfoQ:在面對百億級數據和百萬級並發的系統時,除了堆機器,還有哪些方法可以降低成本同時保證性能?
張俊傑:首先,我們可以充分利用閑置的資源,例如內存或硬盤。系統中可能存在一些未被充分利用的資源,可以通過優化配置和使用合適的工具來發掘它們的潛力。這樣能夠降低成本,同時提升性能。
其次,找到無意義的資源占用並釋放。有時候,系統中可能存在一些流量是不應該從線上過來的,或者某些數據是不應該放在緩存中的。通過檢查和優化這些無意義的資源占用,可以釋放寶貴的資源,提高系統的效率。
另外,資源置換也是一個可行的方法。在可接受範圍內,我們可以犧牲一部分時間來換取更多的空間。這意味著我們可以通過一些策略來選擇性地犧牲一些性能,以換取更高效的資源利用。例如,可以對一些不常訪問的數據進行冷數據歸檔,或者將一些計算任務進行分布式處理,從而降低整體成本。
同時,我們還可以考慮使用存儲和計算資源的彈性擴展方案,例如雲計算服務。雲計算平台可以根據實際需求提供靈活的資源擴展和收縮,使我們能夠動態調整資源配置,根據業務負載的變化來控制成本和性能。
綜上所述,除了堆機器,還有很多方法可以降低成本同時保證系統的性能。充分利用閑置資源、釋放無意義的資源占用,資源置換以及考慮彈性擴展方案都是有效的策略。在實際應用中,我們可以結合具體業務需求和實際情況來選擇合適的優化措施。
InfoQ:您演講提到了緩存治理的經驗和百億級數據的數據歸檔策略,這些經驗在實踐中有哪些挑戰?您是如何克服這些挑戰的?
張俊傑:首先,跨團隊溝通困難是一個普遍存在的問題。不同團隊可能有不同的思考方式和關注點,因此在溝通時我們需要提前做好准備,站在雙方的視角上思考。我們發現使用簡單明了的資料和通用的語言有助于促進理解和達成共識。避免過多的專業術語,而是注重用通俗易懂的語言解釋和傳達想法,這可以幫助降低團隊之間的溝通障礙。
其次,方案驗證不理想是一個需要不斷試錯的過程。這意味著我們可能會面臨一些挫折和額外的成本,但也會帶來寶貴的經驗。爲了應對這個挑戰,我建議在方案驗證前提前確定不同驗證階段的變量,並做好風險預測和解決方案的准備。這樣,當出現問題時,我們能夠及時調整並采取相應的措施,保證方案的有效性和可行性。
此外,持續的監測和數據分析也是克服挑戰的關鍵。我們可以使用監控工具和數據分析技術來評估方案的效果,並根據反饋進行調整和優化。通過及時的數據反饋和叠代改進,我們能夠更好地解決問題,並確保所采取的策略始終符合實際需求。
總的來說,挑戰在實踐中是難免的,但我們可以通過准備充分的溝通、明確方案的驗證階段和變量,以及持續監測和數據分析來克服這些挑戰。重要的是從挑戰中吸取經驗教訓,不斷優化我們的方法和策略,以確保最終實現高效的緩存治理和數據歸檔策略。
InfoQ:在實踐過程中,您如何平衡業務需求和技術方案?有沒有遇到過特別棘手的情況,是如何解決的?
張俊傑:首先是溝通問題。在實踐過程中,經常會出現理解偏差或者溝通不暢的情況。爲了解決這個問題,我們采取了一些策略。首先,對于一些關鍵名詞和概念,我們進行了分類和闡釋,通過舉例子的方式進行解釋,確保大家在溝通中能夠達成共識。此外,每次溝通結束後,我們會進行概括性的總結,並通知所有相關人員,以確保大家都理解和接受最新的溝通內容。
其次是推進問題。在平衡業務需求和技術方案的實施過程中,可能會遇到推進困難的情況。爲了解決這個問題,我們采用了明確的任務分配和時間管理。每一次對齊之後,我們會明確確定待辦事項、負責人和截止時間,並在需要的情況下確定下一次對齊的時間。這樣,我們能夠更好地推動工作的進展,確保項目按計劃順利進行。
InfoQ:您提到的成本優先原則是如何貫徹到具體的技術決策中的?在技術決策中,如何權衡成本與性能之間的關系?
張俊傑:在貫徹成本優先原則到具體的技術決策中,我們需要考慮成本、收益和風險等多個維度進行權衡。讓我解釋一下在技術決策中如何平衡成本與性能之間的關系。
我們需要明確約束條件和目標。了解項目中的約束條件,包括時間、資源和技術限制,同時明確項目的目標和優先級。這樣我們可以清楚地知道在哪些細項上需要優化成本,以及各項優化的優先級。在技術方案的選擇上,我們要考慮每個選項的成本、風險、收益和與項目目標的匹配度。評估不同方案的實施成本,包括開發成本、維護成本和資源消耗等,同時考慮風險因素,如技術可行性、兼容性等。與此同時,我們也要衡量每個方案帶來的收益,包括性能提升、用戶體驗改善和業務需求滿足程度等。我們把成本視爲一個重要的指標,在收益和風險可接受的範圍內,盡量選擇低成本的方案。這不僅可以節約資源和預算,還可以確保項目在限制條件下的順利進行。但是同時要注意的是,技術決策並不只關注成本,也要綜合考慮性能、質量和用戶體驗等因素,確保系統的穩定性和用戶滿意度。InfoQ:隨著技術的不斷演進,您認爲未來在處理海量數據和高並發系統方面會出現哪些新的挑戰?您預測未來的應對措施會有何變化?
張俊傑:首先,在處理海量數據的方面,未來可能會面臨數據增長速度難以控制的問題。智能化工具的普及將帶來大量的數據,維護和處理這些數據可能會變得更加困難。爲了應對這個挑戰,我們可以考慮采用智能化的手段來處理增量數據。例如,在數據創建的過程中,系統可以識別出無價值的數據,避免産生無效的數據,從而減少數據處理和存儲的壓力。
其次,在面對高並發系統的挑戰時,未來的交互模式改革可能導致用戶更多、更快地浏覽數據,進而增加了系統的壓力。爲了解決這個問題,我們需要更加注重系統的計算和存儲資源,確保系統能夠處理高並發的請求。在應對挑戰時,我們仍然需要遵循成本優先的原則,思考並采取適當的技術和架構來應對需求。
最後,我們應該持續關注和探索新技術,因爲技術的演進是不斷的。尋找更適合的技術架構和解決方案可以幫助我們更好地應對未來的挑戰。這意味著我們需要保持學習和創新的態度,並與技術社區保持緊密聯系,以了解最新的技術趨勢和最佳實踐。
InfoQ:最後,您能否分享一些在處理海量商品系統的過程中,尤其是在節約成本方面的經驗教訓?您覺得其他電商平台或者技術團隊可以從中學到什麽?
張俊傑:在處理海量商品系統,並尤其是在節約成本方面,我們總結了一些經驗教訓:
(1)溝通是非常重要的。在處理海量商品系統時,確保相關人員之間對概念和問題有清晰的定義和分類非常關鍵。通過明確的溝通,可以減少誤解和錯誤,從而降低溝通成本。建立一個良好的溝通渠道和流程,可以幫助大家高效地協作。
(2)要意識到資源的約束是客觀存在的。在處理海量商品系統時,資源如服務器容量、帶寬等是有限的,必須合理利用這些資源。同時,也要注意業務規則的定義。在優化成本方面,要尋求最佳資源利用的方式。
(3)多參考業界的案例分享也是很有益處的。了解其他電商平台或技術團隊在處理海量數據系統時所采取的實踐和經驗,可以幫助我們避免重複嘗試和試錯,從而減少額外的成本。通過學習他人的成功案例和挑戰,我們可以更快地尋找到適合自己業務需求的解決方案。
總的來說,在處理海量商品系統時,節約成本是一個重要的考慮因素。通過清晰的溝通、合理利用資源以及借鑒業界的經驗,我們可以降低成本並提高效率。通過這些經驗教訓,其他電商平台或技術團隊可以了解如何更好地應對成本挑戰,優化業務運營並提升用戶體驗。
活動推薦
將在 6 月 14-15 日舉辦的深圳 ArchSummit 架構師峰會上,胡月軍和劉超老師出品的專題,將邀請 vivo、天翼雲、網易、火山引擎、eBay、貨拉拉、Uber 的專家來分享各自在大模型算力、AI & Data 結合方面的實踐話題,感興趣的可以點擊 查看會議詳細的議題內容。目前會議門票售價 9 折期間,購票人數越多優惠力度越大,歡迎來現場和演講嘉賓、同行交流。
![](http://image.uc.cn/s/wemedia/s/upload/2024/d6c4655ac977614d63fb4d745d1c4329.jpg)
原文鏈接:https://sourl.co/N98r6x