写点什么

7 分钟看懂华为云鲲鹏 Redis 背后的自研技术

2019 年 10 月 24 日

7分钟看懂华为云鲲鹏Redis背后的自研技术

2019 年 5 月,华为云发布全球首个基于自研 ARM 架构的分布式缓存鲲鹏 Redis,搭载华为 LibOS+华为编译器+安全容器引擎三项黑科技,在保证 Redis 强劲高性能外,还降低客户 30%的使用成本,真正实现了好用不贵的普惠型分布式缓存 Redis 产品。 (延伸阅读:华为云发布:全球首个自研 ARM 架构分布式缓存 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 架构性能优化关键的的因素。


01 Redis Proxy 集群架构性能关键点

Proxy 集群作为业界广为流行的 Redis 集群,其架构如下:



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%+。


02 Redis Cluster 集群架构性能关键点

Cluster 集群作为 Redis 官方标准的集群,逐步成为客户的集群首选架构,并实际应用到线上业务中。其架构如下:



Redis Cluster 集群架构


Cluster 集群相比 Proxy 集群减少了网络跳数,性能更高、灵活性很强。该架构和 Proxy 集群一样,突破了 Redis 集群对于 CPU 单核性能的依赖性,而端到端的链路性能才是整个集群的最大性能瓶颈。


从上述架构剖析可以了解到,Redis 单核性能的关键在于 CPU 的处理能力,但 Redis 真实在 CPU 中操作的时间在纳秒级别,不超过端到端时延的 10%,因此 Redis 横向扩展核心靠链路性能优化。


华为云鲲鹏 Redis:三项黑科技助力 Redis 性能


LibOS 构建高性能云服务基础设施,助力 Redis 性能 2 倍提升

LibOS 兼顾资源利用率和隔离性,同时满足公有云资源利用率和多租户隔离的诉求,成为公有云 runtime 的重要发展方向。创新的 LibOS 技术将 Redis 的软件栈由 10 层压缩到 4 层,实现了超低延时。


1)SOCKET 标准接口,实现从内核态网络栈平滑切换到用户态。


2) 轻量级协议栈,支持每个 Redis 实例有独立的协议栈,避免协议栈共享导致的锁竞争问题。


3) 业务线程和用户态协议栈共线程,零调度开销。


4) 发挥网卡极限性能,避免了中断和调度导致时延增加。


华为编译器通过智能动态编译优化,提升热点代码性能 15+%

华为自研编译器针对公有云业务应用场景特征,通过智能动态编译优化,提升热点代码性能 15+%:


  1. 由部署在云服务环境内的轻量级性能特征采集 Agent,保存程序动态运行时的关键性能特征信息;

  2. 通过智能编译调优工具,以动态性能特征作为输入,结合静态代码分析,产生更优的编译策略;

  3. 自研 ARM64 编译器使用新的编译策略重新编译生成优化后的应用程序,热点代码性能提升明显。


华为 iSula 自研安全容器引擎技术,以更少的系统资源占用,实现秒级实例分发与迁移

iSulad 是华为自主研发的高性能、低开销的容器引擎,通过镜像下载加速技术和最小化启动调用链条,实现容器的秒级启动和迁移。配合 LibOS,可实现可媲美虚拟机级别的安全隔离性,确保租户只能使用它们可用的资源。


强悍性能支撑客户业务成功

在某电商大客户中,客户业务数据量大、读写请求量大、峰值明显且扩容频繁、需求变化快等特点,对 Redis 依赖很重、性能要求很高,现网同时维护 200+个 Redis 实例,疲于应付容量扩容、性能下降、链接无响应、持久化失败等各种现网问题,给研发团队带来巨大挑战。


为了应对业务增长带来的大数据并发,解决系统瓶颈问题,客户决定考察华为云鲲鹏 Redis。在多次的技术场景交流、PoC 验证后,客户果断决策将自建的 Redis 实例全部迁移到鲲鹏 Redis 上,主要效益如下:


1) 性能效益。 华为云基于全栈整合之后单实例性能达到 10 万 QPS 以上,Cluster 集群支持性能的线性扩展至千万级别,足够应付 2019 年的业务增长目标。


2) 价格效益。 鲲鹏 Redis 降低客户 30%使用成本后,在做到同等规格实例比自建 Redis 更省钱的同时,资源使用率提升了 20%。用花更少的钱,享受更大的容量。


3) 技术效益。 鲲鹏 Redis 提供专业的技术支持,具备从硬件链路到软件优化的能力,可以提供更优的系统级优化方案。


迁移是有开销的,包括割接的稳定性测试与保障等,都需要人力投入。但客户表示:

华为云提供了很好的迁移保障,大大提升迁移的效率减少了对现网业务的影响。相比长期合作所带来的收益,这个开销基本忽略不计。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/qVKLXY25nDHqH3LM0GoA5A


2019 年 10 月 24 日 09:45440

评论

发布
暂无评论
发现更多内容

PMP-识别风险、定性风险、定量分析工具和技术汇总对比

飞哥

项目管理 pmp

Flink 消息聚合处理方案

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

读书·行路·问心·求道

黄崇远@数据虫巢

读书笔记 个人成长 读书

原创 | OOAD范例:配置类设计

编程道与术

你的文章中为什么会有加粗的文字

小天同学

思考 写作 感悟

关于PHP内存溢出的思考

L

php

Flink State 最佳实践

Apache Flink

大数据 flink AI 流计算 实时计算

零基础应该如何学习爬虫技术?

极客时间

Python 编程 爬虫

SpringBoot中如何优雅的使用多线程

读钓

Java spring Spring Boot

Iceberg 在基于 Flink 的流式数据入库场景中的应用

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Flink SQL 的 9 个示例

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Python 有哪些黑魔法?

极客时间

Python 编程语言

centos7.6操作系统安装

桥哥技术之路

Linux

什么是物联网中台

老任物联网杂谈

物联网中台 IOT Platform 物联网平台

经验可能反而阻碍你的新认知

孙苏勇

思考 读书

在InfoQ开启写作之旅

张先亮-Hank

人工智能 随笔

最佳实践 | Flink Forward 全球会议抢先看!

Apache Flink

大数据 flink AI 流计算 实时计算

18个PPT,29个提问解答,都在这儿啦!

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

Apache Beam 大数据处理一站式分析

李孟

Java 大数据 数据中台 数据交换 Beam

初文,大浪淘沙

傅丞 Tony

vue项目中遇到的依赖及其他问题

靖仙

Vue 前端 Web 前端开发

作为程序员,有哪些写作平台值得推荐 ?B站也算吧

邓瑞恒Ryan

学习 创业 写作 知识管理 自我提升

祝贺!两位 Apache Flink PMC 喜提 Apache Member

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

LeetCode 120. Triangle

隔壁小王

算法 LeetCode

Flink 的经典场景和业务故事有哪些?看看他们就知道了

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

一行代码实现网站可编辑,并解决网站禁止复制的限制

王坤祥

复制 破解 DOM

XOR异或运算在计算机中的应用

王坤祥

XOR 异或运算 对称加密

什么是全光架构?光纤KVM和分布式IP KVM系统知多少?

DT极客

我入驻InfoQ平台啦

BlueblueWings

PyFlink 社区扶持计划正式上线!

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

都在说实时数据架构,你了解多少?

Apache Flink

大数据 flink 流计算 实时计算 大数据处理

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

7分钟看懂华为云鲲鹏Redis背后的自研技术-InfoQ