一句簡介:內存最大可存100萬,有一天能存300萬,再有一天儲900萬,再一天可存1800萬,直到3000萬!算法
記憶去年雙十一隻要當天當收件量超過1800萬以上,基本都會出現內存溢出的狀況,運維只能重啓後臺應用,重啓後巴槍需等待30~40分鐘緩存數據加載,無奈卻在勝仗關鍵時刻出叉子,不但影響分揀效率,且在工做壓力較大狀況下,場地人員也出現較大情緒!緩存
一、順豐接近擁有300箇中轉場,若需每臺服務器拆解更換內存條,費時費力;服務器
二、因服務器內存插槽有限,沒空閒插槽時,只能以捨棄現有4G換成8G方式進行,形成資源浪費; 運維
三、若是有些中轉場服務器較早期,內存擴展支持已到極限,須要更換服務器,形成成本費用則更高; 性能
四、假設全部服務器均有無限內存插槽和擴展支持,但在千萬數據量起步,吞吃內存胃口會增長几倍,甚至更多,不久後又要擴展; 優化
算法概述人工智能
一、對象類型的數據轉換字節類型的數據;spa
三、須要緩存的數據進行批量且快速壓縮處理;對象
四、更新緩存數據時,對壓縮數據斷點判斷與拼接;內存
五、請求緩存數據時,對數據定點標識與二叉樹快速查找;
流程圖如【圖1-1】所示:
一、2倍以上加載效率(數據量越大越明顯):jdk1.6,最大內存256,90萬數據;
A、舊算法時間截圖
B、新算法時間截圖
二、30倍內存優化(數據量越大越明顯):jdk1.6,最大內存256;
A、舊算法內存截圖,101萬時已經溢出
B、新算法內存截圖,3000萬正常
算法難點
一、數據段算法對殘缺數據、特殊數據、超長數據、一表多箇中轉場等容易丟數據狀況的拼接;
二、針對數據量較大時,對各類類型(long型、char型、String型等)轉換字節算法的性能要求較高;
一、 以習慣擴展硬件內存方式對比,省時省力省錢,只要伴隨正常版本的發佈,便可達到下降內存的使用。
二、在數據量較大時,不但內存節省,還提升的加載和提取的效率, 能使巴槍終端反應靈敏,同時負載更多巴槍;
三、在後續緩存結構程序,均可以使用本內存優化算法,有效達到無邊界效益反應,疊加節省更多的人力物力;