Categories
程式開發

专为流式数据设计的另一种缓存:流式缓存技术解读


1 前言

传统的缓存解决方案将每一个缓存项都当作一个不可变的数据块对待,这在重度追加的注入工作负载上会产生很多问题,而这种模式的负载在Pravega上却非常常见。每一个追加到流上的事件因此要么需要有它自己独立的缓存项,要么需要缓存提供昂贵的“读取-修改-写入”操作。

为了能够做到对大小事件的注入都保持高性能 [1],同时提供近实时的尾端读取(Tail Read)和高吞吐量的历史读取(Historical Read),Pravega需要一种特殊的缓存以便能够原生支持流式存储系统上常见的工作负载。

流式缓存(Streaming Cache),在Pravega v0.7 [2]被首次引入,是一个从头设计的缓存。它专门针对流式数据并且为追加操作做了优化,同时将数据组织成一种有利于缓存淘汰和磁盘换出的结构。

并非所有的缓存都生来平等。而最重要的原则是选择适用于所应用系统的那种缓存,而这一原则对流式解决方案来说也不例外。在这篇文章中,我们会详细描述一种创新的缓存方案,它在流式用例上能够良好运作。

2 段存储如何缓存数据

段存储(Segment Store) [3]是Pravega中所有数据路径操作的核心。它处理所有注入事件,提供近实时的尾部读取和高吞吐量的历史读取。所有经过段存储的数据都最终路由经过读取索引(Read Index),它为一级存储和二级存储上的数据提供一种统一的视图。

原文链接:【https://www.infoq.cn/article/xVmAffiuL0kmO1wXaJBH】。未经作者许可,禁止转载。