资讯详情

资讯详情

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),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →