用Redis做内存数据库,是个难题吗?
导语:业界很认可Redis内存数据库的优势,但是在巨大的成本特别是互联网瞬息万变的峰值流量冲击下,如何保证Redis内存数据库的稳定运行、如何能够满足任意时刻的压力需求,就成为摆在数据库管理者和运维人员面前的关键问题。
作为一名科技自媒体,我每天有3-4个小时都泡在知乎上,回答各种系统推送的问题和网友提问。
许多时候,这些提问都很有难度,解答需要花费一番心思。但或许是因为隔行如隔山的原因,有些时候你就会遇到比较有意思的问题,比如下面这个——
这个话题本来不需要特别的纠结,答案肯定是“可以”。但是基于性能因素,许多程序员、工程师们从不同的角度给出了五花八门的回答,其内容包括但是不限于“数据突然暴增、数据架构迁移困难”、“海量数据备份不靠谱”、“使用场景有限”、“内存占用率太高”……总结起来就是一句话——用户对于大流量场景下,Redis能否满足瞬时峰值压力没有信心。
那么,Redis内存数据库就无解了吗?其实并非如此。
为什么我们需要Redis内存数据库
如今我们处在数字化的时代,我们的一举一动、一言一行都可以变成数字化的语言。而在我们借助于数字化的手段、借助大数据构建精准的用户画像,进而推送用户感兴趣的增值业务,就需要一款性能强劲、扩展性强的数据库模型,也就是我们今天要讨论的主角——Redis。
Redis是一个支持持久化的内存数据库,可以提供5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上。除此之外,通过复制、持久化和客户端分片等特性,用户可以很方便地将Redis扩展成一个能够包含数百GB数据、每秒处理上百万次请求的系统。
也就是说,Redis基于内存进行数据存取的机制,能提供比固态盘更高的数据吞吐带宽和更低的数据处理延时,使得数据处理的速度得到大幅度提升。但是“代价”也显而易见,那就是Redis对于内存容量的依赖。DRAM内存的单条容量限制,以及DRAM内存价格的上涨,令单节点大容量内存配置的实现非常困难,也让Redis的应用成本先天就居高难下。
这也就出现了我们文章开头提到的问题——业界很认可Redis内存数据库的优势,但是在巨大的成本特别是互联网瞬息万变的峰值流量冲击下,如何保证Redis内存数据库的稳定运行、如何能够满足任意时刻的压力需求,就成为摆在数据库管理者和运维人员面前的关键问题:必须要到一款价格适中、性能强大、瞬时响应、可靠稳定的设备来承担流量压力的重任。而所有上述的用户痛点都指向了一款产品——英特尔傲腾持久内存。
它来了,它来了,它带着神器走来了
英特尔傲腾持久内存,原名叫做“英特尔傲腾数据中心级持久内存”,英文叫做Optane DC Persistent Memory。在英特尔定义的存储家族中,它是当之无愧的性能王者,也是系统中仅次于CPU缓存、内存的高性能存在。
这张图可以更好的体现英特尔傲腾持久内存在家族中的地位。我们看到在这座“金字塔”中,蓝色部分是内存与存储的相关内容,而其中最上层的就是英特尔傲腾持久内存,它的主要作用就是替代内存,提升系统性能——在传统 DRAM 和块存储(固态盘和旋转型磁盘)之间提供了一个大容量持久内存层,以较高的性价比提供出色的性能。
这种特性得益于英特尔傲腾持久内存所具备的APPDirect模式和内存模式两种“身份”——在 App Direct模式,经过专门调试的应用程序可从产品固有的持久性中充分获取价值并获得更大的容量;而在内存模式下,英特尔傲腾持久内存在受支持的操作系统或虚拟环境中运行的应用程序可直接扮演内存身份,最高容量可达512GB。
Redis内存数据库显然利用了英特尔傲腾持久内存的第二个“身份”,以更低的成本获得了远超于传统内存的投入产出比。如此一来,用户只需要将英特尔傲腾持久内存安装在DDR4内存插槽中,就能够与传统的DDR4内存共存于同一平台上,满足包括Redis在内的多种应用,并符合严苛的SLA要求。
经过多家用户的测试,在采用英特尔傲腾持久内存之后,无论是虚拟机还是物理服务器节点,其系统的成本相比之前都有了最高20%的成本降低,并具备了更大的横向扩展能力,也大大提升了原有系统的性能、效率和容量。更重要的是,伴随着系统内存容量的大幅度提升,我们就可以大大节省原有服务器节点的采购成本,最高成本节省可达40%之多。
我们正在迈向智能化的数据时代,数据作为这个时代的“石油”,为智能化提供源源不断的动力,却也需要精准的“提炼”与“燃烧”。英特尔傲腾持久内存的出现,大大提升了原有数据库的运行能力,使得数据挖掘和利用的时间大大缩短,也是加速数据“从原油到燃料”的反应过程,进而加快业务应用的脚步。
如今,任何涉及大容量内存的问题,都可以借助于英特尔傲腾持久内存得到解决。以往,我们总是纠结于大数据分析的优劣,既想要准确的数据分析结果又头疼高额的采购成本支出,如今英特尔傲腾持久内存的出现给了我们很好的解决方案,在保证性能和效果的前提下,最大限度的帮助用户节省投资。
所以,你觉得用Redis做内存数据库,还是个难题吗?
标签: