尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

Neon walproposer进程状态机

Neon walproposer进程状态机
📅 发布时间:2026/7/18 5:38:06

WAL Proposer 完整状态机

全局状态:wp->state(WalProposerState)

WPS_COLLECTING_TERMS → WPS_CAMPAIGN → WPS_ELECTED 收集握手/term 投票中 已当选,开始流复制

每个 Safekeeper 状态:sk->state(SafekeeperState)

┌──────────────────────────────────────────┐ │ 任何状态出错 → ShutdownConnection │ │ ↓ SS_OFFLINE │ │ ReconnectSafekeepers (每1s) │ │ ↓ ResetConnection │ └──────────────────────────────────────────┘ SS_OFFLINE ──ResetConnection──→ SS_CONNECTING_WRITE │ │ │ conn_connect_poll() │ │ │ ┌──────────────┼──────────────┐ │ ↓ ↓ ↓ │ POLLING_WRITING POLLING_READING POLLING_OK │ SS_CONNECTING_ SS_CONNECTING_ │ │ WRITE READ │ │ │ │ │ │ └── poll() ────┘ │ │ ↓ │ SendStartWALPush() │ │ │ ↓ │ SS_WAIT_EXEC_RESULT │ │ │ conn_get_query_result() │ │ │ ↓ COPYBOTH成功 │ SendProposerGreeting() │ │ [消息: ProposerGreeting 'g'] │ ↓ │ SS_HANDSHAKE_RECV │ │ │ AsyncReadMessage() → greetResponse │ │ │ ↓ │ SS_WAIT_VOTING (idle, 等待quorum) │ │ │ TermsCollected() → WPS_CAMPAIGN │ SendVoteRequest() │ │ [消息: VoteRequest 'v'] │ ↓ │ SS_WAIT_VERDICT │ │ │ AsyncReadMessage() → voteResponse │ │ │ VotesCollected() → WPS_ELECTED │ HandleElectedProposer() │ │ │ ↓ │ SS_WAIT_ELECTED (idle) │ │ │ SendProposerElected() [消息: ProposerElected 'e'] │ │ │ ↓ │ SS_SEND_ELECTED_FLUSH │ │ │ AsyncFlush() → OK │ │ │ StartStreaming() │ │ │ ↓ │ SS_ACTIVE ←── 流复制/心跳阶段 │ │ │ ┌───────────┼───────────┐ │ ↓ ↓ ↓ │ SS_ACTIVE_ SS_ACTIVE_ SS_ACTIVE_ │ SEND READ_WAL FLUSH │ │ │ │ └──── 循环 ──────────────┘ │ └── 超时/断连后回到 SS_OFFLINE,重新开始

消息流与处理函数对照表

阶段sk→wp 消息wp→sk 消息入口函数sk->state 变化
连接--ResetConnectionOFFLINE → CONNECTING_WRITE
TCP握手--HandleConnectionEventCONNECTING_* → (polling)
START_WAL_PUSH-SQL querySendStartWALPushCONNECTING_* → WAIT_EXEC_RESULT
执行结果CopyBoth响应-RecvStartWALPushResultWAIT_EXEC_RESULT → HANDSHAKE_RECV
握手-'g'GreetingSendProposerGreetingHANDSHAKE_RECV
握手响应'g'Greeting-RecvAcceptorGreetingHANDSHAKE_RECV → WAIT_VOTING
投票开始-'v'VoteRequestSendVoteRequestWAIT_VOTING → WAIT_VERDICT
投票响应'v'VoteResponse-RecvVoteResponseWAIT_VERDICT → WAIT_ELECTED
宣布当选-'e'ProposerElectedSendProposerElectedWAIT_ELECTED → SEND_ELECTED_FLUSH
Flush--AsyncFlush→StartStreamingSEND_ELECTED_FLUSH →SS_ACTIVE
WAL/心跳'a'AppendResponse'a'AppendRequestHandleActiveStateSS_ACTIVE 循环
断连--ShutdownConnection任意 →SS_OFFLINE

SS_ACTIVE 子状态循环

SS_ACTIVE_SEND ──SendAppendRequests()──→ SS_ACTIVE_READ_WAL ↑ │ │ wal_read() 读WAL │ │ │ conn_async_write() │ │ │ ┌───────────┼───────────┐ │ ↓ ↓ ↓ │ WRITE_SUCCESS TRY_FLUSH WRITE_FAIL │ │ │ │ │ SS_ACTIVE_SEND SS_ACTIVE ShutdownConnection │ │ _FLUSH ↓ │ │ │ SS_OFFLINE │ │ AsyncFlush() │ │ │ │ └────┬────┘ │ │ └──── 同时可接收 AppendResponse ──┘ RecvAppendResponses() → HandleSafekeeperResponse() → GetAcknowledgedByQuorumWALPosition() → commitLsn 推进 → BroadcastAppendRequest()

Global 状态转换(wp->state)

WPS_COLLECTING_TERMS │ 每收到一个 Greeting → 检查 TermsCollected() │ 条件: n_connected >= quorum (≥2) │ → 设置 propTerm, voteRequest ↓ WPS_CAMPAIGN │ 每收到一个 VoteResponse → 检查 VotesCollected() │ 条件: quorum 个 safekeeper 在 SS_WAIT_ELECTED │ → HandleElectedProposer() ↓ WPS_ELECTED │ 给所有 SS_WAIT_ELECTED 发 ProposerElected │ → StartStreaming → 进入 WAL 流复制 / 心跳阶段

相关新闻

  • Mac通过SSH远程登录iPhone的完整指南
  • Node2Vec
  • Docker镜像发布与拉取实战:从基础命令到企业级仓库管理

最新新闻

  • 2026北京润天下环保综合实力推荐,用户口碑力荐,价格透明不踩坑 - mypinpai
  • Docker快速部署APOD-api:3步实现本地天文图片服务
  • C++游戏引擎多线程渲染实战:攻克命令提交、资源管理与GPU驱动三大瓶颈
  • Flask-Login用户认证实战:从配置到生产部署
  • Laravel集成Nacos配置中心实践指南
  • 半导体晶圆扩散工艺:原理、控制与应用

日新闻

  • 宝珀中国官方售后服务中心|官方热线和维修地址权威信息声明(2026年7月更新) - 宝珀官方售后服务中心
  • # 2026年北京知识产权律师推荐怎么选?看这五点关键不踩雷 - 本地品牌推荐
  • 2026实测教程:生成的拼豆图纸不满意怎么修改才省事 - 省事研究所

周新闻

  • IX9104 PCIe5.0 高速交换芯片@ACP#完整规格 + 应用场景总结
  • Unity游戏集成Coze智能体:实现NPC智能对话与知识库联动
  • SAP EPIC 建行回单查询:从标准类CL_EPIC_EXAMPLE_CN_CCB_GHTD到Z类的5处关键修改

月新闻

  • 2026年6月公司网站搭建最新热门渠道测评:四大低成本/零代码平台对比+避坑
  • 【Linux】Linux arm 编译QT程序,出现expected “}“报错
  • 【MATLAB例程】四基站二维AOA定位与距离辅助增强对比仿真。基于角度观测和测距修正的固定目标平面定位精度分析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号