電商項目解決高併發的問題的策略淺談

前言:html

       在項目中解決高併發並不是解決其中的某一個環節或點,而是全方位的,系統性的從客戶發起請求,請求處理,服務調用,數據訪問層層優化,解決高併發。 前端

1.系統硬件linux

    提高服務器性能。nginx

    1.1 增長內存容量;web

    1.2 更換硬盤;redis

    1.3 升級處理器;數據庫

2.系統軟件(架構方向)後端

    2.1.前端請求到服務器-------反向代理服務器(如nginx),瀏覽器

       2.1.1 反向代理 緩存

      攔截無效的客戶請求、惡意請求等,可參考:nginx網絡服務器上如何阻止特定用戶代理(UA)http://linux.cn/article-5487-1.html;

       2.1.2 訪問靜態資源,作緩存 

       反向代理服務器不但能夠攔截指定的請求,還可以經過配置緩衝功能能夠緩存真實Web服務器上的某些靜態資源,減輕真實Web服務器的負載壓力,能夠在反向代理的服務器上緩存某些靜態資源,這樣的話在反向代理服務器上存在的資源就不用去web服務器上獲取,以減輕web服務器的壓力。

       在該環節中咱們採用了freemarker技術,實現網頁靜態化,進而實現上述功能,來提升併發。另外,前端請求咱們能夠採用get請求的方法,實現一些靜態資源緩存在瀏覽器端,避免了用戶重複刷新形成的惡意訪問。

       NGINX反向代理緩存配置https://blog.csdn.net/lmy_1/article/details/52791275;

       2.1.2 負載均衡

       網站前期使用了nginx代理一臺後端服務器,隨着網站流量的增多,一臺後端服務器沒法知足需求的時候,須要配置服務器集羣,這時就須要負載均衡配置。負載均衡配置配置策略默認是輪詢,輪詢策略要求集羣中的各服務器性能要一致,同木桶原理;對於性能不一致的,能夠配置權重策略。

      負載均衡策略轉至https://blog.csdn.net/poisx/article/details/78985010;

    2.2  調用服務---------dubbox分佈式服務架構以及消息中間件MQ (activeMQ)

    2.3  數據訪問----------redis作緩存以及數據庫分庫 

小結:

互聯網正在高速發展,使用互聯網服務的用戶越多,高併發的場景也變得愈來愈多。電商秒殺和搶購,是兩個比較典型的互聯網高併發場景。雖然咱們解決問題的具體技術方案可能千差萬別,可是遇到的挑戰倒是類似的,所以解決問題的思路也殊途同歸。

我的整理併發解決方案。

     a.應用層面:讀寫分離、緩存、隊列、集羣、令牌、系統拆分、隔離、系統升級(可水平擴容方向)。

     b.時間換空間:下降單次請求時間,這樣在單位時間內系統併發就會提高。

     c.空間換時間:拉長總體處理業務時間,換取後臺系統容量空間。

相關文章
相關標籤/搜索