Meta 公司新探索 | 利用 Alluxio 数据缓存降低 Presto 延迟

【信息科学与工程学】计算机科学与自动化——第一百五十五篇 缓存系统设计03 编号366-380共15个条目,涵盖了SQL/NoSQL数据库、小文件、对象、向量、CDN、应用框架等各类数据对CPU、GPU、ASIC、FPGA、NPU、内存、SSD、HDD、RAID卡、操作系统、Redis、容器、MPP数据库、CDN等缓存硬件和软件的配置需求。:mark_cache_size,uncompressed_cache_size,merge_tree配置。:调整vm.dirty_ratio,增大vfs_cache_pressure,启用透明大页。 阅读详情

概要速览📕

Meta 公司(前“Facebook 公司”,下文统称“Meta”)的 Presto 团队一直在与 Alluxio 合作为 Presto 提供开源数据缓存方案。该方案被用于 Meta 的多个用例,来降低从诸如 HDFS 等远端数据源扫描数据产生的查询延迟。实验证明,使用 Alluxio 数据缓存后,查询延迟和 IO 扫描都得到了显著优化。

我们发现,Meta 架构环境中的多个用例都得益于 Alluxio 数据缓存。以 Meta 的一个内部用例为例,其各分位的查询延迟分别下降了 33%(P50)、54%(P75)和 48%(P95)。此外,远端数据源扫描数据的 IO 性能提升了 57%。

Presto 架构📖

Presto 的架构允许存储和计算独立扩展,但是扫描远端存储中的数据可能会产生昂贵的操作成本,也难以达到交互式查询的低延迟要求。

Presto worker 只负责对从独立(通常是远端)数据源扫描的数据执行查询计划片段,而不会存储任何远端数据源的数据,因此计算可以进行弹性扩展。

下面的架构图清晰地展示了从远端 HDFS 读取数据的路径。每个 worker 都会独立地从远端数据源中读取数据,本文将只讨论对远端数据源读取操作的优化。

image.png

Presto +数据缓存架构📖

为了解决用例的亚秒级延迟问题,我们决定进行多种优化,其中一个重要的优化就是实现数据缓存。数据缓存作为一种传统的优化方式,能让工作数据集更靠近计算节点,减少对远端存储的访问,从而降低延迟并节约 IO 开销。

其中的困难在于,如果从远端数据源访问 PB 级别的数据时没有固定访问模式的话,如何能实现有效的数据缓存,此外,有效数据缓存的另一个要求是在 Presto 等分布式环境中实现数据的亲和性。

添加数据缓存功能后,Presto 的架构如下所示:

image.png

关于数据缓存,后面会有更详细的说明。

软亲和调度📖

Presto 目前的调度器在分配分片时已经把 worker 的负载纳入考量,因此该调度策略使得工作负载在 worker 之间均匀分配。但从数据本地性的角度来看,分片是随机分配的,不能保证任何亲和性,而亲和性恰恰是实现有效数据缓存的必备条件。对 Coordinator 而言,每次把分片分配给同一个 worker 至关重要,因为该 worker 可能已经缓存了分片所需的数据。

image.png

上图说明了亲和性调度是如何给 worker 分配分片的。

执行软亲和调度策略时,会尽可能将同一个分片分配给同一个 worker。软亲和调度器使用分片的哈希值来为分片选择一个首选 worker,软亲和调度器:

✓ 为分片计算其首选 worke。如果首选 worker 有充足的可用资源,那么调度器会把该分片分配给首选 worker。✓ 如果首选 worker 处于忙碌状态,那么调度器就会选择一个备选 worker,如果该备选 worker 有充足的可用资源,调度器就会把分片分配给它。✓ 如果备选 worker 也处于忙碌状态,那么调度器就会把分片分配给当前最空闲的 worker。

image.png

确定一个节点是否忙碌可通过两项配置来定义:

✓ 单节点最大分片数:node-scheduler.max-splits-per-node

✓ 单任务最大待定分片(pending split)数: node-scheduler.max-pending-splits-per-task

当某一节点上的分片数超过上述任一配置的限制时,该节点就被视为忙碌节点。可以看出,节点亲和性对于缓存的有效性至关重要。如果没有节点亲和性,同一分片可能会在不同的时间被不同的 worker 处理,这会导致冗余的分片数据缓存。

出于这个原因,如果亲和性调度器没能把分片分配给首选 worker 或者备选 worker(因均处于忙碌状态),调度器就会向被分配的 worker 发出信号,让其不要缓存分片数据。这意味着只有分片的首选或备选 worker 才会缓存该分片的数据。

数据缓存📖

Alluxio 文件系统是一个经常用作 Presto 分布式缓存服务的开源数据编排系统。为了在架构中实现亚秒级的查询延迟,我们希望进一步降低 Presto 和 Alluxio 之间的通信开销。因此, Alluxio 和 Presto 的核心团队进行合作, 从 Alluxio 服务中发展出一个单节点的嵌入式缓存库。

具体而言,Presto worker 通过标准的 HDFS 接口查询位于同一个 JVM 内的 Alluxio 本地缓存。当缓存命中时,Alluxio 本地缓存直接从本地磁盘读取数据,并将缓存数据返回给 Presto;否则,Alluxio 将访问远端数据源,并将数据缓存在本地磁盘上,以便后续查询。该缓存对 Presto 来说是完全透明的。一旦缓存出现问题(如本地磁盘发生故障),Presto 还可以直接从远端数据源读取数据,该工作流程如下图所示:

image.png

本地缓存的内部构成和配置

Alluxio 数据缓存是位于 Presto worker 节点上的库,它提供了一种与 HDFS 兼容的接口“AlluxioCachingFileSystem” ,作为 Presto worker 进行所有数据访问操作的主要接口。Alluxio 数据缓存包含的设计选项有:

基本缓存单元

根据 Alluxio 的经验以及 Meta 团队早期的实验,以固定的数据块大小来进行数据读写和清理是最有效的。为了减少元数据服务的存储和服务压力,Alluxio 系统中默认的缓存数据块大小为 64MB。由于我们采用的 Alluxio 数据缓存只需要在本地管理数据和元数据,所以我们大大调低了缓存的粒度,把默认缓存粒度设置成大小为 1MB 的 “page(页面)”。

缓存位置和层级

Alluxio 本地缓存默认将数据缓存到本地文件系统。每个缓存 page 作为单独的文件存储在目录下,目录结构如下:<BASE_DIR>/LOCAL/1048576/<BUCKET>/<PAGE>

✓ BASE_DIR 是缓存存储的根目录,可以通过 Presto 的配置项 “cache.base-directory ”来设置。

✓ LOCAL 表示缓存存储类型为 LOCAL(本地)。Alluxio 也支持 RocksDB 作为缓存存储。

✓ 1048576:代表数据块的大小为 1MB。

✓ BUCKET 作为各种页面文件的 bucket 的目录。之所以创建 bucket 是为了确保单一目录下不会有太多的文件,否则可能会导致性能很差。

✓ PAGE 代表以页面 ID 命名的文件。在 Presto 中,ID 是文件名的 md5 哈希值。

线程并发

每个 Presto worker 包含一组线程,每个线程执行不同的查询任务,但共享同一块数据缓存。因此,该 Alluxio 数据缓存需要具备跨线程的高并发度,以提供高吞吐量。也就是说,数据缓存需要允许多个线程并发地获取同一个 page,同时还能在清除缓存数据时确保线程安全。

缓存恢复

当 worker 启动(或重启)时,Alluxio 本地缓存会尝试复用已经存在于本地缓存目录中的缓存数据。如果缓存目录结构是兼容的,则会复用已缓存数据。

监控

Alluxio 在执行各种缓存相关操作时,会输出各种 JMX 指标。通过这些指标,系统管理员可以轻松地监控整个集群的缓存使用情况。

基准测试📖

我们以运行在某个生产集群上的查询来进行基准测试,该集群被当作测试集群来使用。

查询数:17320 集群大小:600 个节点单节点最大缓存容量:460GB 清除策略:LRU

缓存数据块大小:1MB, 意味着数据按 1MB 的大小读取、存储和清除。

查询执行时间优化(单位:毫秒):

image.png

从表格中可以看出,查询延迟有显著改善,其中 P50 的查询延迟降低了 33%,P75 降低了 54%,P95 降低了 48%。

开销节省

✓ Master 分支执行过程的总数据读取大小:582 TB

✓ 缓存分支执行过程的总数据读取大小:251 TB

节省的扫描数据量:57%

缓存命中率

在实验过程中,缓存命中率基本稳定地保持在较高的水平,多数时间维持在 0.9 和 1 之间。中间可能是由于新查询扫描大量新数据的原因出现了一些下降。我们需要添加一些其他算法来防止出现访问不太频繁的数据块相较于访问频繁的数据块更容易被缓存的情况。

如何使用?📖

使用数据缓存前,我们要做的第一件事就是启用软亲和调度策略,数据缓存不支持随机节点调度策略。

要启用软亲和调度策略,在 coordinator 中需要进行如下配置:

 "hive.node-selection-strategy", "SOFT_AFFINITY”

复制代码

要使用默认(随机)节点调度策略,则设置如下:

"hive.node-selection-strategy", "NO_PREFERENCE”

复制代码

要启用 Alluxio 数据缓存,在 worker 节点采用如下配置:

✓ 启用 worker 节点上的数据缓存=> "cache.enabled", "true"

✓ 将数据缓存类型设置为 Alluxio=> "cache.type", "ALLUXIO"

✓ 设置缓存数据存储的基本目录(base directory) => "cache.base-directory", "file:///cache"

✓ 配置单个 worker 缓存所能使用的最大数据容量:"cache.alluxio.max-cache-size", "500GB"

其他有用的配置如下

Coordinator 配置(可用来配置忙碌 worker 的定义):

✓ 设置单任务最大待定分片数:node-scheduler.max-pending-splits-per-task

✓ 设置单节点最大分片数:node-scheduler.max-splits-per-node

Worker 配置:

✓ 启用 Alluxio 缓存指标(默认:true): cache.alluxio.metrics-enabled

✓ Alluxio 缓存指标的 JMX 类名(默认: alluxio.metrics.sink.JmxSink): cache.alluxio.metrics-enabled

✓ Alluxio 缓存使用的指标域名:(默认: com.facebook.alluxio): cache.alluxio.metrics-domain

✓ Alluxio 缓存是否要异步写入缓存(默认: false): cache.alluxio.async-write-enabled

✓ Alluxio 缓存是否要验证已有的配置(默认: false): cache.alluxio.config-validation-enabled

Alluxio 数据缓存为其缓存操作输出各种 JMX 指标。点击查看指标名称的完整列表。

下一步工作📖

✓ 实现通过限速器(rate limiter)控制缓存写入操作的速率,从而避免闪存耐久性问题;

✓ 实现语义感知缓存,提高缓存效率;✓ 建立清理缓存目录的机制,用于维护或重新启动。

✓ 可执行“dry run”模式

✓ 能够施加各种容量使用限制,例如单表缓存配额限制,单分区缓存配额限制或单模式缓存配额限制。

✓ 构建更强大的 worker 节点调度机制。

✓ 增加新的算法实现,防止出现访问不太频繁的数据块相较于访问频繁的数据块更容易被缓存的情况。

✓ 容错性:目前,当集群中的节点数量发生变化时,基于哈希的节点调度算法会出现问题。我们正在努力实现更鲁棒的算法,如一致性哈希。

✓ 更好的负载均衡:当我们把其他因素如分片大小、节点资源等纳入考量后,我们就能更好地定义“忙碌”节点,继而在实现负载均衡方面做出更明智的决策。

✓ 亲和性标准:目前,Presto 集群内的亲和性粒度是文件级的。如果不能在该粒度标准下达到最佳性能,则需要调整我们的亲和性标准,使其更加细粒度,并在负载均衡和良好的缓存命中率之间找到平衡点,从而实现更好的整体性能。

✓ 提高 Alluxio 缓存库的资源利用率。

【信息科学与工程学】【数据中心】 第七篇 智算中心CLOS组网整体设计 区域主要功能网络要求技术选型安全等级可用性要求训练区​大规模AI模型训练,分布式计算超高带宽(100G+),超低延迟(<1ms),无损网络RoCEv2,PFC,DCQCN,多路径P4(最高)99.99%推理区​实时AI推理,模型服务低延迟(<10ms),高可用,弹性扩展智能负载均衡,服务网格,容器网络P3(高)99.999%公共服务区​统一认证,API网关,数据服务多租户隔离,安全防护,弹性带宽VXLAN,EVPN,微隔离P3(高)99.99%存储区​高性能存储,数据湖超高带宽,低延迟,高IOPSNVMe- 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化—第十五篇 云计算 11 算法篇02

但若第一个应用需求40GB/s,第二个10GB/s,总需求50GB/s>40GB/s,第一个得32GB/s,第二个得8GB/s,不公平。但若分区负载不均(分区1-2各有100任务/s,分区3-4各有50任务/s),A负责1-2(200/s),B负责3-4(100/s),仍均衡。任务 τi​ 的计算需求 Wi​(CPU周期),在频率 f 下执行时间 Ti​=Wi​/f,能耗 Ei​=Pdyn​⋅Ti​=Ceff​⋅V2⋅f⋅(Wi​/f)=Ceff​⋅V2⋅Wi​。若 Mneed​>Mi​,需使用远程显存。

weixin_49199313的博客 107

Presto 使用 Alluxio

Presto 使用 Alluxio

qq_58554045的博客 3256

【信息科学与工程学】计算机科学与自动化——第三百零四篇 高性能系统开发指南01

高并发:限流、熔断、降级高性能:红包拆分、多级缓存、大Key/热Key拆分、Pipeline、线程池、RocketMQ零丢失、幂等、分布式锁、集群缩容、分批入库海量数据处理:日志分表分片、跨表查询、冷热分层、大数据引擎服务器选型系统安全:网关安全、服务器安全、云存储安全、风控、监控、测试数据一致性:缓存与数据库一致性、大厂方案、蓝绿回滚、流量一致性、流程一致性项目与团队管理:流程问题、管理问题(风险、成本、人员、文档、培训)稳定性建设:上线三板斧、线上五步闭环、混沌工程、容量规划。

weixin_49199313的博客 249

Presto+Alluxio数据平台实战

Presto是由Facebook开发的开源大数据分布式高性能 SQL查询引擎。起初,Facebook使用Hive来进行交互式查询分析,但 Hive是基于MapReduce为批处理而设计的,延时很高,满足不了用户对于交互式查询想要快速出结果的场景。为了解决Hive并不擅长的交互式查询领域,Facebook 开发了Presto,它专注于提供低延时、高性能的交互式查询服务。

datacreating的博客 1631

presto集成tachyon(alluxio)

presto集成tachyon

PPT| 公司网络安全意识培训 P73

近年来,随着互联网的不断发展,网络安全问题也日益凸显,各种网络安全事件层出不穷,对个人和企业的信息安全带来了巨大的威胁。针对这一现状,国家加强了对信息安全的保护,相继颁布了多项法律法规,其中最重要的就是网络安全法。本文将从网络安全法和其他相关法律入手,对信息安全的保护措施进行深入分析。 本人在四大咨询机构从事咨询工作多年,二十年一线数字化规划咨询经验,提供制造业数智化转型规划服务,顶层规划/企业架构/数据治理/数据安全解决方案资料干货. 该PPT共73页,原文获取及来源公众号:【智能制造数字化咨询】

waldensss的博客 1422

基于HDFS的Alluxio分布式缓存部署

Alluxio是一个面向基于云的数据分析和人工智能的开源的数据编排技术。Alluxio为数据驱动型应用和存储系统构建了桥梁,将数据从存储层移动到距离数据驱动型应用更近的位置,从而能够更容易被访问, 同时使得应用程序能够通过一个公共接口连接到许多存储系统。本文的目的在于基于HDFS分布式文件系统,部署Alluxio分布式缓存集群。

weixin_46031805的博客 1942

ZYNQ-Video out IP与Video Timing Controller IP协同工作模式解析

本文深入解析了ZYNQ平台上Video out IP与Video Timing Controller IP的协同工作模式,详细介绍了它们的架构、工作原理及配置要点。通过AXI4-Stream接口实现高效视频数据传输,并结合HDMI输出系统设计实践,为开发者提供了实用的调试技巧和性能优化建议。

redis7keeper的博客 637

金山云团队分享 | 5000字读懂Presto如何与Alluxio搭配

金山云-企业云团队在交互查询场景下对Presto与Alluxio相结合进行了一系列测试,并总结了一些Presto搭配Alluxio使用的建议。

Alluxio的博客 815

QComboBox设置最大显示数量多余的用滑动条,以及QComboBox::setMaxVisibleItems()不起作用的问题

QComoboBox是Qt封装的一个选择框的东西,但是我在使用过程中有一点感觉很不好,如图: 不论你往里面添加多少个它都会给你显示全部,甚至给你铺满全屏,后来看了官方文档发现有个setMaxVisibleItems()的方法,我欣喜若狂啊,终于特么的能解决了,但是,很遗憾,不知为啥,我设置上之后并没有起作用,依然会显示全部,后来搜了百度发现有个人是这样解决的 QComboBox *box = ne...

Aboveground的博客 4919

Halcon实战:如何快速找到图像中的多个圆并计算圆心距离(附完整代码)

本文详细介绍了Halcon在工业视觉检测中快速定位图像中的多个圆并计算圆心间距离的实战方法。通过两种核心算法(阈值分割和动态阈值)的对比分析,结合完整代码示例和参数调优技巧,帮助开发者高效解决多圆检测问题,提升工业检测精度与效率。

weixin_33701251的博客 316

Meta公司新探索 | 利用Alluxio数据缓存降低Presto延迟

当面试官问你,如何优化查询延迟和IO扫描,这篇文章就是答案

Alluxio的博客 1160

雷达信号处理中的CLEAN算法实现与优化

在信号处理领域,杂波抑制是提升目标检测性能的关键技术。CLEAN算法作为一种迭代去卷积方法,通过逐步提取最强信号分量并消除其影响,有效解决了传统方法在复杂环境下的局限性。该算法结合自适应阈值和噪声基底估计,显著提高了雷达信号处理的精度和鲁棒性。在工程实践中,CLEAN算法广泛应用于气象雷达、地物杂波抑制等场景,通过Matlab仿真可以快速验证算法性能并优化参数设置。本文重点探讨了CLEAN算法在雷达信号处理中的实现细节和优化技巧,包括距离徙动补偿、多普勒补偿等关键技术。

weixin_32430941的博客 263

避免 Presto 中的数据孤岛:从 Raptor 到 RaptorX 的旅程

Raptor 是一个 Presto connector (presto-raptor),用于支持 Meta(以前的 Facebook)中的一些关键的交互式查询工作负载。尽管在 ICDE 2...

过往记忆大数据 4069

把静态前端托管进 SAP BTP:HTML5 Application Deployer 与企业级内容部署全攻略

本文介绍了在SAP BTP Cloud Foundry环境中使用HTML5 Application Repository托管前端静态资源的工程化实践。通过HTML5 Application Deployer工具,结合MTA描述、路由配置和服务实例,实现前后端解耦和标准化部署。文章详细阐述了目录结构、关键配置文件、MTA编排以及构建部署流程,并针对大体积前端资源提供了GACD和异步上传两种解决方案。最后说明了如何与AppRouter协同工作,使部署内容可供终端用户访问。这套方法使前端更新无需重启后端,支持团队

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 155

100天精通Python(可视化篇)——第89天:Bokeh库绘图可视化基础入门(参数说明+案例实战)

专栏导读 一、Bokeh是什么? 二、安装与导入 三、Bokeh接口介绍 四、创建图表 五、添加自定义渲染器 切换主题 添加图例 图例位置 图例方向 图例背景和边界 图例文本的外观 行列布局 网格布局

努力让自己发光,对的人才能迎着光而来 1万+

大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建二

本文介绍了多个大数据组件的安装配置要点,包括MySQL5.6、Spark3.2.1、Presto0.272、Zeppelin0.11.2、Kafka3.7.2、Doris2.1和Apache Celeborn0.5.4。重点强调了各组件安装时的版本兼容性问题和关键配置项,如Spark3.x的端口修改、Guava包替换、Presto与Hadoop3.0的适配、Zeppelin的Spark配置准确性等。特别对国产组件Doris和新兴的Shuffle服务Celeborn进行了详细介绍,包括版本选择建议和典型配置参

别人笑我太疯癫,我笑他人看不穿。 1031

智能水下机器人设计: 基于MATLAB的水下机器人动力学建模和控制系统设计,包括水下环境感知、路径规划和任务执行等

智能水下机器人是指能够在水下自主完成各种任务的机器人,例如探测、勘察、救援等。它具有广阔的应用前景,可用于海洋环境监测、水下考古、海上作业等领域。基于MATLAB的水下机器人设计可以为科研人员和工程师提供强大的建模和仿真工具,帮助他们设计更智能、更高效的水下机器人。智能水下机器人是未来海洋科技发展的重要方向,它将为海洋科学研究、水下考古和海上作业等领域带来新的机遇。MATLAB是一种功能强大的数学和科学计算软件,它可以为智能水下机器人设计提供强大的工具和支持。

走向CTO的路上... 962

Alluxio与Presto集成完整指南:5步实现查询性能翻倍 [特殊字符]

Alluxio作为云原生数据编排平台,与Presto分布式SQL查询引擎的深度集成能够显著提升数据分析性能。通过智能缓存、数据本地化和统一命名空间等核心技术,Alluxio为Presto提供高速数据访问能力,实现查询性能翻倍。本指南将详细介绍如何通过5个简单步骤完成集成配置。 ## 📊 为什么Alluxio能提升Presto性能? Alluxio在Presto与底层存储之间建立了一个智能缓存

gitblog_00999的博客 790

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Alluxio元数据问题浅析

Alluxio作为分布式内存缓存系统,虽然能够提高大数据、AI场景等的数据处理速度,但其实也增加了系统的复杂度。本文在前文中部署Alluxio的基础上,简要分析Alluxio与UFS之间的元数据同步问题,并给出了官方推荐用来解决元数据问题的方法。

a604947740的博客 961

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

了解分布式缓存系统 Alluxio

文章目录分布式是什么??缓存是什么??Alluxio 基础概念Alluxio 基础组成 从技术上来讲,Alluxio 是一个数据编排技术(数据编排,大概类似于一个平台,这个平台是用来管理数据的,主要是管理,对象是数据),它相当于一个数据层,在应用层和存储层之间加了一层,为上下两层搭建了桥梁,将数据移到离应用更近的地方,从而更容易访问数据。 数据驱动型应用是什么样的应用? 数据驱动:以数据为基础,将数据组织成信息,然后利用机器学习、算法等手段处理信息,最终形成自动化的决策模型。数据驱动型应用是以数据为基础,对

Withered Wood 1068

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Trino集成Alluxio Local Data Cache

Alluxio是以内存为中心的分布式虚拟存储系统,是大数据和机器学习生态系统中的新数据访问层。Alluxio在上层计算框架和底层存储系统之间架起了桥梁,应用层只需要访问Alluxio即可以访问底层对接了的任意存储系统的数据。本篇文章主要讲trino如何通过Alluxio构建Local Data Cache方案来加速IO密集型的query。

sleep1661的专栏 1393

Alluxio缓存策略

重新认识一下Alluxio Alluxio是一个基于内存的分布式缓存开源项目 Alluxio架构示意图: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vYsBy87-1598777030069)(quiver-image-url/366F796BD55E15FF0EC884D72AF4E19A.jpg =1446x794)] 缓存现状 缓存名词解释 缓存穿透 缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,这时的用户很可能是攻击者,攻击会导致数据库压力过大

东方小硕 2060

Alluxio技术内幕:高性能的异步读缓存

概览Alluxio服务通过连接底层持久化存储并按需将数据缓存至内存中,为不同的应用作业提供了一个可以高速并发访问的数据层。在Alluxio中,每一个文件根据其大小在逻辑上被划分成不同的“块”(默认512MB)。块在Alluxio中是缓存的最小单位。当Alluxio客户端用从Alluxio服务中读取文件时,如果被请求的数据块并未缓存在A...

yilan1993的专栏 426

Uber实战案例:基于Alluxio实现Presto缓存

01 Uber的业务场景 如上图所示,在Uber,所有的决策都与数据有关。Presto以及其他各种查询引擎在Uber是被广泛使用的。例如,运营团队在Dashboard等服务中大量使用了Presto,而UberEats和市场团队也依赖于这些查询结果来确定价格。此外,Presto也在Uber的合规部、增长营销部门、ad-hoc数据分析等场景下使用。 上图展示了Uber内部的一些重要数据。总的来说,目前Presto在Uber内部有12K的月活跃用户,每天要处理400K的查询并且要处理超过50PB的数据。在基.

Alluxio的博客 1452
上一篇: 数据中台建设(四):企业构建数据中台评估
下一篇: 数据产品经理的三大底层思维
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值