2019年5月,華為云發布全球首個自研ARM的分布式緩存鯤鵬Redis,搭載華為LibOS+華為編譯器+安全容器引擎三項黑科技,在保證Redis強勁高性能外,還降低客戶30%的使用成本,真正實現了好用不貴的普惠型分布式緩存Redis產品。

本文從技術視角解讀華為云鯤鵬Redis是如何通過數據中心基礎設施、芯片、硬件、軟件等全棧創新優化,達成以上效果。
一、為什么ARM架構適合Redis?
眾所周知,Redis是一款風靡全球的高性能、高靈活性、數據結構類型豐富的key-value內存數據庫,擁有毫秒級的響應時延。因此Redis對服務器內存、網絡帶寬時延要求極高,即:Redis的高性能能否發揮出來取決于服務器內存、網絡性能。
2019年3月, Redis之父Salvatore Sanfilippo(網名:antirez)就Redis ARM架構發展趨勢發表觀點,他表示把ARM作為Redis運行架構,并且通過了所有測試與驗證、性能穩定性非常好,Antirez列舉了很多測試數據,得到了廣大網友的支持。
由于Redis在設計上就采用單線程架構,所有IO和數據處理都是在同一個線程中完成的,所以單節點的Redis最多只能使用一顆CPU核心,單節點Redis的性能基本達到10萬QPS的量級后就沒法再向上擴展了。
在現實的業務系統中,對Redis性能往往都要求達到100萬QPS以上,甚至1000萬以上,這種場景下需要通過Redis集群的方式來擴展Redis性能,而集群性能的瓶頸成為了Redis架構性能優化關鍵的因素。
1.RedisProxy集群架構性能關鍵點
Proxy集群作為業界廣為流行的Redis集群,其架構如下:

在這個架構中,Redis集群由負載均衡器、Redis Proxy和Redis Server這三類節點組成。在此Redis集群架構中,Proxy節點和Redis Server都可以水平擴展,通過增加節點數量就可不斷提升Redis集群的整體性能。根據不同的業務訴求,集群性能可彈性擴展到100萬至1000萬QPS。也正是由于可通過增加節點數來提升集群整體性能,所以Redis單節點雖只用一顆CPU核心,CPU最高主頻限制Redis單節點性能,但在集群水平擴展模式下cpu主頻限制已經不太重要了。
在整個集群架構中,業務系統發出的Redis請求需要經過負載均衡器和Redis Proxy的兩次轉發后,才能到達Redis Server被真正處理,端到端的鏈路性能才是整個集群的最大性能瓶頸。實測結果也表明,Redis集群的端到端鏈路時延每減少1毫秒,集群整體性能可提升10%+。
2.RedisCluster集群架構性能關鍵點
Cluster集群作為Redis官方標準的集群,逐步成為客戶的集群首選架構,并實際應用到線上業務中。其架構如下:

Cluster集群相比Proxy集群減少了網絡跳數,性能更高、靈活性很強。該架構和Proxy集群一樣,突破了Redis集群對于CPU單核性能的依賴性,而端到端的鏈路性能才是整個集群的最大性能瓶頸。
從上述架構剖析可以了解到,Redis單核性能的關鍵在于CPU的處理能力,但Redis真實在CPU中操作的時間在納秒級別,不超過端到端時延的10%,因此Redis橫向擴展核心靠鏈路性能優化。
二、華為云鯤鵬Redis:三項黑科技助力Redis性能

1.華為自研LibOS構建高性能云服務基礎設施,助力Redis性能2倍提升
LibOS兼顧資源利用率和隔離性,同時滿足公有云資源利用率和多租戶隔離的訴求,成為公有云runtime的重要發展方向。創新的LibOS技術將Redis的軟件棧由10層壓縮到4層,實現了超低延時。
1) SOCKET標準接口,實現從內核態網絡棧平滑切換到用戶態。2) 輕量級協議棧,支持每個Redis實例有獨立的協議棧,避免協議棧共享導致的鎖競爭問題。3) 業務線程和用戶態協議棧共線程,零調度開銷。4) 發揮網卡極限性能,避免了中斷和調度導致時延增加。
2.華為編譯器通過智能動態編譯優化,提升熱點代碼性能15+%
華為自研編譯器針對公有云業務應用場景特征,通過智能動態編譯優化,提升熱點代碼性能15+%:
1) 由部署在云服務環境內的輕量級性能特征采集Agent,保存程序動態運行時的關鍵性能特征信息;
2) 通過智能編譯調優工具,以動態性能特征作為輸入,結合靜態代碼分析,產生更優的編譯策略;
3) 自研ARM64編譯器使用新的編譯策略重新編譯生成優化后的應用程序,熱點代碼性能提升明顯。
3.華為iSula自研安全容器引擎技術,以更少的系統資源占用,實現秒級實例分發與遷移
iSulad是華為自主研發的高性能、低開銷的容器引擎,通過鏡像下載加速技術和最小化啟動調用鏈條,實現容器的秒級啟動和遷移。配合LibOS,可實現可媲美虛擬機級別的安全隔離性,確保租戶只能使用它們可用的資源。
三、強悍性能支撐客戶業務成功
在某電商大客戶中,客戶業務數據量大、讀寫請求量大、峰值明顯且擴容頻繁、需求變化快等特點,對Redis依賴很重、性能要求很高,現網同時維護200+個Redis實例,疲于應付容量擴容、性能下降、鏈接無響應、持久化失敗等各種現網問題,給研發團隊帶來巨大挑戰。
為了應對業務增長帶來的大數據并發,解決系統瓶頸問題,客戶決定考察華為云鯤鵬Redis。在多次的技術場景交流、PoC驗證后,客戶果斷決策將自建的Redis實例全部遷移到鯤鵬Redis上,主要收益:
1) 性能收益。華為云基于全棧整合之后單實例性能達到10萬QPS以上,Cluster集群支持性能的線性擴展至千萬級別,足夠應付2019年的業務增長目標。
2) 價格收益。鯤鵬Redis降低客戶30%使用成本后,在做到同等規格實例比自建Redis更省錢的同時,資源使用率提升了20%。用花更少的錢,享受更大的容量。
3) 技術收益。鯤鵬Redis提供專業的技術支持,具備從硬件鏈路到軟件優化的能力,可以提供更優的系統級優化方案。
遷移是有開銷的,包括割接的穩定性測試與保障等,都需要人力投入。但客戶CTO表示,華為云提供了很好的遷移保障,大大提升遷移的效率減少了對現網業務的影響。相比長期合作所帶來的收益,這個開銷基本忽略不計。
華為云鯤鵬Redis,業界首個基于自研ARM-Based全棧整合的Redis云服務,支持雙機熱備的HA架構,提供單機、主備、Proxy集群、Cluster集群實例類型,滿足高讀寫性能場景及彈性變配的業務需求。