1. 程式人生 > >34、生鮮電商平臺-高併發的設計與架構

34、生鮮電商平臺-高併發的設計與架構

說明:原始碼下載Java開源生鮮電商平臺以及高併發的設計與架構文件

 

對於高併發的場景來說,比如電商類,o2o,門戶,等等網際網路類的專案,快取技術是Java專案中最常見的一種應用技術。然而,行業裡很多朋友對快取技術的瞭解與掌握,僅僅停留在掌握redis/memcached等快取技術的基礎使用,最多瞭解一些叢集相關的知識,大部分人都可以對快取技術掌握到這個程度。然而,僅僅對快取相關的技術掌握到這種程度,無論是對於開發複雜的高併發系統,或者是在往Java高階工程師、Java資深工程師、Java架構師這些高階的職位發展的過程中,都是完全不夠用的。技術成長出現瓶頸,在自己公司的專案中,沒有任何高併發與高可用的挑戰性專案,自己不知道如何成長,自己也不知道如何讓自己的技術更上一層樓。這成為了很多同學的職業發展的困惑。
 
同樣的,高可用相關的技術以及架構,對於大型複雜的分散式系統,也是非常的重要。高可用架構中,非常重要的一個環節,就是如何將分散式系統中的各個服務打造成高可用的服務,足以應對分散式系統中各種各樣的異常問題,比如服務間呼叫超時或者失敗。這就涉及到了高可用分散式系統中的很多重要的技術,包括資源隔離,限流與過載保護,熔斷,優雅降級,容錯,超時控制,監控運維,等等。而行業中相當比例的同學,對高可用系統架構以及相關的技術,幾乎沒有太多的瞭解。同時也成為了你設計一個複雜的高可用系統架構,包括面試高階的Java職位時的一個重要的阻礙。
 
相信很多朋友都會有這種感覺,自己的技術不知道如何成長,在公司裡遇到複雜的業務場景時,瞬間又覺得自己的技術儲備完全不夠用。或者是在面試的時候發現自己沒有任何的優勢。雖然瞭解redis/memcached,ActiveMQ,nginx負載均衡等技術,但是瞭解這些技術就能讓你有技術競爭力嗎?掌握這些技術就足夠你解決各種複雜系統中的高併發與高可用挑戰嗎?掌握這些技術在Java高階職位的面試中,就能讓你擁有屬於自己的技術亮點嗎?答案似乎都是否定的。

1、億級流量電商網站的商品詳情頁系統架構
 
面臨難題:對於每天上億流量,擁有上億頁面的大型電商網站來說,能夠支撐高併發訪問,同時能夠秒級讓最新模板生效的商品詳情頁系統的架構是如何設計的?
解決方案:非同步多級快取架構+nginx本地化快取+動態模板渲染的架構
 
2、redis企業級叢集架構
 
面臨難題:如何讓redis叢集支撐幾十萬QPS高併發+99.99%高可用+TB級海量資料+企業級資料備份與恢復?
解決方案:redis的企業級備份恢復方案+複製架構+讀寫分離+哨兵架構+redis cluster叢集部署
 
3、多級快取架構設計
 
面臨難題:如何將快取架構設計的能夠支撐高效能以及高併發到極致?同時還要給快取架構最後的一個安全保護層?
解決方案:nginx抗熱點資料+redis抗大規模離線請求+ehcache抗redis崩潰的三級快取架構
 
4、資料庫+快取雙寫一致性解決方案
 
面臨難題:高併發場景下,如何解決資料庫與快取雙寫的時候資料不一致的情況?
解決方案:非同步佇列序列化的資料庫+快取雙寫一致性解決方案
 
5、快取維度化拆分解決方案
 
面臨難題:如何解決大value快取的全量更新效率低下問題?
解決方案:商品快取資料的維度化拆分解決方案
 
6、快取命中率提升解決方案
 
面臨難題:如何將快取命中率提升到極致?
解決方案:雙層nginx部署架構+lua指令碼實現一致性hash流量分發策略
 
7、快取併發重建衝突解決方案
 
面臨難題:如何解決高併發場景下,快取重建時的分散式併發重建的衝突問題?
解決方案:基於zookeeper分散式鎖的快取併發重建衝突解決方案
 
8、快取預熱解決方案
 
面臨難題:如何解決高併發場景下,快取冷啟動導致MySQL負載過高,甚至瞬間被打死的問題?
解決方案:基於storm實時統計熱資料的分散式快速快取預熱解決方案
 
9、熱點快取自動降級方案
 
面臨難題:如何解決熱點快取導致單機器負載瞬間超高?
解決方案:基於storm的實時熱點發現+毫秒級的實時熱點快取負載均衡降級
 
10、高可用分散式系統架構設計
 
面臨難題:如何解決分散式系統中的服務高可用問題?避免多層服務依賴因為少量故障導致系統崩潰?
解決方案:基於hystrix的高可用快取服務,資源隔離+限流+降級+熔斷+超時控制
 
11、複雜的高可用分散式系統架構設計
 
面臨難題:如何針對複雜的分散式系統將其中的服務設計為高可用架構?
解決方案:基於hystrix的容錯+多級降級+手動降級+生產環境引數優化經驗+視覺化運維與監控
 
12、快取雪崩解決方案
 
面臨難題:如何解決恐怖的快取雪崩問題?避免給公司帶來巨大的經濟損失?
解決方案:全網獨家的事前+事中+事後三層次完美快取雪崩解決方案
 
13、快取穿透解決方案
 
面臨難題:如何解決高併發場景下的快取穿透問題?避免給MySQL帶來過大的壓力?
解決方案:快取穿透解決方案
 
14、快取失效解決方案
 
面臨難題:如何解決高併發場景下的快取失效問題?避免給redis叢集帶來過大的壓力?
解決方案:基於隨機過期時間的快取失效解決方案

 

轉載自-- https://www.cnblogs.com/jurendage/p/9159020.html