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

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

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

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

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

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

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

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

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

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

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

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

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

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

 二、華為云鯤鵬Redis:三項(xiàng)黑科技助力Redis性能

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

分享到

zhangnn

相關(guān)推薦