資源描述:
《構建高并發(fā)高可用的電商平臺架構實踐》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、構建高并發(fā)高可用的電商平臺架構實踐?一、?設計理念??1.??????空間換時間1)??????多級緩存,靜態(tài)化客戶端頁面緩存(httpheader中包含Expires/CacheofControl,lastmodified(304,server不返回body,客戶端可以繼續(xù)用cache,減少流量),ETag)反向代理緩存應用端的緩存(memcache)內存數(shù)據(jù)庫Buffer、cache機制(數(shù)據(jù)庫,中間件等)2)??????索引哈希、B樹、倒排、bitmap哈希索引適合綜合數(shù)組的尋址和鏈表的插入特性,可以實現(xiàn)數(shù)據(jù)的快速存取。B樹索引適合于查詢?yōu)橹鲗У膱鼍?,避免多次的I
2、O,提高查詢的效率。倒排索引實現(xiàn)單詞到文檔映射關系的最佳實現(xiàn)方式和最有效的索引結構,廣泛用在搜索領域。Bitmap是一種非常簡潔快速的數(shù)據(jù)結構,他能同時使存儲空間和速度最優(yōu)化(而不必空間換時間),適合于海量數(shù)據(jù)的的計算場景。2.?????并行與分布式計算?1)??????任務切分、分而治之(MR)在大規(guī)模的數(shù)據(jù)中,數(shù)據(jù)存在一定的局部性的特征,利用局部性的原理將海量數(shù)據(jù)計算的問題分而治之。MR模型是無共享的架構,數(shù)據(jù)集分布至各個節(jié)點。處理時,每個節(jié)點就近讀取本地存儲的數(shù)據(jù)處理(map),將處理后的數(shù)據(jù)進行合并(combine)、排序(shuffleandsort)后再分發(fā)
3、(至reduce節(jié)點),避免了大量數(shù)據(jù)的傳輸,提高了處理效率。?2)??????多進程、多線程并行執(zhí)行(MPP)并行計算(ParallelComputing)是指同時使用多種計算資源解決計算問題的過程,是提高計算機系統(tǒng)計算速度和處理能力的一種有效手段。它的基本思想是用多個處理器/進程/線程來協(xié)同求解同一問題,即將被求解的問題分解成若干個部分,各部分均由一個獨立的處理機來并行計算。和MR的區(qū)別在于,它是基于問題分解的,而不是基于數(shù)據(jù)分解。3.??????多維度的可用1)??????負載均衡、容災、備份隨著平臺并發(fā)量的增大,需要擴容節(jié)點進行集群,利用負載均衡設備進行請求的分
4、發(fā);負載均衡設備通常在提供負載均衡的同時,也提供失效檢測功能;同時為了提高可用性,需要有容災備份,以防止節(jié)點宕機失效帶來的不可用問題;備份有在線的和離線備份,可以根據(jù)失效性要求的不同,進行選擇不同的備份策略。2)??????讀寫分離讀寫分離是對數(shù)據(jù)庫來講的,隨著系統(tǒng)并發(fā)量的增大,提高數(shù)據(jù)訪問可用性的一個重要手段就是寫數(shù)據(jù)和讀數(shù)據(jù)進行分離;當然在讀寫分離的同時,需要關注數(shù)據(jù)的一致性問題;對于一致性的問題,在分布式的系統(tǒng)CAP定量中,更多的關注于可用性。3)??????依賴關系平臺中各個模塊之間的關系盡量是低耦合的,可以通過相關的消息組件進行交互,能異步則異步,分清楚數(shù)據(jù)流
5、轉的主流程和副流程,主副是異步的,比如記錄日志可以是異步操作的,增加整個系統(tǒng)的可用性。當然在異步處理中,為了確保數(shù)據(jù)得到接收或者處理,往往需要確認機制(confirm、ack)。但是有些場景中,雖然請求已經得到處理,但是因其他原因(比如網絡不穩(wěn)定),確認消息沒有返回,那么這種情況下需要進行請求的重發(fā),對請求的處理設計因重發(fā)因素需要考慮冪等性。4)??????監(jiān)控監(jiān)控也是提高整個平臺可用性的一個重要手段,多平臺進行多個維度的監(jiān)控;模塊在運行時候是透明的,以達到運行期白盒化。4.??????伸縮1)??????拆分拆分包括對業(yè)務的拆分和對數(shù)據(jù)庫的拆分。系統(tǒng)的資源總是有限的,
6、一段比較長的業(yè)務執(zhí)行如果是一竿子執(zhí)行的方式,在大量并發(fā)的操作下,這種阻塞的方式,無法有效的及時釋放資源給其他進程執(zhí)行,這樣系統(tǒng)的吞吐量不高。需要把業(yè)務進行邏輯的分段,采用異步非阻塞的方式,提高系統(tǒng)的吞吐量。隨著數(shù)據(jù)量和并發(fā)量的增加,讀寫分離不能滿足系統(tǒng)并發(fā)性能的要求,需要對數(shù)據(jù)進行切分,包括對數(shù)據(jù)進行分庫和分表。這種分庫分表的方式,需要增加對數(shù)據(jù)的路由邏輯支持。2)??????無狀態(tài)對于系統(tǒng)的伸縮性而言,模塊最好是無狀態(tài)的,通過增加節(jié)點就可以提高整個的吞吐量。5.??????優(yōu)化資源利用1)??????系統(tǒng)容量有限系統(tǒng)的容量是有限的,承受的并發(fā)量也是有限的,在架構設計時
7、,一定需要考慮流量的控制,防止因意外攻擊或者瞬時并發(fā)量的沖擊導致系統(tǒng)崩潰。在設計時增加流控的措施,可考慮對請求進行排隊,超出預期的范圍,可以進行告警或者丟棄。2)??????原子操作與并發(fā)控制對于共享資源的訪問,為了防止沖突,需要進行并發(fā)的控制,同時有些交易需要有事務性來保證交易的一致性,所以在交易系統(tǒng)的設計時,需考慮原子操作和并發(fā)控制。保證并發(fā)控制一些常用高性能手段有,樂觀鎖、Latch、mutex、寫時復制、CAS等;多版本的并發(fā)控制MVCC通常是保證一致性的重要手段,這個在數(shù)據(jù)庫的設計中經常會用到。3)??????基于邏輯的不同,采