首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
Neon safekeeper任务
📅 2026/10/31 22:25:09
✍️ 爱科研究院
👁 阅读 3,247
safekeeper 的运行时与任务架构safekeeper 使用 5 个独立的 Tokio Runtime通过LazyRuntime静态变量定义每个 runtime 运行在独立的 OS 线程池上从而把 WAL 服务、HTTP 管理接口、Broker 通信、备份导出和后台维护任务彼此隔离避免某一类任务阻塞影响其他关键路径。Runtime 名称线程数用途WAL_SERVICE_RUNTIME默认CPU 核心数WAL 服务主循环接收 compute / pageserver 连接HTTP_RUNTIME默认CPU 核心数HTTP / HTTPS 管理 API 服务BROKER_RUNTIME2 个固定线程与 storage_broker 通信WAL_BACKUP_RUNTIME默认CPU 核心数WAL 备份 / 导出到远程存储BACKGROUND_RUNTIME1 个线程Hadron 后台任务磁盘监控、指标采集主任务树Tasks1. WAL Service 任务wal_service.rstask_main监听 TCP 端口accept 客户端连接后通过tokio::spawn处理每个连接。每个连接生成一个 connection handler task后台异步任务执行 Postgres 协议握手并处理命令START_WAL_PUSH/START_REPLICATION。对应handler.rs中的SafekeeperPostgresHandler。2. HTTP / HTTPS 服务任务http/mod.rstask_main_http/task_main_https通过 Hyper 提供 HTTP 管理 API。路由定义在http/routes.rs处理 timeline 创建 / 删除、metrics 等请求。3. Broker 任务broker.rstask_main协调整个 broker 通信包含三个子任务循环push_loop每秒向 broker 推送所有活跃 timeline 的状态信息。pull_loop从 broker 订阅并拉取其他 safekeeper 的状态更新。discover_loop处理 discovery 请求safekeeper 节点发现。task_stats监控 broker 连接健康超过 10s 无更新则告警。子任务失败会自动重启通过JoinHandletokio::select!轮询。4. Timeline Manager 任务timeline_manager.rs每条 timeline 一个main_taskManager由GlobalTimelines::init()加载时启动。管理该 timeline 的所有后台子任务recovery_taskpeer 恢复recovery.rs。backup_task全量 WAL 备份wal_backup.rs。partial_backup_task部分段备份上传wal_backup_partial.rs。wal_removal_taskWAL 段清理回收。每 300ms 检查一次 timeline 状态决定是否需要驱逐offload。5. 全局后台任务bin/safekeeper.rsTimeline map housekeeping每 24 小时清理已删除 timeline 的 tombstone。Global disk usage watcherHadron定期扫描磁盘使用率触发熔断。Metrics collectionHadron定期强制刷新 Prometheus 指标。工作配合流程flowchart TD Main[Main (current_thread) start_safekeeper()] -- WAL[WAL_SERVICE_RUNTIME task_main accept loop / spawn conn handler] Main -- HTTP[HTTP_RUNTIME task_main_http / task_main_https serve()] Main -- BROKER[BROKER_RUNTIME task_main push_loop / pull_loop / discover_loop / task_stats] Main -- BG[BACKGROUND_RUNTIME housekeeping / disk_watcher / metrics_collect] WAL -- TM[每条 timeline 独立 Manager recovery / backup / partial_backup / wal_removal] BROKER -- TM核心数据流Compute → WAL PushCompute 通过START_WAL_PUSH建立长连接推送 WAL 数据由receive_wal.rs处理并持久化到wal_storage.rs。Pageserver → ReplicationPageserver 通过START_REPLICATION消费已提交的 WAL由send_wal.rs发送。Broker 协调所有 safekeeper 通过 broker 交换 topology 信息实现 peer 发现和恢复。Manager 决策每条 timeline 的 manager 根据commit_lsn、remote_consistent_lsn等决定 WAL 清理、备份上传、offload 驱逐等动作。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/10/31 22:25:09
网页一改版爬虫就全崩?LLM自愈爬虫实战:选择器自动修复,运维量直降80%
2026/10/31 22:25:09
“软件已死”?独立开发大佬退订几乎所有工作软件:要啥让AI造
2026/10/31 22:20:08
Mac Mouse Fix 指南:10 美元鼠标也能调出 Trackpad 手感
2026/10/31 23:25:18
动物病理学习笔记:疾病概论与血循环障碍的机制串联
2026/10/31 23:25:18
大模型Agent开发入门:从核心原理到实战避坑指南
2026/10/31 23:25:18
27B模型压缩至5.9GB:极端量化与长程智能体任务性能实测
2026/10/31 23:25:18
MySQL 8.0 Windows安装与优化配置指南
2026/10/31 23:25:15
东南亚地图shp格式资源详解:从图层结构到GIS实战应用
2026/10/31 23:20:14
VS Code+MiKTeX搭建高效本地LaTeX写作环境
2026/10/31 0:00:18
猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包
2026/10/31 0:00:18
HDU2017多校标程复现:算法竞赛工程化真题沙盒
2026/10/31 0:00:18
Codex Sandbox 隔离环境拆解:AI Agent 的临时实验室如何运作
2026/10/31 0:57:03
全国计算机二级C语言真题PDF高效刷题指南
2026/10/31 0:56:56
requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南
2026/10/30 21:48:31
递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现
2026/10/30 3:44:27
我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
2026/10/30 3:44:25
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026/10/30 3:44:29
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)