at-least-once 投递下消费者端怎么做幂等去重?
围绕“at-least-once 投递下消费者端怎么做幂等去重”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确用业务主键或消息唯一键做持久化去重并与业务写入原子提交。
分布式系统面试题第 1 页,显示第 1–50 题,共找到 88 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
围绕“at-least-once 投递下消费者端怎么做幂等去重”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确用业务主键或消息唯一键做持久化去重并与业务写入原子提交。
围绕“CAP 定理在网络分区时必须放弃什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确分区期间 CP 与 AP 的取舍及 CAP 只描述分区下的行为。
围绕“物理时钟漂移为什么会让依赖时间戳的分布式决策出错”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确跨节点时间戳不可直接比较导致排序与租约判断错误。
围绕“etcd 为什么需要定期压缩历史修订版本”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 MVCC 无限增长导致存储膨胀与 watch 重建成本。
围绕“用 etcd 实现分布式锁需要组合哪几个原语”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确事务比较创建修订、最小修订等待与租约续期的组合。
围绕“etcd 的串行化读和线性化读分别适合什么场景”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确串行化读走本地状态机可能读到旧值、线性化读经共识确认。
围绕“etcd 的全局递增 revision 能给客户端提供什么顺序保证”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确所有写共享单调修订号可用作全局事件排序与一致性读点。
围绕“etcd Watch 的一致性保证是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 Watch 事件有序、可靠、不重复且不丢已修订事件的保证。
围绕“Phi 累积故障检测器相比固定超时有什么优势”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确输出可疑程度概率而非二元判断以适应网络抖动。
围绕“分布式锁拿到后为什么还需要 fencing token”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确锁可能因客户端停顿过期被他人获得,用单调令牌让存储拒绝过期写。
围绕“心跳超时时间设得过长或过短各有什么代价”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确短超时误报引发频繁切换、长超时延迟真实故障发现。
围绕“混合逻辑时钟(HLC)为什么被用于分布式数据库时间戳”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确结合物理时钟与逻辑计数、避免纯逻辑时钟与真实时间脱钩。
围绕“分布式调用重试时如何让下游接口幂等”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确唯一请求标识加去重存储或天然幂等写入。
围绕“Kafka 生产者 acks=all 配合 min.insync.replicas 才能保证什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两者组合才避免单副本写入即确认的丢数据窗口。
围绕“Kafka 消费者组 rebalance 什么时候触发,代价是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确成员变更或订阅变化触发且期间分区暂停消费。
围绕“Kafka 的 High Watermark 和 Log End Offset 有什么区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确消费者只能读到 HW 之前已复制到 ISR 的消息。
围绕“Kafka 幂等生产者靠什么去重,保证范围是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 PID 加分区序列号去重且仅限单分区单会话。
围绕“Kafka 的 ISR 是什么,什么情况下副本会被踢出 ISR”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 ISR 是追上 Leader 的副本集合及 lag 超时的剔除机制。
围绕“Kafka KRaft 模式下 Controller 选主依赖什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 KRaft 用内嵌 Raft 仲裁替代 ZooKeeper 管理元数据与控制器选举。
围绕“Kafka 的副本机制中 Leader 和 Follower 各自做什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确分区所有读写走 Leader、Follower 拉取同步。
围绕“Kafka 事务如何实现跨分区的 exactly-once 语义”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确事务协调器与事务日志保证多分区写入原子提交。
围绕“Kafka 的 unclean.leader.election.enable 开启会牺牲什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确允许非 ISR 副本当选换取可用性但可能丢已提交消息。
围绕“Lamport 逻辑时钟如何定义事件先后,局限是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确只能捕获因果偏序、时钟值小不代表无因果。
围绕“分布式系统常见的选主方式有哪些,各自依赖什么前提”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确共识选举、外部协调器与租约式选主的假设差异。
围绕“线性一致性(Linearizability)的判定标准是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确单次操作在调用与返回之间某点生效且全局可排序,不对比全部一致性模型。
围绕“线性一致性和可串行化是一回事吗”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确前者约束单对象操作的实时序、后者约束多对象事务等价串行执行。
围绕“网络分区后少数派一侧的 Raft 集群为什么拒绝写”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确无法凑齐多数派则条目不能提交。
围绕“如何在应用层区分网络分区和节点宕机”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两者对单点观察不可区分、只能靠多数派视角或带外通道。
围绕“网络分区恢复后,两侧都接受了写的系统如何合并冲突”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确需要 LWW、向量时钟比对或 CRDT 等收敛策略。
围绕“PostgreSQL 主备切换时如何防止双主脑裂”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确需要外部 fencing/隔离旧主而非仅靠心跳判断。
围绕“PostgreSQL 逻辑复制和物理流复制的适用边界是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确物理复制整实例字节级一致、逻辑复制按表订阅且支持跨版本。
围绕“PostgreSQL 复制槽为什么能防止备库需要的 WAL 被回收”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确复制槽记录消费位点阻止 WAL 提前删除及其磁盘膨胀风险。
围绕“PostgreSQL 流复制的备库延迟从哪几个指标诊断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 write/flush/replay lag 与 LSN 差值的含义。
围绕“PostgreSQL 同步复制中 synchronous_commit 各档位区别是什么”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 off/local/remote_write/on/remote_apply 在持久性与可见性上的递进。
说明 Quorum NWR 中 W+R>N 为何使读写集合必相交,从而使读操作总能从某个持有最新版本的副本拿到数据。也讨论版本选择、成功写的时序约束以及与共识的边界。适合面试者解释多数派与法定人数的区别。
本文解释 Raft 选举安全性的核心机制:任期号递增、每节点每任期一票、多数派投票交集,说明如何防止同一任期出现多个 Leader,并讨论网络分区和任期过期等边界。
围绕“Raft 为什么要求新 Leader 的日志必须不落后于多数派”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 RequestVote 中的日志新旧比较防止已提交条目被覆盖。
解释Raft中committed的定义:日志条目复制到多数派即可提交,并由Leader推进提交索引。通过5节点集群示例说明提交过程,并讨论网络分区和旧Leader未提交条目的边界,帮助理解Raft安全性。
本题阐述 Raft PreVote 机制的背景与作用:解决网络分区中孤立节点反复增加任期,导致分区恢复后强行重置 Leader 的问题。内容包含 PreVote 的请求流程、模拟网络分区场景以及该机制的失效条件和代价。
围绕“Raft 和 Paxos 在工程实现上有什么本质区别”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确 Raft 通过强领导者和日志分解降低可理解性与实现复杂度。
本文对比顺序一致性与线性一致性,指出顺序一致性的弱点是允许操作顺序偏离真实时间。通过P写1、Q写2、P读2、Q读1的案例展示顺序一致性合法而线性一致性非法,并给出工程上的判定与权衡。
围绕“Kafka 消费者 session.timeout.ms 和 heartbeat.interval.ms 如何配合”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确心跳间隔须显著小于会话超时以留出丢失余量。
围绕“什么是脑裂,它为什么会导致数据不一致”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确分区两侧各自认为自己是主并接受写导致状态分叉。
围绕“向量时钟如何检测两个并发写是冲突的”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要明确两向量互不支配即判定并发冲突。
围绕“etcd Watch 客户端应如何利用 revision 处理断线后的事件缺口”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要说明用已见 revision 恢复监听并处理压缩导致的历史不可用。
本题聚焦 Kafka at-most-once 的实现时序与崩溃窗口,明确先提交位移的风险边界,强调消息处理与位移提交的先后关系对数据丢失的影响。
围绕“Kafka enable.auto.commit 为什么会在两次自动提交之间产生重复消费”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须定位自动提交间隔、处理耗时和崩溃形成的重复窗口。
围绕“Kafka 重放历史积压时应如何估算恢复时间并保护在线消费”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖回答需要围绕必须基于 lag、消费速率和重放与实时流量竞争制定限速或隔离方案。
本题解析 Kafka 消费者两种 offset 提交方式的失败处理差异。比较同步提交的阻塞重试与异步提交的回调及覆盖风险,通过具体场景说明偏移量跳跃的可能,并给出选择建议。
围绕“Kafka 消费滞后应如何根据日志末端位点与已消费位点判断”给出直接结论、机制拆解、可复现验证、常见误区与追问,重点覆盖需要解释 lag 是位点差且需结合消息大小和到达速率解读。