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 Redis Proxy集群架构性能关键点

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 Redis Cluster集群架构性能关键点

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集群实例类型,满足高读写性能场景及弹性变配的业务需求。

揭秘丨7分钟看懂华为云鲲鹏Redis背后的自研技术相关推荐

  1. 一文看懂华为云AI新政,这波开发者福利有点硬

    李根 发自 ShanghAI  量子位 报道 | 公众号 QbitAI 华为这家公司,"很吓人". 他们在做的事.要做的事,一旦进入执行,总会态势惊人,无论旧业务还是新领域. 比如 ...

  2. 《一张图看懂华为云BigData Pro鲲鹏大数据解决方案》

    8月27日,华为云重磅发布了业界首个鲲鹏大数据解决方案--BigData Pro.该方案采用基于公有云的存储与计算分离架构,以可无限弹性扩容的鲲鹏算力作为计算资源,以支持原生多协议的OBS对象存储服务 ...

  3. 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战

    作为敏捷开发中测试团队的一员,在微服务测试过程中,你是不是也遇到同样困惑:服务不具备独立验证能力.自动化用例开发效率很低等?华为云DevCloud API全场景测试技术来支招~围绕API的全场景,打造 ...

  4. 【华为云技术分享】云图说 | 一张图看懂华为云弹性公网IP

    弹性公网IP(Elastic IP)提供独立的公网IP资源,包括公网IP地址与公网出口带宽服务.可以与弹性云服务器.裸金属服务器.虚拟IP.弹性负载均衡.NAT网关等资源灵活地绑定及解绑.拥有多种灵活 ...

  5. 【华为云技术分享】10分钟快速在华为云鲲鹏弹性云服务器上部署一个自己的弹幕网站!

    摘要:从零代码开始,10分钟快速开发一个可以发送弹幕的网站,并将其部署在华为云服务器上:学完本期教程,将知道如何使用Nginx.如何将自己的网站部署到云服务器上. 直播相信大家都不陌生了吧,大家经常会 ...

  6. 1682亿背后丨一分钟看懂天猫双11

    11.11 快看 这就是阿里爸爸让你 剁不释手的 超级工程 ↓↓↓ (全屏播放更美丽)

  7. 科普达人丨一文看懂阿里云的秘密武器“神龙架构”

    在一台电脑中,我们把CPU和硬盘比作一家公司的加工厂和仓库,那么两个部门的任务就是处理数据和存储数据. 但是因为土地价格和劳动力价格差异较大等因素,需要将两个部门分别建在不同的地方,这也就是在云上的情 ...

  8. 云计算机的发展史,三分钟看懂云计算的发展历程

    原标题:三分钟看懂云计算的发展历程 为什么要用云计算?技术发展的需要. 云计算的发展历程 ①最开始,人们使用算盘. ②后来,人们有了网络,也开始普及电脑. ③再后来,人多事少,都去上网,于是服务器吃不 ...

  9. 三分钟看懂5G NSA和SA

    原标题:三分钟看懂5G NSA和SA 来源:无线深海 作者:蜉蝣采采 物联网智库 转载 导 读 本文将详细讨论什么是5G NSA(非独立组网)和5G SA(独立组网),以及它们有何异同之处. 01 5 ...

最新文章

  1. HDOJ 1214 圆桌会议
  2. win7 64位,vs2010(visual studio2010)环境下配置openCV2.4.8版本,以及可能遇到的问题
  3. 铁乐学Python_day12_作业
  4. C语言sprintf函数(发送格式化输出到 str 所指向的字符串)(format 标签属性)(字符串拼接)(数字转字符串、浮点数转字符串)
  5. Ehab and the Expected XOR Problem
  6. javascript系统时间
  7. MyBatis 插件原理与自定义插件-应用场景分析
  8. 【GUI开发】图像处理类软件的浏览功能实现模型
  9. php 解析mib文件,Mib库解析
  10. 自信不疑的人不会做的15件事
  11. sharepoint timer job 读取config文件内容
  12. mysql 有哪些子句_mysql 查询子句
  13. linux下使用John检测用户是否存在弱口令
  14. NOI2005 瑰丽华尔兹
  15. 建文本文档 怎么改成html,文本文档怎么改格式 怎么把文本文档改成CFG格式
  16. 视频教程-DelphiXE10零基础实战快速入门-其他
  17. c语言实验报告1答案,郑州大学C语言实验报告答案
  18. Html常用正则表达式
  19. Nacos注册中心AP架构源码(Distro)上篇
  20. java短信平台开源_Java通过SMS短信平台实现发短信功能

热门文章

  1. java电脑上运行_java-在本地计算机上运行的Web应用程序
  2. 安凯无人驾驶_完美运行零失误 安凯无人驾驶巴士挑战“世界第一玻璃桥”
  3. Python的网络编程[1] - FTP 协议[1] - 使用 pyftplib 建立 FTP 服务器
  4. 实现三联tab切换特效
  5. 面向对象与原型(二)
  6. 11.18 如何将界面注册到系统?
  7. leetcode 1025 python
  8. mysql安全性特点_MySQL数据库有哪些特点?为何能得到了广泛应用?
  9. java thread lambda_Java8新特性--Lambda表达式
  10. 贪心——跳跃游戏 II(Leetcode 45)