英特爾® 傲騰? 持久內(nèi)存是Intel在2019年發(fā)布的一款革命性的產(chǎn)品,英特爾® 傲騰? 持久內(nèi)存是一種全新的內(nèi)存類型,其架構(gòu)設(shè)計旨在從數(shù)據(jù)中心中汲取更多價值,重構(gòu)數(shù)據(jù)中心內(nèi)存/存儲層次結(jié)構(gòu)。不同于傳統(tǒng)的DRAM,英特爾® 傲騰? 持久內(nèi)存集大容量、經(jīng)濟性和持久性于一身,能夠支持數(shù)據(jù)中心多個應(yīng)用場景。浪潮基于英特爾® 傲騰? 持久內(nèi)存做了大量的應(yīng)用場景解決方案,覆蓋大數(shù)據(jù)分析、數(shù)據(jù)庫、云與虛擬化、分布式存儲等應(yīng)用場景。為了幫助用戶通過更加靈活的架構(gòu)來實現(xiàn)創(chuàng)新型的應(yīng)用,助力企業(yè)實現(xiàn)性能突破,浪潮發(fā)布了基于英特爾® 傲騰? 持久內(nèi)存技術(shù)的Redis應(yīng)用方案。
Redis是一個支持持久化的內(nèi)存數(shù)據(jù)庫,它不僅性能強勁,而且還具有復(fù)制特性以及為解決問題而生的獨一無二的數(shù)據(jù)模型。Redis提供了5種不同類型的數(shù)據(jù)結(jié)構(gòu),各式各樣的問題都可以很自然地映射到這些數(shù)據(jù)結(jié)構(gòu)上:Redis的數(shù)據(jù)結(jié)構(gòu)致力于幫助用戶解決問題,而不會像其他數(shù)據(jù)庫那樣,要求用戶扭曲問題來適應(yīng)數(shù)據(jù)庫。除此之外,通過復(fù)制、持久化(persistence)和客戶端分片(client-side sharding)等特性,用戶可以很方便地將Redis擴展成一個能夠包含數(shù)百GB數(shù)據(jù)、每秒處理上百萬次請求的系統(tǒng)。
Redis的強勁性能很大程度上是由于其將所有數(shù)據(jù)都存儲在內(nèi)存中,Redis的可用內(nèi)存受限于服務(wù)器對于內(nèi)存容量的支持,這導(dǎo)致Redis出現(xiàn)部分數(shù)據(jù)不能存儲在內(nèi)存中,溢出到磁盤,Redis性能優(yōu)勢將無法充分發(fā)揮的情況。
傳統(tǒng)的解決方案是利用Redis的集群功能來解決內(nèi)存不足的問題,但這樣意味著企業(yè)要采購大量的內(nèi)存,而且為了擴展內(nèi)存,企業(yè)將不得不部署更多的服務(wù)器,這增加了企業(yè)的成本壓力。
英特爾® 傲騰? 持久內(nèi)存創(chuàng)新性解決方案提供了行業(yè)領(lǐng)先的高吞吐率、低延時、高服務(wù)質(zhì)量和超高的耐用性,新增內(nèi)存擴展專為打破服務(wù)器內(nèi)存容量限制而優(yōu)化。英特爾® 傲騰? 持久內(nèi)存提供接近內(nèi)存的延遲,擴展系統(tǒng)內(nèi)存至6T(不包括系統(tǒng)自身內(nèi)存)。英特爾® 傲騰? 持久內(nèi)存可對應(yīng)用進行加速,支持快速緩存和快速存儲,提高每臺服務(wù)器的可擴展性,并降低敏感性工作負載的交易成本。此外,英特爾® 傲騰? 持久內(nèi)存支持數(shù)據(jù)中心部署更大、更經(jīng)濟的數(shù)據(jù)集,在大型內(nèi)存池中獲得新的洞察。
本方案使用英特爾® 傲騰? 持久內(nèi)存作為持久內(nèi)存數(shù)據(jù)存儲介質(zhì),以解決服務(wù)器內(nèi)存不足的問題。英特爾® 傲騰? 持久內(nèi)存有MEMORY Mode(共享系統(tǒng)內(nèi)存)、APP DIRECT Mode(持久內(nèi)存)兩種模式。本次測試采用APP DIRECT mode ,APP DIRECT具有數(shù)據(jù)持久化、高容量、高可用性、顯著加快存儲速度等特點,是目前英特爾® 傲騰? 持久內(nèi)存主要使用模式。
圖1:英特爾® 傲騰? 持久內(nèi)存擴展方案與傳統(tǒng)方案對比
方案驗證
圖2:測試方案集群網(wǎng)絡(luò)拓撲圖
Redis單機測試結(jié)果
表1:1a vs 2a單機測試結(jié)果對比
表2:1b vs 2b單機測試結(jié)果對比
表3:1c vs 2c單機測試結(jié)果對比
表4:1d vs 2d單機測試結(jié)果對比
Redis單機測試結(jié)果說明:Redis不開持久化或持久化開啟RDB、AOF為everysec情況下,英特爾® 傲騰? 持久內(nèi)存在latency和tps方面性能與DRAM基本相當;在Redis持久化AOF為always情況下,除了get、zadd、zrem操作外,英特爾® 傲騰? 持久內(nèi)存在latency和tps方面都表現(xiàn)了較高的性能優(yōu)勢,比DRAM性能提升9~24倍。
Redis集群測試結(jié)果
表5:1a vs 2a集群測試結(jié)果對比
表6:1b vs 2b集群測試結(jié)果對比
表7:1c vs 2c集群測試結(jié)果對比
表8:1d vs 2d集群測試結(jié)果對比
Redis集群測試結(jié)果說明: Redis不開持久化或持久化開啟RDB、AOF為everysec情況下,英特爾® 傲騰? 持久內(nèi)存在latency和tps方面性能與DRAM基本相當,基本達到80%以上,部分情況下性能優(yōu)于DRAM;在Redis持久化AOF為always情況下,受網(wǎng)絡(luò)的限制,英特爾® 傲騰? 持久內(nèi)存在latency和tps方面都表現(xiàn)了不錯的性能優(yōu)勢,data_size為512情況下性能比 DRAM提升1~2倍。
效果:持久內(nèi)存大幅改善Redis性能
在性能相當?shù)那闆r下,英特爾® 傲騰? 持久內(nèi)存擴展方案讓Redis使用更多的內(nèi)存,從而發(fā)揮Redis內(nèi)存數(shù)據(jù)庫的性能優(yōu)勢,英特爾® 傲騰? 持久內(nèi)存技術(shù)減少了Redis持久化時value數(shù)據(jù)落盤性能限制,大大提高了Redis性能。
基于英特爾® 傲騰? 持久內(nèi)存的Redis測試場景說明,英特爾® 傲騰? 持久內(nèi)存在單機和集群模式下都表現(xiàn)了良好的穩(wěn)定性和性能,可作為內(nèi)存擴展方案使用,為應(yīng)用提供更大的內(nèi)存。