海量Redis数据库优化,vivo如何实现成本与性能的平衡

news2024/12/23 13:25:30

概述

随着数字化技术的创新以及时延敏感型应用的持续落地,越来越多的数据需要实现实时或近实时的处理,这推动了 Redis 等内存数据库的广泛应用。此类数据库对于内存容量有着较高的要求,在数据快速增长的背景下,大内存池构建意味着较高的总体拥有成本 (TCO)压力,需要企业通过内存介质创新、存储架构优化等方式,实现成本与容量的平衡。

作为中国知名的智能终端和智慧服务品牌,vivo 部署了规模庞大的 Redis 系统,以支持 AI 推荐、兴趣图谱分析、互联网交易等应用的高效运行,为用户提供稳定、快速响应的服务。为了更好地实现 Redis 系统性能与成本的平衡,vivo 与英特尔合作,在 Redis 系统中采用了英特尔® 傲腾™ 持久内存(PMem),借助其高性能、大容量、高经济性等特点,帮助 vivo 实现了既定的业务目标。

挑战:Redis系统带来巨大的内存扩展压力

vivo 已经成为全球具备重要影响力的移动互联网服务提供商之一。面向新时期的市场发展需求,vivo 发布了其全新的 AI 智慧服务生态战略,即打造一个 “全场景、全联结、全交互” 的智慧引擎,构建满足消费者期待的智慧手机,以实现与更多开发者合作共赢。vivo 正在聚焦于运动、健康、工作、休闲等移动互联网业务生态中最具活跃度和显性价值区域的应用场景,为用户提供更加智慧的服务。

在 vivo 的智慧服务生态战略中,基于 AI 的个性化信息推荐、兴趣图谱分析以及互联网交易等时延敏感型应用得到了快速发展。为了支持这些应用的高效运行,vivo 部署了规模庞大的 Redis 系统。Redis 是一个可基于内存亦可持久化的日志型 Key-Value 数据库,通过在内存中读写数据,Redis 大大提高了读写速度,是实现网站高并发不可或缺的一部分。

在原生 Redis 系统的基础上,vivo 根据其业务需求进行了相应的优化,包括优化日志同步机制、优化 Cluster slots 指令、AOF 支持异步写入等。这些优化措施有效提升了 Redis 系统在性能、扩展性等方面的表现。

由于 vivo 互联网用户规模巨大,应用众多,因此需要通过 Redis 系统进行处理的数据堪称海量,这给后端的 IT 基础设施带来了巨大的挑战。其中突出体现在 Redis 所带来的巨大内存需求上:Redis 内存消耗通常包括自身内存、键值对象占用、缓冲区内存占用及内存碎片占用。如果数据量超过了集群内存能容纳的限制,部分数据就会落在相对低速的磁盘上,导致 Redis 性能显著降低,甚至可能停止响应。因此,为 Redis 数据库提供足够大的内存成为保障其性能正常发挥的重要因素。

传统 Redis 系统通常采用高性能 DRAM 内存作为缓冲区内存, 这种方式能够满足 Redis 系统对于性能的要求,但却在成本上带来巨大的挑战:

  • DRAM 内存单位容量成本仍居高不下:在相当长的时间内, 用户对于内存的巨大需求与可供应的内存总量之间仍有着巨大的缺口,再加上 DRAM 内存介质的工艺特点,导致 DRAM 内存的价格长期在高位运行。对于 Redis 系统而言,集群需要的内存容量动辄在数百 TB,导致较高的成本压力。
  • DRAM 内存单条容量相对较低:目前,市场上普遍应用的 DRAM 内存通常在 128 GB 以下,这意味着即使将服务器的内存插槽插满,单个服务器节点所能提供的内存容量依然相对不足。为了满足业务需求,扩展集群规模显然就成为最具可行性的方式,这会进一步加大成本压力。
  • 高复杂性:Redis 庞大的集群规模也会带来复杂的运维问题, 加重运维人员的负担。因此,vivo 希望找到创新的内存扩展方案,以解决成本与运维的难题。

解决方案:基于英特尔® 傲腾™持久内存的Redis方案

在对 Redis 内存方案进行考察时,vivo 考虑到,英特尔® 傲腾™ 持久内存在成本上具备显著优势,而且在硬件亲和度较大的前提下,基于英特尔® 傲腾™ 持久内存的服务器可以近乎无缝地在 Redis 生产环境下投入使用。因此,vivo 决定采用英特尔® 傲腾™ 持久内存来作为 Redis 系统的缓存介质。

英特尔® 傲腾™ 持久内存性能介于 DRAM 内存与固态硬盘之间, 但在成本上比 DRAM 内存更具优势。英特尔® 傲腾™ 持久内存提供了融合高速、高性价比、大容量、持久数据保护、高级加密等优势于一体的内存选项,可分别支持内存模式(Memory Mode)和 App Direct 模式。在内存模式中,它提供有 128 GB、256 GB 和 512 GB 容量,与普通的易失性系统存储器完全一样,但成本更低,能在稳定的系统预算中实现更高容量。

在内存模式下,英特尔® 傲腾™ 持久内存可作为经济高效的 DRAM 替代品。对应用程序而言,英特尔® 傲腾™ 持久内存可用作易失性内存,由 DRAM 充当最常访问的数据的高速缓存, 同时由英特尔® 傲腾™ 持久内存提供大容量的存储容量。与仅使用 DRAM 的系统相比,配备英特尔® 傲腾™ 持久内存的系统允许使用更大容量的内存,并且更具成本效益。但是,在这种模式下,数据无法持久保存,这意味着在系统电源关闭时数据会丢失。

 图 1. 英特尔® 傲腾™ 技术创新—两级内存/存储

在 App Direct 模式下,应用程序和操作系统会有两种可用的内存。系统将决定是从 DRAM 还是英特尔® 傲腾™ 持久内存中写入或读取数据。要求低时延且不需要永久数据存储的操作可以在 DRAM 上执行,必须长期保留的数据将由英特尔® 傲腾™ 持久内存进行存储。

与传统 DRAM 内存相比,英特尔® 傲腾™ 持久内存能够提供更高的容量与更低的 TCO,非常适合于内存容量敏感型应用。

为了验证基于英特尔® 傲腾™ 持久内存的 Redis 系统表现,vivo 通过测试进行了验证。首先,vivo 测试了两种配置在内存模式下的性能差别,测试服务器配置如表 1 所示。

 测试数据显示,在内存模式下的测试中,英特尔® 傲腾™ 持久内存的性能要高于 DRAM 内存,这一方面是由于英特尔® 傲腾™ 持久内存具备较高的性能,另一方面是由于英特尔® 至强® 金牌 6230 处理器相较于英特尔® 至强® E5-2620 V4 处理器实现了较高的代际性能提升。其中,set 10B 下的测试结果如图 2 所示。

 图 2. 内存模式下DRAM/PMEM测试数据

随后,vivo 在应用直接访问模式下测试了英特尔® 傲腾™ 持久内存的性能表现,测试配置如表 2 所示。

 测试数据显示,当长度超过 64B 后,相较于 redis-server 完全使用 DRAM 存储数据的情况,英特尔® 傲腾™ 持久内存在写性能上有 10%-15%2 的劣化;在数据读取的测试中,英特尔® 傲腾™ 持久内存的性能与 redis-server 相当,有些情况还优于 redis-server。例如,在 memtier-benchmark list 类型中 lpushs_1024(b)的测试中,英特尔® 傲腾™ 持久内存配置即体现了一定的性能优势。

 图 3. 应用直接访问模式下PMEM/DRAM测试数据

打造高性价比、易运维的 Redis 系统

通过在 Redis 系统中引入英特尔® 傲腾™ 持久内存,vivo 找到了一条扩展 Redis 系统规模的经济可行之道。具体而言,其发挥了如下价值:

  • 高性价比:虽然基于英特尔® 傲腾™ 持久内存的 Redis 系统在性能上稍弱于基于 DRAM 内存的 Redis 系统,但是在成本上却有着较大的优势,考虑到该系统的性能已经能够满足业务所需,因此成本的节约无疑显得至关重要。
  • 简化运维:英特尔® 傲腾™ 持久内存支持更高的单条内存容量,能够有效提升单服务器节点的内存密度,单机提供的内存容量远大于传统方案。这有助于减少服务器节点的部署规模,从而简化运维。
  • 节能减排:基于英特尔® 傲腾™ 持久内存的 Redis 系统支持更小的服务器规模,有助于降低相应的服务器采购、运维、能耗、空间占用等成本,同时实现节能减排。

展望

目前,英特尔® 傲腾™ 持久内存已经在内存数据库等需要大容量集的应用中得到了广泛验证,并证明其在经济性、扩展性、可用性、部署与运维等方面具备突出的优势,这有助于弥补内存供给与需求之间的巨大缺口,帮助企业加速获取洞察,为制定关键业务决策、节约成本和新增收入奠定基础。

在现阶段的合作基础上,vivo 与英特尔将进一步完善当前的合作成果,充分发挥英特尔® 傲腾™ 持久内存的潜能。同时,双方也将在更多的领域进行探索,协同推进内存与存储创新,为上层业务的智慧化转型奠定坚实的基础,为用户提供更优质的产品与服务体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/43625.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式监控平台——Zabbix

市场上常用的监控软件: 传统运维:zabbix、 Nagios云原生环境: Prometheus (go语言开发的) 一 Zabbix概述 作为一个运维,需要会使用监控系统查看服务器状态以及网站流量指标,利用监控系统的数据…

二叉树的遍历-树-数据结构和算法(Java)

1 树的遍历方式 1.1 深度优先 事实上,深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次. 那么对于树来说,"深度优先…

使用阿里云国际版负载均衡管理多台服务器上的流量

有效处理多云服务器设置的流量和数据传输负载可能是一个复杂的过程。然而,这是完全必要的,因为业务关键型应用程序需要高度可用的解决方案来管理繁重的工作负载。阿里云服务器负载均衡器(SLB) 简化了工作负载在服务器、网络链路和其他资源之间的分配&…

[附源码]SSM计算机毕业设计闲置物品交易管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

mac系统废纸篓可以恢复么,mac不小心清空了废纸篓怎么找回

在使用Mac电脑的过程中,有可能会出现各种意外,其中误删文件是很常见的一种。如果你不小心删除了废纸篓里还有用的文件,mac系统废纸篓可以恢复么? 一、我不小心删除了重要文件,还清倒了废纸篓 案例分享:mac…

软件测试面试题-一个前后端都能修改的bug,应该由谁修改?

其实这个问题还是问得比较有水平的一道面试题。 有很多人说,要不前端修改吧。那难道后端就不能修改吗? 之后又有人说,要不后端修改吧,那难道前端就不能修改吗? 瞬间求职者一脸懵逼。。。。 这道题该怎么去回答呢&…

在国内CDMP认证认可度如何?

随着数字化转型的深入,中国企业不再唯技术论,开始进行转型的整体思考和创新突破。数据是构成数字化业务重要材料,是企业运营变革和竞争优势塑造的核心动力,是实现数字化转型的坚实基础。越来越多的国内企业认识到数据治理知识在企…

spring复习04,静态代理动态代理,AOP

spring复习04,静态代理动态代理,AOP概念引入java代理模式静态代理静态代理模式的好处:静态代理模式的缺点:动态代理jdk动态代理1. InvocationHandler接口2. Proxy类jdk动态代理代码AOPAOP的概念spirng中aop的实现方式一:spring原生的接口方式二&#xff…

基于树莓派的freeRDP桌面云终端的简单实现

VDI虚拟桌面云系统可以通过RmoteFX, PCoIP,HDX等远程桌面显示协议将服务器端的虚拟操作系统桌面环境在远程云终端上显示出来。商用的VDI系统需要部署服务器端虚拟机管理软件如System Center, XenServer等软件,购买价格不菲的服务器硬件,以及500~1000元之间的云终端接入设备。…

模糊控制算法实例matlab程序

参考文献《智能控制——刘金锟》 以水位的模糊控制为例。如图4一4所示,设有一个水箱,通过调节阀可向内注水和向外抽水。设计一个模糊控制器,通过调节阀门将水位稳定在固定点附近。按照日常的操作经验,可以得到基本的控制规则为&am…

TikTok营销策略 如何打造TikTok爆款视频?

最近,电商商家们总在问,如何打造出TikTok爆款视频,以吸引更多浏览量,刺激TikTok变现。这里不难发现,视频创作也只是一种TikTok营销方式,今天就来说说如何打造TikTok爆款视频。TikTok视频营销策略一——清晰…

模型案例推荐:电力大数据项目案例模型分享

电力行业大数据项目模型 电力高架线路巡检绝缘子缺陷智能检测 涉及关键技术: 语义分割 目标检测 图像增强 图像切分 主要工具:Python 技术大类:计算机视觉 主要业务问题: 随着我国经济的高速发展,国民用电量逐年增…

SpringCloud - Sleuth分布式请求链路跟踪

文章目录一.概述二.zipkin搭建三.Sleuth链路监控实现1. payment8001生产者修改2. Consumer80消费者修改3. 测试一.概述 在微服务框架中,一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果,每一个前段请求都会…

【信息检索与数据挖掘】期末笔记(一)

文章目录什么是信息检索词项-文档矩阵倒排索引构建过程前三步最后一步布尔检索模型布尔查询的处理查询优化如何存储词典哈希表树有序检索模型对基本布尔操作的扩展短语查询和位置索引短语查询第一个解决方案第二个解决方案更快的索引表合并什么是信息检索 信息检索是从大规模非…

nuxt3:我们开始吧!

一、背景介绍 2022 年 11 月 16 日,全球最大的 Nuxt 会议 Nuxt Nation 2022 在线举行,并正式发布了 Nuxt.js 3.0 的第一个稳定版本。Nuxt 3 是基于 Vite、Vue3 和 Nitro 的 Nuxt 框架的现代重写,具有一流的 Typescript 支持,是两…

深入浅出的给大家分析下现在做抖音短视频还来得及吗?

2500字,需要一些耐心用心读完,让自己对于未来更清晰一些! 大家好,我是我赢助手短视频运营,专注于短视频运营和创作;今天给大家分享下现在还来得及做短视频吗?深入浅出的给大家分析下这个问题。…

加缪——人生到底有什么意义?生命的意义就是生命本身

核心问题:人生到底有什么意义?如果人生没有意义,那么人是否应该自杀? 如果不是,那么人要以什么样的态度活着? 目录 一、《局外人》 二、名言 三、「个人感悟」对活着意义的幡然醒悟 四、《西西弗神话》…

SpringBoot+Vue实现前后端分离的校园健康检测管理系统

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue.js 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JD…

整合Druid数据源

1.数据库连接池简介 数据库连接池是个容器,负责分配、管理数据库连接(Connection)。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个; 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。…

如何构建 API 生态促进企业上下游合作

构建 API 生态是互联网趋势 技术变革推动API数量爆发式增长 互联网在这10多年里,已经经历了多次的技术变革: 2010年以前,还是比较传统的开发模式。单体架构,自己开发大部分的代码,只有少量边缘业务会使用开源的项目代…