尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
ReadySet 服务端深度指南:透明数据库缓存架构、部署模式与核心配置解析
缓存后端数据库【免费下载链接】readysetReadyset is a MySQL and Postgres wire-compatible caching layer that sits in front of existing databases to speed up queries and horizontally scale read throughput. Under the hood, ReadySet caches the results of cached select statements and incrementally updates these results over time as the underlying data changes.项目地址https://gitcode.com/gh_mirrors/re/readyset点击查看免费下载导读本篇文章以开源项目 readyset-server 的官方 README 为骨架结合仓库源码系统讲解 ReadySet 作为 Postgres / MySQL 透明数据库缓存的工作原理、快速部署方式、server 与 adapter 双进程架构、核心命令行参数与运行模式。读完本文你将掌握 ReadySet 的核心概念wire-compatible、replication stream 驱动的自动失效、数据流图增量维护、本地开发环境的搭建步骤以及在生产场景中如何组合readyset-server与readyset适配器进程完成缓存部署。ReadySet 是什么一张挂在数据库前面的透明缓存层根据 readyset-server/README.md 的定义ReadySet 是一个面向 Postgres 与 MySQL 的透明数据库缓存transparent database cache它位于应用与数据库之间把复杂的 SQL 读请求转化为内存键值存储级别的快速查找与应用要求一致无需重写应用代码、无需手动处理缓存失效cache invalidation与其他缓存方案不同它通过**消费数据库的复制流replication stream**自动把缓存查询结果与上游数据库保持同步它在线上协议上与 Postgres 和 MySQL 兼容wire-compatible可直接对接你现有的 ORM 或数据库客户端。从源码结构看这一描述与仓库的分层设计完全对应readyset-server是数据流数据库服务器Cargo.toml 中description The Readyset>- [id1, titleHello world, votes42] [id1, titleHello world, votes43]负记录向后续视图宣告旧行失效、应被删除连接算子必须对正负记录各执行一次完整连接才能精确撤销旧的输出行详见 readyset-server/src/lib.rs。这一机制正是 README 所宣称自动与数据库保持同步、无需手动缓存失效的底层实现。仓库中的votes集成测试readyset-server/src/integration.rs用Article/Vote/VoteCount模型实际验证了这一数据流先插入文章与投票再校验聚合出的票数与连接结果的正确性。线程域Domain执行模型数据流被逻辑划分为线程域thread domains见 readyset-server/src/lib.rs每个域内状态访问无需加锁显著加速需要查询状态的算子如连接跨 worker 的域间通信使用 TCP同 worker 内使用内存通道域天然构成机器边界便于把计算分配到多核与多机。从 readyset-server/src/startup.rs 可以看到一个 ReadySet server 实例由三部分构成对外提供 RPC 的 HTTP 服务NoriaServerHttpRouter、包含 Leader 的控制器Controller、承载多个 Domain 的 WorkerWorker控制面迁移、结构变更走 HTTP数据面读写与域间数据流走 TCP 自定义协议readyset-server/src/startup.rs。快速开始五分钟跑通README 提供了最简单的一键启动方式bash -c $(curl -sSL https://launch.readyset.io)此外也支持通过Docker 镜像或Linux 二进制安装详细步骤可参考仓库内的 development.md 构建指南。本地开发环境的运行依赖若要基于源码本地运行需要先准备运行期依赖——上游数据库与 Consul用于 Leader 选举。仓库 development.md 建议通过 Docker Compose 一次性拉起 Consul、MySQL、Postgrescp docker-compose.override.yml.example docker-compose.override.yml docker-compose up -d仓库自带的 docker-compose.yml 提供了基础的 MySQLroot 密码readyset与 Postgres 14wal_levellogical这是逻辑复制所必需的容器。完整的部署则需要一个 MySQL 或 Postgres 上游数据库、一个运行中的 Consul 实例以及在启动 server 与 adapter 时传入数据库连接串。注意Consul 会按部署持久化数据。使用相同的 deployment 名称会沿用之前安装过的缓存查询development.md。从源码构建ReadySet 完全用 Rust 编写依赖rust-toolchain.toml指定的工具链版本。构建前需安装 clang、libclang-dev、libssl-dev、liblz4-dev、build-essential 等系统依赖Ubuntu 下可用sudo apt update sudo apt install -y build-essential libssl-dev pkg-config llvm clang liblz4-dev cmakemacOS 下则需brew install lz4与brew install openssl1.1见 development.md。在性能敏感场景下务必使用--release编译。双进程架构Server 与 AdapterREADME 反复强调 ReadySet 是位于应用与数据库之间的层实际落地为两个可执行文件进程二进制职责ReadySet Serverreadyset-server数据流引擎维护物化视图、消费复制流、执行增量计算ReadySet Adapterreadyset协议适配以 MySQL/Postgres 协议对外监听代理查询并转发给 server两个进程通过相同的 deployment 名称互相发现与通信。启动 Servercargo run --bin readyset-server --release -- --upstream-db-url upstream-url --deployment deployment name使用仓库 docker-compose 环境提供的数据库时MySQLmysql://root:readyset127.1/readysetPostgreSQLpostgresql://root:readyset127.1/readyset使用外部既有数据库时将upstream-url替换为对应连接串即可。从 readyset-server/src/main.rs 的Options结构可以梳理出 server 的核心参数参数环境变量默认值说明-a, --addressLISTEN_ADDRESS127.0.0.1监听 IP--external-addressEXTERNAL_ADDRESS同address向同 deployment 其他实例广播的 IP-p, --external-port—6033广播端口--use-aws-external-address——通过 AWS EC2 元数据服务获取外网 IP覆盖 external-address--deploymentDEPLOYMENTreadyset.dbdeployment ID同部署所有节点必须一致--authorityAUTHORITYstandalone权威节点类型local/standalone--authority-addressAUTHORITY_ADDRESS取决于 authoritystandalone 模式下指向部署存储目录--reader-only/--no-readersREADER_ONLY/NO_READERS—仅运行 reader 域 / 永不运行含 reader 节点的域高可用 embedded readers 模式--cannot-become-leader——禁止本实例被选举为 Leader--prometheus-metricsPROMETHEUS_METRICS—输出 Prometheus 指标--disable-telemetryDISABLE_TELEMETRYfalse关闭遥测上报其中AuthorityType定义于 readyset-client/src/consensus/mod.rsLocalAuthority适合单进程开发调试StandaloneAuthority则以本地存储目录为权威、支持多 worker。main.rs 中 standalone 模式下authority-address会被解析为deployment_dirreadyset-server/src/main.rs。server 主流程readyset-server/src/main.rs依次初始化并行行池与 tracing → 初始化遥测 → 解析外部地址 → 由WorkerOptions构建Builder→ 创建 Authority →builder.start()启动数据流引擎最后等待 Ctrl-C / SIGTERM 优雅退出。启动 AdapterMySQLcargo run --bin readyset --release -- --database-type mysql --upstream-db-url mysql://root:readyset127.1/readyset --allow-unauthenticated-connections --address 0.0.0.0:3307 --deployment deployment name --prometheus-metricsPostgrescargo run --bin readyset --release -- --database-type postgresql --upstream-db-url postgresql://postgres:readyset127.1/readyset --allow-unauthenticated-connections --address 0.0.0.0:5433 --deployment deployment name --prometheus-metricsadapter 在--address指定的地址监听客户端连接示例中 MySQL 走 3307、Postgres 走 5433。从 readyset/src/lib.rs 可以看到--database-type若省略会从--upstream-db-url/--cdc-db-url推断两者都提供时会校验一致性DatabaseType枚举定义在 database-utils/src/lib.rs--deployment-mode支持standalone默认进程内同时跑 adapter 与 server、embedded_readers、adapter三种模式readyset/src/lib.rs--allow-unauthenticated-connections允许免认证连接否则按--allowed-users或上游 URL 中的账号管理用户。adapter 启动时还会执行配置自检verify校验数据库类型、上游 URL、TLS、复制槽等readyset/src/verify.rs。上游连接配置server 与 adapter 共享的UpstreamConfigdatabase-utils/src/lib.rs提供以下连接参数参数环境变量说明--upstream-db-urlUPSTREAM_DB_URL上游数据库 URL含用户名密码用于代理查询--cdc-db-urlCDC_DB_URL复制与快照用 URL默认与 upstream 相同--disable-upstream-ssl-verificationDISABLE_UPSTREAM_SSL_VERIFICATION关闭上游 SSL 证书校验仅 Postgres有安全风险慎用--ssl-root-certSSL_ROOT_CERT上游连接信任的 PEM 根证书路径Prometheus 指标暴露--prometheus-metrics标志会在 adapter 中暴露一个 HTTP 端点通过 HTTP GET 请求adapter-address:6034/metrics即可拉取指标例如curl -X GET 127.0.0.1:6034/metrics在源码中server 与 adapter 都会以deployment为标签初始化全局指标记录器readyset-server/src/main.rs、readyset/src/lib.rsadapter 还会额外打上upstream_db_typemysql/psql标签指标内容涵盖版本、启动次数、CPU/内存/磁盘/NUMA 节点等主机信息。Worker 级参数内存、持久化与特性开关WorkerOptionsreadyset-server/src/builder.rs是 server 行为调优的核心参数集其中较常用的包括参数环境变量默认值说明-m, --memory-limitREADYSET_MEMORY_LIMIT进程可用内存的 80%堆内存高水位字节超出后从部分物化状态执行驱逐0 不限--memory-check-everyMEMORY_CHECK_EVERY100内存水位检查频率毫秒--eviction-policy—LRUreader 节点内存释放策略--storage-dirSTORAGE_DIR当前工作目录复制表数据存储目录实际路径为storage-dir/deployment见 readyset-server/src/builder.rs--working-dirWORKING_DIRstorage-dir 内子目录临时工作数据目录--durability—persistent基础表持久化模式persistent生产可用ephemeral/memory仅适合测试--rocksdb-block-cache-mbROCKSDB_BLOCK_CACHE_MB1024进程级 RocksDB 块缓存MiB对非平凡缓存查询的读性能影响最大--upquery-timeout-msUPQUERY_TIMEOUT_MS5000reader 等待 in-flight upquery 的超时毫秒超时后 adapter 回退到上游0 立即回退--table-request-timeout-secondsTABLE_REQUEST_TIMEOUT_SECONDS1800域表请求超时秒--background-recovery-interval-secondsBACKGROUND_RECOVERY_INTERVAL_SECONDS20存在未调度域时自动执行恢复的间隔部分实验性 SQL 能力通过特性开关控制均可用--feature-xxxfalse关闭且必须保证所有 server 与 adapter 进程取值一致见 readyset-server/src/builder.rs特性开关环境变量默认能力--feature-topkFEATURE_TOPKtrueTop K 查询默认开启--feature-paginationFEATURE_PAGINATIONfalse分页依赖 Top K--feature-post-lookupFEATURE_POST_LOOKUPfalse查询后处理lookup 后额外计算--feature-mixed-comparisonsFEATURE_MIXED_COMPARISONSfalse查询参数上的等值与范围混合比较--feature-straddled-joinsFEATURE_STRADDLED_JOINSfalse部分连接键追溯至两端的 straddled join--feature-materialization-persistenceFEATURE_MATERIALIZATION_PERSISTENCEfalse全物化节点持久化到磁盘实验性--feature-non-blocking-index-buildFEATURE_NON_BLOCKING_INDEX_BUILDtrue基于快照扫描 WAL 追赶的非阻塞索引构建测试与调优建议仓库 development.md 给出两条实用建议运行测试cargo test --skip integration_serial。文件名以_serial结尾的测试不能与其他测试并行如 readyset-server/src/integration_serial.rs直接cargo test -p readyset-server可能因包含串行测试而失败必要时先ulimit -Sn 65535提高文件描述符上限。性能场景务必使用--release编译并注意 RocksDB 块缓存--rocksdb-block-cache-mb的合理设置——源码注释明确指出它是非平凡缓存查询数据流读性能最大的杠杆。许可与社区ReadySet 采用BSL 1.1许可4 年后转为开源Apache 2.0任何节点数量均可免费使用。社区交流与贡献入口详见 readyset-server/README.md 的 Community support 与 Contributing 章节源码构建指南见 community-development.md。赞分享缓存后端数据库【免费下载链接】readysetReadyset is a MySQL and Postgres wire-compatible caching layer that sits in front of existing databases to speed up queries and horizontally scale read throughput. Under the hood, ReadySet caches the results of cached select statements and incrementally updates these results over time as the underlying data changes.项目地址https://gitcode.com/gh_mirrors/re/readyset点击查看免费下载相关推荐ReadySet终极指南5分钟部署PostgreSQL透明缓存加速数据库性能ReadySet终极指南5分钟部署PostgreSQL透明缓存加速数据库性能 ReadySet是一款革命性的PostgreSQL和MySQL透明数据库缓缓存后端数据库ReadySet数据库缓存终极部署指南Docker、二进制和云服务全攻略ReadySet数据库缓存终极部署指南Docker、二进制和云服务全攻略 ReadySet是一款专为PostgreSQL和MySQL设计的透明数据库缓存解决方缓存后端数据库Gitpod Server 组件深度解析核心后端服务的架构、API 与配置指南Gitpod Server 组件深度解析核心后端服务的架构、API 与配置指南 导读 Server 是 Gitpod 平台的核心后端服务它对外承载 dash开发工具后端云原生上一篇Beyond Compare 5密钥生成实战指南双模式激活方案深度解析下一篇Studio Library让Maya动画创作效率翻倍的智能姿势管理神器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

兰伯特转移问题详解:从数学原理到Python求解器

兰伯特转移问题详解:从数学原理到Python求解器

简介:面向航天工程与轨道力学领域的研究者和工程师,这份资源以MATLAB脚本形式实现兰伯特转移问题的求解,可用于两体模型下航天器从一点到另一点的快速轨道设计。兰伯特转移是轨道交会、星际任务转移中的基础工具,兼顾了理论严谨与…

📅 2026/10/13 2:37:09
用NumPy和Pandas玩转数据:road-to-machine-learning数据处理与EDA实战教程

用NumPy和Pandas玩转数据:road-to-machine-learning数据处理与EDA实战教程

文档教程机器学习人工智能 【免费下载链接】road-to-machine-learning A comprehensive, step-by-step guide to learning Machine Learning from absolute basics to advanced topics 项目地址: https://gitcode.com/gh_mirrors/ro/road-to-machine-learning 点击查…

📅 2026/10/13 2:32:08
FPGA差分信号缓冲原语IBUFDS、IBUFGDS与OBUFDS选型配置与避坑指南

FPGA差分信号缓冲原语IBUFDS、IBUFGDS与OBUFDS选型配置与避坑指南

1. 差分信号缓冲的工程价值与场景定位差分信号在FPGA设计里属于那种"平时不太显眼、出问题就要命"的基础设施。很多刚接触高速接口的工程师,第一次看到顶层端口上挂着IBUFDS、IBUFGDS、OBUFDS这几个原语时,往往一脸茫然——明明代码里信号名对…

📅 2026/10/13 2:32:08
MORE NEWS

更多资讯

📰

C++高阶数据结构——红黑树原理、旋转与代码实现

目录 前言: 一,红⿊树的概念 思考:红黑树如何确保最长路径不超过最短路径的2倍 红⿊树的效率: 二,红黑树与AVL树对比 三,红黑树的实现 红⿊树的结构 红黑树的插入 情况一:插入的是根节点…

📰

华为云码道 CodeArts 打造热水器升数:你家 13 升的热水器,冬天其实只有 8.8 升

你家 13 升的热水器,冬天其实只有 8.8 升 先说这东西是什么 一个零依赖的单页网页。你填四个数:机器标称升数、进水温度、想洗的温度、花洒实际流量。它告诉你三件事——这台机器此刻最多能给你多少升热水、够不够你家花洒、要撑住这个流量得买多大升数…

📰

C数据结构(顺序表)进阶(遗忘复习跟进C++):C++17标准

第一次写这么多内容&#xff0c;可否支持一下&#x1f64f;。 单链表目录前言流程规划初始编码1. 第一个问题&#xff1a;explicit 是什么2. std::size_t 是什么意思3. 为什么不把 4 直接写在 capacity_ 之后4. data_ std::make_unique<int[]>(capacity_); 是什么意思4.…

📰

高并发框架选型:别只看Star数,压测数据才是硬道理

1. 高并发选型的第一步&#xff1a;别让当年的Star数替你背锅上个月我去一个做跨境物流的团队帮忙排查问题。他们的库存服务在双月大促期间&#xff0c;单机峰值QPS一过800就开始大面积超时&#xff0c;数据库连接池被打穿&#xff0c;现场值班的人一边重启实例一边手动改熔断阈…

📰

电动汽车集群并网调度的分布式鲁棒优化模型及Matlab实现

接手过电动汽车有序充电项目的朋友应该都有这种体会&#xff1a;真到排第二天的充放电计划时&#xff0c;最让人头疼的往往不是求解器不够快&#xff0c;而是你根本说不清楚明天早上 8 点到底有多少辆车插着充电枪、每辆车还剩多少电、有多少车主愿意响应调度。电动汽车集群并网…

📰

OpenMontage深度解析:5.4万Star的开源视频神器,是革命还是半成品?

最近&#xff0c;一个叫 OpenMontage 的开源项目在GitHub上火了&#xff0c;Star数突破 5.4万&#xff0c;被不少人称为“视频创作者的终极福音”。 它号称是 首个开源、由AI智能体驱动的视频生产系统&#xff0c;能直接把你的AI编程助手&#xff08;比如Claude Code、Cursor、…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬