专栏:分布式系统(17 篇)

负载均衡:不只是平均分配

21 阅读 0 2283 字 · 约 8 分钟

负载均衡不只是轮询分请求。节点能力不同要加权,实时负载不同要动态选,有状态要保亲和,缓存要一致性哈希,节点上下线要平滑过渡,健康检查要主动加被动,还得和熔断配合。多层配合比单层完美更靠谱。

熔断与降级:故障的防火墙

24 阅读 0 1863 字 · 约 7 分钟

级联故障的根因不是下游挂了,是上游在等待中耗尽资源。熔断在失败率升高时停止调用,降级在不可用时给兜底响应。两者配套才有意义——光熔断不降级是快死,光降级不熔断挡不住资源耗尽。

脑裂:分布式系统里最危险的故障

54 阅读 0 2743 字 · 约 10 分钟

脑裂:集群分区后两个子集各自选出主节点,并行写入导致数据分叉。根因不是节点真挂了,而是看起来挂了——网络分区、心跳超时、VM暂停都会触发。防护靠 quorum + fencing token + 租约三层。Raft/Paxos 防选主脑裂,但 fencing 仍需存储层配合。

重试与退避:失败之后怎么办

46 阅读 0 3049 字 · 约 11 分钟

朴素重试(失败立刻重试)在大规模下会引发重试风暴和级联放大。正确策略四件套:指数退避(给下游恢复时间)+抖动(打破同步)+重试预算(限制总重试流量)+只重试瞬时故障且幂等的操作。再配熔断器兜底——重试失败到阈值就停止,别一直试一个挂掉的服务。重试不是"再试一次",是需要设计的工程。

幂等性:分布式系统里"做两次"为什么不等于"做一次"

31 阅读 0 2921 字 · 约 10 分钟

幂等性(Idempotency)= 同一操作执行一次和多次产生相同结果。分布式环境下网络超时、消息重投、自动重试逼着操作必须幂等。实现靠"记住做过没有":request_id 去重表、唯一约束、状态机、乐观锁。幂等和并发安全是两件事——前者管重复不出错,后者管同时不出错。

一个简单操作是怎么在分布式环境下变复杂的

49 阅读 0 2151 字 · 约 8 分钟

最近碰到一个问题,事后想想,很适合拿来讲分布式系统里一个很普遍的现象:一个在单节点上简单到不用过脑子的事,放到多节点环境下,复杂度会一层一层地叠上去,每加一层,就多一类你绕不开的问题。 单节点:两个 if 的事 需求是这样的:用户请求来了,需要从 S3 拉一份代码到本地,解压,然后执行。 为了避免同