亞馬遜云科技Amazon ElastiCache for Redis是一項(xiàng)完全托管的服務(wù),與Redis API兼容。ElastiCache是一種快速的內(nèi)存數(shù)據(jù)存儲(chǔ),許多客戶選擇這種存儲(chǔ)來(lái)為一些對(duì)性能最為敏感的實(shí)時(shí)應(yīng)用程序提供支持。與大家分享通過(guò)從ElastiCache for Redis 7.0升級(jí)到7.1,現(xiàn)在可以有效地 提高性能,并且可以在微秒級(jí)響應(yīng)時(shí)間內(nèi)擴(kuò)展為每秒5億個(gè)請(qǐng)求(RPS)。
此次發(fā)布是亞馬遜云科技持續(xù)努力幫助您充分發(fā)揮ElastiCache性能的 舉措。2023年2月,亞馬遜云科技發(fā)布了具有增強(qiáng)型I/O多路復(fù)用功能的ElastiCache for Redis 7.0,該服務(wù)非常適合具有多個(gè)客戶端連接的吞吐量限制型工作負(fù)載,其優(yōu)勢(shì)可以隨工作負(fù)載并發(fā)水平而擴(kuò)展。舉個(gè)例子,在使用r6g.xlarge節(jié)點(diǎn)并運(yùn)行5200個(gè)并發(fā)客戶端時(shí),與ElastiCache for Redis 6相比,最多可以將吞吐量(每秒讀寫(xiě)操作數(shù))提高72%,P99延遲最多降低71%。它將許多客戶端請(qǐng)求合并到一個(gè)通道,提高了Redis主線程的效率,如下圖所示。
2023年8月,亞馬遜云科技宣布支持Graviton3(M7g和R7g)實(shí)例,與Graviton2相比,除了增強(qiáng)型輸入/輸出多路復(fù)用帶來(lái)的改進(jìn)外,Graviton3的RPS最多可提高28%,P99延遲最多可降低21%。
現(xiàn)在,在具有至少8個(gè)物理內(nèi)核(Graviton為2xlarge,x86為4xlarge)的實(shí)例上,使用ElastiCache for Redis v7.1最多可將性能提升一倍。與7.0版相比,它的吞吐量最多可提高100%,P99延遲最多可降低50%。在足夠大的節(jié)點(diǎn)(例如r7g.4xlarge)上,可以實(shí)現(xiàn)每個(gè)節(jié)點(diǎn)每秒超過(guò)100萬(wàn)個(gè)請(qǐng)求(RPS),每個(gè)集群5億個(gè)RPS。這一性能飛躍是通過(guò)亞馬遜云科技表示層卸載和內(nèi)存訪問(wèn)分?jǐn)偟募夹g(shù)實(shí)現(xiàn)的。
Redis表示層卸載
ElastiCache for Redis使用增強(qiáng)型I/O線程來(lái)處理網(wǎng)絡(luò)I/O和傳傳輸層安全性協(xié)議(TLS)加密。在7.1版中,亞馬遜云科技擴(kuò)展了增強(qiáng)型I/O線程功能,使其還能處理表示層邏輯。亞馬遜云科技所說(shuō)的表示層是指增強(qiáng)型I/O線程現(xiàn)在不僅會(huì)讀取客戶端輸入,還會(huì)將輸入解析為Redis二進(jìn)制命令格式,然后將其轉(zhuǎn)發(fā)到主線程運(yùn)行。同樣,在響應(yīng)路徑上,主線程會(huì)將二進(jìn)制格式的輸出重定向回增強(qiáng)型I/O線程。增強(qiáng)型I/O線程將格式化響應(yīng)并將其發(fā)送到客戶端。如下圖所示,通過(guò)將這項(xiàng)工作推送到專(zhuān)用線程,亞馬遜云科技既能更充分地利用并行機(jī)制和每個(gè)實(shí)例中的可用CPU內(nèi)核,也能讓Redis主線程做它最擅長(zhǎng)的工作,即運(yùn)行命令。
內(nèi)存訪問(wèn)分?jǐn)?/p>
隨機(jī)內(nèi)存訪問(wèn)是一項(xiàng)高成本的操作,會(huì)影響內(nèi)存密集型應(yīng)用程序的效率,F(xiàn)在,亞馬遜云科技引入了內(nèi)存訪問(wèn)分?jǐn)?MAA),這是一種用于降低內(nèi)存訪問(wèn)成本的技術(shù),尤其適用于大型動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),例如在Redis中使用的結(jié)構(gòu)。MAA將許多數(shù)據(jù)結(jié)構(gòu)操作的步驟交錯(cuò)在一起,以確保并行訪問(wèn)內(nèi)存并減少內(nèi)存訪問(wèn)延遲。在ElastiCache for Redis 7.1中,亞馬遜云科技在Redis字典中應(yīng)用了這種方法,使哈希查找和加速命令減少多達(dá)60%。以下示例對(duì)此進(jìn)行了描述,其中,Redis主處理線程從增強(qiáng)型I/O線程接收三個(gè)已解析的命令。接下來(lái),它交錯(cuò)執(zhí)行字典查找程序,以同時(shí)將所需數(shù)據(jù)預(yù)取到CPU緩存中。在亞馬遜云科技的簡(jiǎn)單示例中,Redis主線程從增強(qiáng)型I/O線程接收以下命令:GET"19"、GET"65"和GET"23"。
主線程現(xiàn)在從Redis字典中檢索這些密鑰。在ElastiCache 7.0版中,Redis字典中的哈希表遍歷將串行運(yùn)行,而Redis會(huì)低效等待內(nèi)存。然而,在版本7.1中,三個(gè)哈希表遍歷交錯(cuò)以獲得并行內(nèi)存請(qǐng)求。
性能分析
為了對(duì)使用ElastiCache for Redis 7.1可以實(shí)現(xiàn)的性能提升進(jìn)行基準(zhǔn)測(cè)試,亞馬遜云科技將其與7.0版本進(jìn)行了比較。使用典型的基準(zhǔn)測(cè)試設(shè)置,以及行業(yè)標(biāo)準(zhǔn)的Redis基準(zhǔn)測(cè)試工具,其中包括20%的SET(寫(xiě)入)和80%的GET(讀取)命令。所有測(cè)試均使用500個(gè)客戶端、80%的GET命令和20%的SET命令在填充有300萬(wàn)個(gè)16字節(jié)密鑰和512字節(jié)字符串值的數(shù)據(jù)庫(kù)上運(yùn)行。ElastiCache節(jié)點(diǎn)和客戶端應(yīng)用程序均在同一亞馬遜云科技可用區(qū)內(nèi)運(yùn)行。
每秒請(qǐng)求次數(shù)增益
下圖詳細(xì)介紹了在不同節(jié)點(diǎn)大小上運(yùn)行基準(zhǔn)測(cè)試的結(jié)果。它捕獲了ElastiCache for Redis 7.1中引入的每秒請(qǐng)求數(shù)(RPS)的百分比改進(jìn),并與7.0進(jìn)行了比較。
可以觀察到所有不同節(jié)點(diǎn)都實(shí)現(xiàn)了至少100%(雙倍)的改進(jìn),這著實(shí)令人興奮。這意味著r7g.4xlarge及更高版本可實(shí)現(xiàn)每秒超過(guò)100萬(wàn)個(gè)請(qǐng)求。在同一個(gè)基準(zhǔn)測(cè)試中,還測(cè)量了命令延遲。下圖顯示了引入的P99延遲改進(jìn)。
延遲降低
可以觀察到,即使在最大RPS的峰值負(fù)載下,也能夠在所有節(jié)點(diǎn)大小上將每個(gè)節(jié)點(diǎn)的P99延遲降低50%以上,將每個(gè)請(qǐng)求的延遲加速到小于1毫秒。吞吐量翻了一番,同時(shí)延遲減少了一半。
總結(jié)
在大于xlarge的節(jié)點(diǎn)上,無(wú)論您的集群大小或模式如何,無(wú)論是否使用TLS,ElastiCache for Redis 7.1中引入的改進(jìn)都能提供更好的性能。升級(jí)到 的ElastiCache,享受速度帶來(lái)的快感,無(wú)需額外付費(fèi),也無(wú)需對(duì)應(yīng)用程序進(jìn)行任何更改。ElastiCache for Redis 7.1現(xiàn)已在所有亞馬遜云科技區(qū)域推出。
投稿郵箱:chuanbeiol@163.com 詳情請(qǐng)?jiān)L問(wèn)川北在線:http://sanmuled.cn/