简单地说,我们现在是Redis
对于熟悉Redis的人来说,创建一个保证酸的-ish(原子性、一致性、隔离性、持久性)操作:只需创建一个具有“主”角色的Redis实例,并将其配置为对持久存储设备的每次写入(“appendfsync always”)的AOF。此配置通过以下方式提供ACID特性:
也就是说,大多数Redis用户不喜欢在这种配置下运行Redis,因为它会极大地影响性能。例如,如果持久化存储当前很忙,Redis会等待请求的执行,直到存储再次可用。
考虑到这一点,我们想确定Redis Enterprise (Redis万博体育彩e)集群可以处理ACID事务。我们对Redis做了一些内置的增强e在ACID配置中实现更好性能的架构,包括:
我们在AWS VPC内部部署了如下基准配置:
尽管测试了多种类型的负载,包括不同的读/写比率;不同的对象大小(从100B到6KB);多个连接数;有无流水线;对于持久的“写入”操作,我们无法获得少于1毫秒的延迟,其中延迟是从请求的第一个字节到达集群时开始测量的,直到“写入”响应的第一个字节被发送回客户端为止。最后,我们在一个连接上测试了一个请求,但仍然无法获得小于2-3毫秒的延迟。我们进行了更深入的分析,发现在ACID配置下,AWS云上的任何实例与EBS存储之间的延迟都不可能少于两毫秒。
由于我们的大多数客户希望延迟小于1毫秒,所以我们决定寻找替代方案。
简而言之,VMAX是一个基于简单、智能、模块化存储策略的存储阵列家族。它集成了一个动态虚拟矩阵接口,连接和共享所有VMAX引擎的资源,允许存储阵列从入门级配置无缝增长到世界上最大的存储阵列。
就性能而言,VMAX可以从一个引擎扩展到八个引擎(V-Bricks)。每个引擎都由双控制器组成,每个控制器都具有2插槽Intel CPU、前端和后端连接、硬件压缩模块、Infiniband内部结构以及大型镜像和持久缓存。所有写入操作都会在向VMAX缓存注册后立即向主机确认,直到稍后(可能是在多次更新之后)才会写入闪存。读取还受益于VMAX大型缓存。当请求读取尚未在缓存中的数据时,FlashBoost技术将I/O直接从后端(闪存)传送到前端(主机),然后在缓存中暂存以备将来可能的访问。
我们建立了以下基准环境:
以下是一些更详细的信息:
正如所料,“阅读”密集型测试提供了最好的结果;这就是说,我们非常惊讶地看到,在标准的1:1读/写用例中,100B项大小超过660K操作/秒,而在写密集型场景中,整个操作数(即640K操作/秒)仅略低。6000B的结果也给我们留下了深刻的印象,即使在写密集型场景下,例如在单个群集节点上的80K ops/sec延迟为亚毫秒。
我们很惊讶(也很高兴)地发现,对于像Dell-EMC VMAX这样的高端持久存储设备,只有一个Redise群集节点可以支持650K以上的ACID操作/秒,同时保持亚毫秒的数据库延迟。
另一方面,我们失望地看到,我们无法在最先进的云存储基础设施(即AWS io1 EBS)上以亚毫秒的延迟运行单个持久操作。有了大量的先进技术和公共云服务,我们还有很多路要走。
完整的Redis与Dell-EMC VMAX性能评估测试和最佳实践可以在我们的网站上找到在这里
memtier_benchmark参数
每个测试都使用下列memtier_benchmark参数运行