本文從技術(shù)視角解讀華為云鯤鵬Redis是如何通過數(shù)據(jù)中心基礎(chǔ)設(shè)施、芯片、硬件、軟件等全棧創(chuàng)新優(yōu)化,達成以上效果。

  一、為什么ARM架構(gòu)適合Redis?

眾所周知,Redis是一款風(fēng)靡全球的高性能、高靈活性、數(shù)據(jù)結(jié)構(gòu)類型豐富的key-value內(nèi)存數(shù)據(jù)庫,擁有毫秒級的響應(yīng)時延。因此Redis對服務(wù)器內(nèi)存、網(wǎng)絡(luò)帶寬時延要求極高,即:Redis的高性能能否發(fā)揮出來取決于服務(wù)器內(nèi)存、網(wǎng)絡(luò)性能。

2019年3月, Redis之父Salvatore Sanfilippo(網(wǎng)名:antirez)就Redis ARM架構(gòu)發(fā)展趨勢發(fā)表觀點,他表示把ARM作為Redis運行架構(gòu),并且通過了所有測試與驗證、性能穩(wěn)定性非常好,Antirez列舉了很多測試數(shù)據(jù),得到了廣大網(wǎng)友的支持。

由于Redis在設(shè)計上就采用單線程架構(gòu),所有IO和數(shù)據(jù)處理都是在同一個線程中完成的,所以單節(jié)點的Redis最多只能使用一顆CPU核心,單節(jié)點Redis的性能基本達到10萬QPS的量級后就沒法再向上擴展了。

在現(xiàn)實的業(yè)務(wù)系統(tǒng)中,對Redis性能往往都要求達到100萬QPS以上,甚至1000萬以上,這種場景下需要通過Redis集群的方式來擴展Redis性能,而集群性能的瓶頸成為了Redis架構(gòu)性能優(yōu)化關(guān)鍵的因素。

  1.RedisProxy集群架構(gòu)性能關(guān)鍵點

Proxy集群作為業(yè)界廣為流行的Redis集群,其架構(gòu)如下:

  在這個架構(gòu)中,Redis集群由負載均衡器、Redis Proxy和Redis Server這三類節(jié)點組成。在此Redis集群架構(gòu)中,Proxy節(jié)點和Redis Server都可以水平擴展,通過增加節(jié)點數(shù)量就可不斷提升Redis集群的整體性能。根據(jù)不同的業(yè)務(wù)訴求,集群性能可彈性擴展到100萬至1000萬QPS。也正是由于可通過增加節(jié)點數(shù)來提升集群整體性能,所以Redis單節(jié)點雖只用一顆CPU核心,CPU最高主頻限制Redis單節(jié)點性能,但在集群水平擴展模式下cpu主頻限制已經(jīng)不太重要了。

在整個集群架構(gòu)中,業(yè)務(wù)系統(tǒng)發(fā)出的Redis請求需要經(jīng)過負載均衡器和Redis Proxy的兩次轉(zhuǎn)發(fā)后,才能到達Redis Server被真正處理,端到端的鏈路性能才是整個集群的最大性能瓶頸。實測結(jié)果也表明,Redis集群的端到端鏈路時延每減少1毫秒,集群整體性能可提升10%+。

  2.RedisCluster集群架構(gòu)性能關(guān)鍵點

Cluster集群作為Redis官方標(biāo)準(zhǔn)的集群,逐步成為客戶的集群首選架構(gòu),并實際應(yīng)用到線上業(yè)務(wù)中。其架構(gòu)如下:

  Cluster集群相比Proxy集群減少了網(wǎng)絡(luò)跳數(shù),性能更高、靈活性很強。該架構(gòu)和Proxy集群一樣,突破了Redis集群對于CPU單核性能的依賴性,而端到端的鏈路性能才是整個集群的最大性能瓶頸。

從上述架構(gòu)剖析可以了解到,Redis單核性能的關(guān)鍵在于CPU的處理能力,但Redis真實在CPU中操作的時間在納秒級別,不超過端到端時延的10%,因此Redis橫向擴展核心靠鏈路性能優(yōu)化。

 二、華為云鯤鵬Redis:三項黑科技助力Redis性能

  1.華為自研LibOS構(gòu)建高性能云服務(wù)基礎(chǔ)設(shè)施,助力Redis性能2倍提升

LibOS兼顧資源利用率和隔離性,同時滿足公有云資源利用率和多租戶隔離的訴求,成為公有云runtime的重要發(fā)展方向。創(chuàng)新的LibOS技術(shù)將Redis的軟件棧由10層壓縮到4層,實現(xiàn)了超低延時。

1) SOCKET標(biāo)準(zhǔn)接口,實現(xiàn)從內(nèi)核態(tài)網(wǎng)絡(luò)棧平滑切換到用戶態(tài)。2) 輕量級協(xié)議棧,支持每個Redis實例有獨立的協(xié)議棧,避免協(xié)議棧共享導(dǎo)致的鎖競爭問題。3) 業(yè)務(wù)線程和用戶態(tài)協(xié)議棧共線程,零調(diào)度開銷。4) 發(fā)揮網(wǎng)卡極限性能,避免了中斷和調(diào)度導(dǎo)致時延增加。

 2.華為編譯器通過智能動態(tài)編譯優(yōu)化,提升熱點代碼性能15+%

華為自研編譯器針對公有云業(yè)務(wù)應(yīng)用場景特征,通過智能動態(tài)編譯優(yōu)化,提升熱點代碼性能15+%:

1) 由部署在云服務(wù)環(huán)境內(nèi)的輕量級性能特征采集Agent,保存程序動態(tài)運行時的關(guān)鍵性能特征信息;

2) 通過智能編譯調(diào)優(yōu)工具,以動態(tài)性能特征作為輸入,結(jié)合靜態(tài)代碼分析,產(chǎn)生更優(yōu)的編譯策略;

3) 自研ARM64編譯器使用新的編譯策略重新編譯生成優(yōu)化后的應(yīng)用程序,熱點代碼性能提升明顯。

 3.華為iSula自研安全容器引擎技術(shù),以更少的系統(tǒng)資源占用,實現(xiàn)秒級實例分發(fā)與遷移

iSulad是華為自主研發(fā)的高性能、低開銷的容器引擎,通過鏡像下載加速技術(shù)和最小化啟動調(diào)用鏈條,實現(xiàn)容器的秒級啟動和遷移。配合LibOS,可實現(xiàn)可媲美虛擬機級別的安全隔離性,確保租戶只能使用它們可用的資源。

  三、強悍性能支撐客戶業(yè)務(wù)成功

在某電商大客戶中,客戶業(yè)務(wù)數(shù)據(jù)量大、讀寫請求量大、峰值明顯且擴容頻繁、需求變化快等特點,對Redis依賴很重、性能要求很高,現(xiàn)網(wǎng)同時維護200+個Redis實例,疲于應(yīng)付容量擴容、性能下降、鏈接無響應(yīng)、持久化失敗等各種現(xiàn)網(wǎng)問題,給研發(fā)團隊帶來巨大挑戰(zhàn)。

為了應(yīng)對業(yè)務(wù)增長帶來的大數(shù)據(jù)并發(fā),解決系統(tǒng)瓶頸問題,客戶決定考察華為云鯤鵬Redis。在多次的技術(shù)場景交流、PoC驗證后,客戶果斷決策將自建的Redis實例全部遷移到鯤鵬Redis上,主要收益:

1) 性能收益。華為云基于全棧整合之后單實例性能達到10萬QPS以上,Cluster集群支持性能的線性擴展至千萬級別,足夠應(yīng)付2019年的業(yè)務(wù)增長目標(biāo)。

2) 價格收益。鯤鵬Redis降低客戶30%使用成本后,在做到同等規(guī)格實例比自建Redis更省錢的同時,資源使用率提升了20%。用花更少的錢,享受更大的容量。

3) 技術(shù)收益。鯤鵬Redis提供專業(yè)的技術(shù)支持,具備從硬件鏈路到軟件優(yōu)化的能力,可以提供更優(yōu)的系統(tǒng)級優(yōu)化方案。

遷移是有開銷的,包括割接的穩(wěn)定性測試與保障等,都需要人力投入。但客戶CTO表示,華為云提供了很好的遷移保障,大大提升遷移的效率減少了對現(xiàn)網(wǎng)業(yè)務(wù)的影響。相比長期合作所帶來的收益,這個開銷基本忽略不計。

華為云鯤鵬Redis,業(yè)界首個基于自研ARM-Based全棧整合的Redis云服務(wù),支持雙機熱備的HA架構(gòu),提供單機、主備、Proxy集群、Cluster集群實例類型,滿足高讀寫性能場景及彈性變配的業(yè)務(wù)需求。

分享到

zhangnn

相關(guān)推薦