标签:架构

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

54 阅读 0 2743 字 · 约 10 分钟

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

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

46 阅读 0 3049 字 · 约 11 分钟

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

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

31 阅读 0 2921 字 · 约 10 分钟

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

技术债务:复杂度的复利

46 阅读 0 1665 字 · 约 6 分钟

技术债不是因为决策做错了,是条件变了之后当初合理的决策不再合理。不是所有债都该还——利息高的该还,利息低的该背,架构级的才值得专门花时间。没有专职管理员,靠写代码的人顺手还、技术负责人盯大债。

认证与鉴权选择指南:JWT、OAuth 2.0、RBAC、ABAC、Keycloak 各自该出现的地方

57 阅读 0 3946 字 · 约 14 分钟

一个服务刚上线,没用户,没登录。调用方都是内部系统,相互信任——IP 白名单就够了。 后来用户来了。要区分谁是谁。再后来有管理员、有普通用户、有只读用户。角色一多,权限判断就散在代码里——if user.role == 'admin' 写了二十遍,改一次要改二十个文件。 这时候你才开始看认证鉴权方案

压缩算法选择指南:LZ4、Snappy、gzip、Brotli、Zstd

57 阅读 0 2604 字 · 约 9 分钟

一个服务每天往外吐几十 G 日志。你第一反应不是「换个压缩算法」,是「太大了,压一下」。 gzip -9 access.log,跑完一看,体积缩到十分之一。满意了。 后来日志量翻倍,gzip 跑一次要二十分钟。你开始想:能不能快点。 再后来上了 Kafka,消息要实时传。压缩不是在磁盘上慢慢压——每

复制:主从、多主、无主

53 阅读 0 1427 字 · 约 5 分钟

每台机器只有「部分的真相」。复制是把同一份数据放到多台机器上,让系统在单机挂掉时还能继续服务。 为什么需要复制 单机有物理上限。数据量可能超过单机磁盘,请求量可能超过单机 CPU,还有机器故障、机房断电这些不可抗力。复制把数据拷贝到多台机器,用冗余换可用性。这是分布式系统最原始的动力——如果一台机器

分布式系统的复杂度从哪来

63 阅读 0 2034 字 · 约 7 分钟

把三台机器放在一起,不等于就有了分布式系统。真正的分布式系统,是让多台机器协同完成一件事——而这件事的复杂度,恰好来自「协同」二字。 为什么单机到多机不是简单的数量变化?因为单机上一切井然有序:数据在同一个内存空间,时钟只有一个,锁一把就够。一旦跨了机器,这三样全部失效。 分布式系统的所有复杂度,可