当前位置: 首页 > news >正文

neon walproposer

WAL proposer 连接所有三个 safekeeper

不是只连 donor。WalProposerStart:

void WalProposerStart(WalProposer *wp) { /* Initiate connections to all safekeeper nodes */ for (int i = 0; i < wp->n_safekeepers; i++) ResetConnection(&wp->safekeeper[i]); WalProposerLoop(wp); }

WAL 广播也是发给所有SS_ACTIVE 的 safekeeper:

static void BroadcastAppendRequest(WalProposer *wp) { for (int i = 0; i < wp->n_safekeepers; i++) if (wp->safekeeper[i].state == SS_ACTIVE) SendMessageToNode(&wp->safekeeper[i]); }

Quorum 只需要 2 个(walproposer.c:179wp->quorum = 3/2 + 1 = 2),但连接保持 3 个。

Paxos 在 WAL proposer 和 safekeeper 之间,不是 safekeeper 之间

流程全部由 WAL proposer 驱动:

WAL proposer (计算节点) safekeeper 1,2,3 │ │ ├─ Greeting ──────────────────→ │ 发起连接 │ │ ├─ VoteRequest ───────────────→ │ 请求投票 │←─ VoteResponse ────────────── │ 各回各的 │ │ ├─ 收集 quorum(≥2),选出 donor │ │ │ ├─ ProposerElected ───────────→ │ 宣布当选 │ │ ├─ AppendRequest(WAL) ─────────→ │ 推送 WAL │←─ AppendResponse ──────────── │ 各回各的确认

Safekeeper 之间不会互相投票、不会互相选举。WAL proposer 就是 Paxos 的 proposer,safekeeper 是 acceptor。

WAL 发三个,两个确认就算成功

核心在 walproposer.c:1956-1964:

// 收集所有 safekeeper 的 flushLsn 到数组 for (uint32 i = 0; i < mset->len; i++) { if (sk != NULL && sk->appendResponse.flushLsn >= wp->propTermStartLsn) responses[i] = sk->appendResponse.flushLsn; else responses[i] = 0; } qsort(responses, mset->len, sizeof(XLogRecPtr), CompareLsn); // 升序排列 // 取 "跳过 n - quorum 个" 之后的值 = 中间值 return responses[mset->len - MsetQuorum(mset)]; // = responses[3 - 2] // = responses[1] ← 升序排列后的第 2 个(中间值)

图示(3 个 safekeeper,quorum = 2):

safekeeper1 flushLsn = 100 safekeeper2 flushLsn = 200 safekeeper3 flushLsn = 300 升序: [100, 200, 300] ↑ ↑ responses[0] responses[2] responses[3 - 2] = responses[1] = 200 → commitLsn = 200(至少 2 个节点确认到这里)

这就是 Raft 标准做法:commit 到多数派都确认的位置。3 个里任意 2 个就行,所以即使你有一台 safekeeper 偶尔断连,业务也能正常工作。

WAL proposer 的超时看门狗机制:

wp_log(WARNING, "terminating connection to safekeeper '%s:%s' in '%s' state: no messages received during the last %dms or connection attempt took longer than that",

sk->host, sk->port, FormatSafekeeperState(sk), wp->config->safekeeper_connection_timeout);

ShutdownConnection(sk);

触发条件

WalProposerPoll()主循环中,每次轮询都会检查每个 safekeeper 连接:如果距离latestMsgReceivedAt(最后一次收到消息的时间)已经超过了safekeeper_connection_timeout(默认10000ms = 10秒),就会打印这条 WARNING,然后调用ShutdownConnection关闭该连接。

latestMsgReceivedAt只在三个地方更新:

行号场景
431发起连接时(进入SS_CONNECTING_WRITE状态)
593连接成功建立时
2449成功从 safekeeper 读取到消息时

出现告警是否正常?

不频繁出现是正常的— 属于连接超时后的自动恢复机制。safekeeper 连接被关闭后,ReconnectSafekeepers()会自动尝试重连。常见触发场景:

  1. 网络抖动— safekeeper 与 WAL proposer 之间网络短暂不通
  2. safekeeper 重启— 对端进程重启导致连接静默
  3. safekeeper 过载— CPU/IO 繁忙导致响应变慢,10秒内未回复任何消息

频繁出现则说明有问题需要排查

  • 网络是否稳定(丢包、延迟)
  • safekeeper 是否健康(CPU、IO、内存)
  • 10 秒的超时是否太短(可能通过wal_acceptor_connection_timeoutGUC 参数调整,定义在 walproposer_pg.c:66)

总结

这是 WAL proposer 的健康检查机制:超过 10 秒没收到 safekeeper 的消息就认为连接已死并重连。偶尔出现属于自愈行为,持续/频繁出现则需要排查网络或 safekeeper 节点状态

http://www.jsqmd.com/news/1115123/

相关文章:

  • 【金戈铁马】驰骋天下抓黑马主图选股公式用法详解
  • NS-USBLoader完整指南:Switch玩家的终极文件管理解决方案
  • 客服外包排行评选,你的品牌为何总落选
  • DeepSeek-V4如何用开源与成本穿透力重构AI服务范式
  • TM4C129XNCZAD与M24M01E-F的I²C存储扩展实战
  • Apache Shiro反序列化漏洞实战:从Vulhub复现到纵深防御
  • 5分钟快速上手:Windows平台Switch注入终极指南
  • 硬核实践:使用 Docker 部署生产级 Java环境
  • ActiveMQ反序列化漏洞CVE-2015-5254:原理、复现与防御
  • 冠宇仪器中标快检项目:盐都区农贸市场试剂采购彰显技术实力
  • 品牌升级怎么判断:从识别资产、业务变化到用户认知这几步先过一遍
  • 直流有刷电机驱动方案:TC78H653FTG与PIC18F4458应用解析
  • 从文件包含漏洞实战解析安全攻防:原理、复现与防御方案
  • STC3115与PIC18F87J10在电池管理系统中的核心价值与应用
  • Rewardful vs PartnerShare:2026 SaaS 联盟营销管理追踪软件对比指南
  • 面向业务设计持久层框架 Spring Jdbc Ultra
  • 廊坊市知名 GEO 公司大揭秘!这些宝藏公司不容错过
  • 打破AI信息茧房!36氪AI工具测评抢跑营邀你共享一手经验,实现共赢
  • Python本体推理与知识表示实战指南
  • 【IDEA JDK编译版本校准黄金法则】:3分钟强制同步project、module、SDK、Maven、Gradle五维JDK版本(附自动检测脚本)
  • 如何用Mermaid Live Editor快速创建专业图表:完全指南
  • 致远OA A6信息泄露漏洞攻防实战:从原理到批量检测与修复
  • 基于74HC32与PIC18F4585的矩阵键盘硬件去抖动方案
  • 魔兽争霸3终极兼容性解决方案:Warcraft Helper技术解析与完整指南
  • WorkshopDL:无需Steam客户端,跨平台下载Steam创意工坊模组的最佳方案
  • 碾压Flask!2026 FastAPI高性能接口实战,零基础搭建高并发后端服务
  • 2026年AI大模型API中转网站亲测榜单发布 词元之河(TokenRiver.ai)硬核实力领跑全赛道
  • Autosar量产笔记索引:配置调试与避坑指南
  • 从五险一金到六险一金:你的职场福利到底升级了什么?(附全解析表格)
  • 科技早报(第2026-07-02期):模型竞赛与监视门