Neon walproposer进程状态机
WAL Proposer 完整状态机全局状态wp-stateWalProposerStateWPS_COLLECTING_TERMS → WPS_CAMPAIGN → WPS_ELECTED 收集握手/term 投票中 已当选开始流复制每个 Safekeeper 状态sk-stateSafekeeperState┌──────────────────────────────────────────┐ │ 任何状态出错 → 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_WRITETCP握手--HandleConnectionEventCONNECTING_* → (polling)START_WAL_PUSH-SQL querySendStartWALPushCONNECTING_* → WAIT_EXEC_RESULT执行结果CopyBoth响应-RecvStartWALPushResultWAIT_EXEC_RESULT → HANDSHAKE_RECV握手-gGreetingSendProposerGreetingHANDSHAKE_RECV握手响应gGreeting-RecvAcceptorGreetingHANDSHAKE_RECV → WAIT_VOTING投票开始-vVoteRequestSendVoteRequestWAIT_VOTING → WAIT_VERDICT投票响应vVoteResponse-RecvVoteResponseWAIT_VERDICT → WAIT_ELECTED宣布当选-eProposerElectedSendProposerElectedWAIT_ELECTED → SEND_ELECTED_FLUSHFlush--AsyncFlush→StartStreamingSEND_ELECTED_FLUSH →SS_ACTIVEWAL/心跳aAppendResponseaAppendRequestHandleActiveStateSS_ACTIVE 循环断连--ShutdownConnection任意 →SS_OFFLINESS_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-stateWPS_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 流复制 / 心跳阶段

相关新闻

HarmonyOS @Provide/@Consume 跨组件通信

HarmonyOS @Provide/@Consume 跨组件通信

适用版本:HarmonyOS 6.1(API 12)及以上 验证环境:Pura 90 Pro 模拟器(HarmonyOS 6.1.1,API 24) 关键概念:Provide、Consume、跨层级状态共享、主题系统 前言 Prop 和 Link 适合直接…

2026/7/23 14:09:00 阅读更多 →
PHP专家成长指南:从语法到架构的进阶之路

PHP专家成长指南:从语法到架构的进阶之路

1. PHP专家的核心能力图谱十年前我刚接触PHP时,以为会写几个CRUD页面就是专家了,直到参与了一个日均百万PV的电商项目重构才明白,真正的PHP专家需要的是立体化的技术栈。这张能力图谱是我从初级到资深PHP开发者的成长路径总结:1.1…

2026/7/23 9:46:09 阅读更多 →
Anaconda环境管理:Python开发者的高效解决方案

Anaconda环境管理:Python开发者的高效解决方案

1. 为什么选择Anaconda管理Python环境在Python开发领域,环境管理一直是个令人头疼的问题。我经历过无数次"在我的机器上能运行"的尴尬场景,也遇到过不同项目依赖冲突导致的诡异bug。经过多年实践,我发现Anaconda是最适合解决这些问…

2026/7/23 12:23:18 阅读更多 →

最新新闻

Tiva C系列EPI控制器时钟分频与多速率配置实战指南

Tiva C系列EPI控制器时钟分频与多速率配置实战指南

1. EPI控制器与外部接口速率匹配的核心价值 在嵌入式系统开发中,尤其是涉及高速数据采集、大容量存储或与复杂可编程逻辑器件(如FPGA)通信的场景,微控制器(MCU)与外部世界之间的“对话速度”至关重要。想象…

2026/7/23 14:24:56 阅读更多 →
实验室的“存量思维”:在采购上,存什么比存多少更重要

实验室的“存量思维”:在采购上,存什么比存多少更重要

“存量思维”关注的是积累和储备。在实验室管理里,采购往往是增量思维——每次需要什么就买什么,用完再买。而存量思维关注的是:除了试剂本身,还有什么东西是可以持续积累、长期使用的?采购记录就是一种存量。它不只是…

2026/7/23 14:24:56 阅读更多 →
智能体Harness系统设计:从原理到生产级实践

智能体Harness系统设计:从原理到生产级实践

1. 从键盘侠到Harness工程师的蜕变之路 十年前刚入行时,我只会对着技术文档指手画脚,直到亲手参与第一个Agent系统开发才明白:真正的工程能力不在于评论,而在于构建可靠的生产级系统。这个认知转变让我从只会纸上谈兵的"键盘…

2026/7/23 14:24:56 阅读更多 →
GEO运营中自媒体账号注册的关键策略与实战技巧

GEO运营中自媒体账号注册的关键策略与实战技巧

1. 自媒体账号注册的核心考量因素 做GEO(地理定位运营)时是否要自己注册账号,本质上是一个关于"控制权"与"合规性"的权衡问题。我运营过多个地区的自媒体矩阵,发现这个问题没有标准答案,但有几个关…

2026/7/23 14:24:56 阅读更多 →
好的平台不让你“费力维持”,而是让你“自然使用”

好的平台不让你“费力维持”,而是让你“自然使用”

“费力维持”和“自然使用”是两种完全不同的使用状态。前者是你需要持续投入精力才能让一件事保持运转;后者是事情自己运转良好,你只需要在需要时使用它就行。采购如果处于“费力维持”状态,你会经常感觉到它在消耗你——需要定期检查供应商…

2026/7/23 14:24:56 阅读更多 →
RAG技术解析:检索增强生成在智能问答中的应用

RAG技术解析:检索增强生成在智能问答中的应用

1. RAG技术初探:当检索遇到生成 第一次接触RAG(Retrieval-Augmented Generation)这个概念时,我正在处理一个智能客服系统的语义理解难题。传统生成式模型常常给出"一本正经胡说八道"的答案,而基于检索的系统…

2026/7/23 14:23:56 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻