首页/新闻资讯/正文详情

Cachey 部署指南:内存/磁盘容量配置、TLS 自签证书与 io_uring 性能调优实战

发布时间:2026/11/3 19:10:13 来源:云帆数科 栏目:资讯中心
Cachey 部署指南:内存/磁盘容量配置、TLS 自签证书与 io_uring 性能调优实战
【免费下载链接】cacheyRead-through cache for object storage项目地址https://gitcode.com/gh_mirrors/cac/cachey点击查看免费下载Cachey 是一款高性能的对象存储 read-through 缓存专为 S3 兼容存储而设计用 Rust 编写并基于 foyer 实现「内存 磁盘」混合缓存。本文带你走完 Cachey 部署全流程从内存与磁盘容量配置、TLS 自签证书到 io_uring 性能调优手把手把缓存节点真正跑起来、调到位。Cachey 是什么为什么需要它Cachey 的定位是为不可变数据块immutable blobs加速读取。它把请求的字节范围映射到固定16 MiB 页上对齐查找并在缓存未命中时回源 S3。它的几个核心卖点直接影响你的部署取舍内存 磁盘两级缓存热数据留在内存冷数据落到磁盘容量远大于纯内存方案。并发合并coalescing同一缓存条目的并发请求只回源一次。对冲请求hedging自动向冗余桶发起对冲请求压低对象存储的尾部延迟。精确范围模式exact-range对大对象的小范围读取只缓存请求到的那一段。完整的 API 与行为说明可参考 README.md多副本回源与对冲策略见 docs/replica-reads.md。快速上手两种部署 Cachey 的方法Cachey 编译产物是一个名为server的二进制入口在 src/bin/server.rs既能用 Docker 一键拉起也能从源码构建。方法一Docker 一键部署仓库自带多阶段 Dockerfile构建阶段开启 jemalloc 优化运行时使用最小化的 distroless 镜像非常适合生产。docker build -t cachey . docker run -d --name cachey -p 8080:80 \ -v $(pwd)/cache:/data/cache \ cachey \ --memory 2GiB \ --disk-path /data/cache --disk-capacity 100GiB启动后可用curl http://localhost:8080/stats确认服务正常。方法二源码构建Rust 工具链git clone https://gitcode.com/gh_mirrors/cac/cachey cd cachey cargo build --locked --release --bin server构建完成后直接运行二进制./target/release/server \ --memory 4GiB \ --disk-path /var/cache/cachey --disk-capacity 50GiB \ --iouring提示仓库用 justfile 封装了build、run、test、clippy等常用命令装了 just 的话直接just run即可。内存与磁盘容量配置--memory / --disk-* 参数详解容量参数决定了缓存能「装下多少数据」是部署时最先要定的几个值。所有字节值都支持512MiB、2GB、1.5GiB这类带单位的写法解析逻辑见 src/bin/server.rs。内存容量--memory--memory控制内存缓存上限默认 4GiB。内存是第一级缓存命中延迟最低建议覆盖住你的热数据集超出部分会被驱逐到磁盘采用WriteOnEviction策略。磁盘缓存--disk-path / --disk-kind / --disk-capacity只有提供了--disk-path才会启用磁盘层否则服务日志会打印disk cache disabled见 src/bin/server.rs。--disk-path路径可以是目录配合fs或块设备配合block。--disk-kindfs文件系统默认或block块设备。在 Linux 下两者都会启用 direct IO绕过内核页缓存以获得稳定吞吐见 src/cache.rs。--disk-capacity磁盘缓存上限例如100GiB不指定时默认使用可用空间的 80%。磁盘层用 foyer 的块引擎组织每块固定容纳整页数据相关常量定义在 src/cache.rs。下载内存--max-download-memory这个值独立于缓存专门预留给「正在活跃下载的数据体」默认 1GiB且必须不小于一个缓存页16 MiB否则服务启动会直接报错见 src/service/mod.rs。高并发回源时适当调大避免下载排队。容量参数速查表参数默认值说明--memory4GiB内存缓存上限如512MiB、2GB--disk-path无不启用磁盘缓存路径目录fs或块设备block--disk-kindfs磁盘类型fs文件系统 /block块设备--disk-capacity可用空间的 80%磁盘缓存上限如100GiB--iouring关Linux 下用io_uring执行磁盘 IO--max-download-memory1GiB活跃下载独立占用的内存需 ≥ 16MiBTLS 安全配置自签证书与自有证书默认情况下 Cachey 走明文 HTTP端口 80。一旦启用 TLS默认端口会切到443见 src/bin/server.rs三者互斥由 clap 做参数校验。快速启用自签证书--tls-self自签证书用于内网或开发环境最省事。加一个--tls-self即可服务会在启动时用 rcgen 生成一张覆盖localhost、127.0.0.1、::1的自签证书实现见 src/bin/server.rs./target/release/server --tls-self --port 8443注意自签证书不受客户端信任客户端需要忽略证书校验例如curl -k https://localhost:8443/stats。日志里也会明确提示「clients will need to use --insecure」。使用自有证书--tls-cert --tls-key生产环境推荐用受信任的 CA 签发的证书。--tls-cert和--tls-key必须成对出现一个 cert.pem、一个 key.pem./target/release/server \ --tls-cert /etc/cachey/cert.pem \ --tls-key /etc/cachey/key.pem \ --port 8443证书通过 rustls 加载RustlsConfig::from_pem_file见 src/bin/server.rs。io_uring 性能调优实战磁盘层是混合缓存吞吐的关键。Cachey 默认使用传统的 psync IO 引擎在 Linux 上可以切换到io_uring以获得更高的异步 IO 吞吐。启用 io_uring--iouring加一个--iouring即可。该开关仅在 Linux 上生效非 Linux 平台会自动回退到 psync见 src/cache.rs。典型的 NVMe 块设备调优组合./target/release/server \ --memory 8GiB \ --disk-path /dev/nvme0n1 --disk-kind block \ --disk-capacity 500GiB \ --iouring调优下载超时与对冲hedging参数回源侧的三个参数共同决定了尾部延迟表现参数默认值集中在 src/object_store/config.rs--bucket-timeout-ms对单个桶的一次下载从准入到数据校验的超时默认5000ms。--download-timeout-ms包含桶选择与回退的整体下载超时默认10000ms。--hedge-budget-percent每成功一次下载可获得的对冲额度百分比默认5设为0则关闭早期对冲。对冲机制本身由一套「积分预算」驱动成功下载会补充积分触发对冲时扣减且对单桶对冲数、总并发对冲数都有上限实现见 src/object_store/budget.rs。存储偏慢、抖动大时可以适当提高对冲额度并收紧超时./target/release/server \ --bucket-timeout-ms 3000 \ --download-timeout-ms 6000 \ --hedge-budget-percent 10 \ --max-download-memory 2GiB部署后如何验证监控与压测Cachey 暴露了三个观测入口路由注册见 src/service/mod.rs方便做负载均衡和健康检查。GET /stats返回JSON形式的吞吐统计用于健康检查与负载均衡。GET /metrics返回Prometheus 文本格式的更完整指标含 foyer 与缓存条目计数。GET /fetch/{kind}/{object}真实的读数据接口kindobject组成缓存键必须携带Range头。/stats的返回只有两个 10 秒窗口的吞吐字段定义见 src/service/routes.rs{ egress_throughput_10s_bps: 123456789.0, ingress_throughput_10s_bps: 98765432.0 }一个最小的回源读取示例kindprod-videos请求前 1 KiBcurl -H Range: bytes0-1023 \ http://localhost:8080/fetch/prod-videos/movie-2024.mp4命中时返回206 Partial Content并带Content-Range与C0-Status头C0-Status末位为缓存时间戳0表示 miss。/metrics里还能看到foyer_storage_*、cachey_entry_requests_total等指标便于接 Prometheus Grafana 做容量规划。常见问题与参数速查Q磁盘层没生效确认传了--disk-path。只有该参数存在时才会构建磁盘缓存否则直接走纯内存。Q启动报「download memory must hold at least one cache page」--max-download-memory小于 16 MiB 所致把它调到 ≥ 16MiB默认 1GiB 即可。Q自签证书连不上客户端要忽略证书校验curl -k或改用自有证书--tls-cert--tls-key。Qio_uring 没效果该开关只在 Linux 生效且依赖内核对io_uring的支持非 Linux 会自动回退 psync。全量参数速查含 TLS 与端口参数默认值说明--memory4GiB内存缓存上限--disk-path/--disk-kind/--disk-capacity无 /fs/ 80% 可用空间磁盘缓存路径、类型、上限--iouring关Linux 下用io_uring执行磁盘 IO--max-download-memory1GiB活跃下载独立内存≥ 16MiB--bucket-timeout-ms5000单桶下载超时毫秒--download-timeout-ms10000含回退的整体下载超时毫秒--hedge-budget-percent5对冲额度百分比0 关闭--tls-self关使用自签证书客户端需--insecure--tls-cert/--tls-key关自有证书与私钥路径需成对--port80/443监听端口HTTPS 默认 443总结Cachey 的部署可以归纳成三步定容量--memory--disk-*决定两级缓存能装多少、上安全--tls-self或--tls-cert/--tls-key启用 HTTPS、调性能Linux 上开--iouring并用下载超时与对冲参数压住尾延迟。配合/stats与/metrics两个观测入口你就能快速验证配置是否到位、并据此做容量规划。把这套参数组合好一个稳定又高性能的对象存储缓存节点就跑起来了。赞分享【免费下载链接】cacheyRead-through cache for object storage项目地址https://gitcode.com/gh_mirrors/cac/cachey点击查看免费下载相关推荐goshs TLS实战自签名证书、Lets Encrypt与PKCS12快速配置指南goshs TLS实战自签名证书、Lets Encrypt与PKCS 12快速配置指南 goshs TLS 配置一次看懂本文带你快速掌握 goshs 单二Winboat虚拟机性能调优CPU、内存与磁盘配置最佳实践Winboat虚拟机性能调优CPU、内存与磁盘配置最佳实践 在Linux系统上运行Windows应用时性能瓶颈往往成为用户体验的最大障碍。Winboat作为桌面应用虚拟化shadcn/ui 选型与安装指南把这套可定制的 React 组件库变成你自己的shadcn/ui 选型与安装指南把这套可定制的 React 组件库变成你自己的 shadcn/ui 是一套开箱即用的 React 组件库它不通过 npm前端UI组件设计系统CLI上一篇ECC /review-pr 实测6 个专项 Agent 并行审 PR80% 置信度才放行下一篇48 小时登顶 GitHub 日榜一条命令删掉苹果 AI 模型的 RemoveMacAI 是怎么火的创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

Java Agent 接入 openjev:ONNX Runtime 部署 + 平均 8ms 延迟实测
Java Agent 接入 openjev:ONNX Runtime 部署 + 平均 8ms 延迟实测

Java Agent 接入 openjev:ONNX Runtime 部署 平均 8ms 延迟实测 【免费下载链接】openjev 项目地址: https://ai.gitcode.com/hf_mirrors/AlexWortega/openjev Jev 是近期 AI 圈最热的"非大模型":不逐 Token 生成文本,只对… · 2026/11/3 19:10:13

StartLux-Decision 38 项基准碾压 Jev 31 项:开源决策模型要换天了?
StartLux-Decision 38 项基准碾压 Jev 31 项:开源决策模型要换天了?

StartLux-Decision 38 项基准碾压 Jev 31 项:开源决策模型要换天了? 【免费下载链接】openjev 项目地址: https://ai.gitcode.com/hf_mirrors/AlexWortega/openjev 2026 年 9 月底,上海原点星辉(StartLux)开源… · 2026/11/3 19:10:13

三条红线别硬闯:语义、时效、验证——openjev 适用边界的血泪笔记
三条红线别硬闯:语义、时效、验证——openjev 适用边界的血泪笔记

三条红线别硬闯:语义、时效、验证——openjev 适用边界的血泪笔记 【免费下载链接】openjev 项目地址: https://ai.gitcode.com/hf_mirrors/AlexWortega/openjev Jev 火了。RLHF 之父 Diogo Almeida 带着"校准决策强化学习"(RLCD&… · 2026/11/3 19:10:13

ClaudeCode代码生成工具实战:从配置到项目集成
ClaudeCode代码生成工具实战:从配置到项目集成

1. 项目概述作为一名长期关注AI编程助手的开发者,最近终于有机会深度体验了ClaudeCode这款新兴的代码生成工具。与市面上其他AI编程助手不同,ClaudeCode在理解复杂业务逻辑和生成可维护代码方面展现出独特优势。本文将分享我从零开始使用ClaudeCode的完整… · 2026/11/4 10:16:36

手机和平板双设备登录:多端同步机制与官方协同实操
手机和平板双设备登录:多端同步机制与官方协同实操

手机和平板同时挂着微信,这件事我前后折腾了差不多两年。最早的时候只能一端在线,平板登录手机就掉线,后来官方逐步放开了多端同时在线的能力,我才算真正把"双设备登录"跑通。市面上有一类叫"WeChatPad"之类的… · 2026/11/4 10:16:36

LeetCode 86题:链表分割的核心技巧与实现细节
LeetCode 86题:链表分割的核心技巧与实现细节

1. LeetCode 86题知识点深度解析 这道链表分割问题看似简单,却蕴含着链表操作的多个核心知识点。我在刷题过程中发现,很多面试者能快速写出解法,但往往忽略了一些关键细节。让我们从实际代码案例出发,拆解这道题的解题思路和易错点… · 2026/11/4 10:16:36

Palantir FDE模式拆解:企业AI交付如何沉淀为可复用产品
Palantir FDE模式拆解:企业AI交付如何沉淀为可复用产品

企业级 AI 项目做久了,你会发现一个很拧巴的现象:Demo 阶段惊艳全场,POC 报告写得天花乱坠,可一旦要往生产环境推、要交付给客户、要让非技术同事真正用起来,进度就卡住了。Palantir 的 AI FDE(Forward Dep… · 2026/11/4 10:16:36

单向链表原理与Python实现详解
单向链表原理与Python实现详解

1. 单向链表基础概念解析单向链表是一种线性数据结构,由一系列节点通过指针单向连接而成。每个节点包含两个基本部分:数据域和指针域。数据域存储实际的数据元素,指针域则保存下一个节点的内存地址。这种非连续存储的特性使得链表在内存利用上… · 2026/11/4 10:16:36

微信开源WeKnora:Agentic RAG知识库系统架构与本地部署调优实战
微信开源WeKnora:Agentic RAG知识库系统架构与本地部署调优实战

1. 这个项目到底解决了什么问题 微信团队这次开源 WeKnora,在圈子里引起的讨论热度远超一般的技术发布。原因很简单:RAG 这件事,大家已经做了两三年,但真正能拿来就用、部署不折腾、效果还过得去的开源方案,屈指可数。… · 2026/11/4 10:15:29

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 3:16:49

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 6:59:29

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/4 7:02:38

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码