如何设计高可用架构
高可用复杂度模型
计算高可用
任务分配 任务分配给多个服务器执行
与高性能的区别在于监控服务器状态,进行故障切换
状态检测 运行形态 配置获取 分配算法
任务分解 拆分不同角色 不同角色处理不同业务
与高性能的区别在于 需要监控状态 故障切换
任务分解的高可用在于一旦发生故障可以降低影响,保持部分功能可用。
任务分解 状态检测 运行形态 配置获取 分配算法
存储高可用
数据复制
复制格式 命令 实现简单,数据量小; 数据可能不一致 ; 增量复制。
数据 实现简单,数据一致,数据流量大;增量复制。
文件 实现复杂,数据一致,数据流很大;全量复制。
复制方式
同步 最强一致性,故障容忍度低,写入性能低。 主从架构。
异步 写入性能高,故障容忍高。数据存储集群。
半同步 同步异步的折中方案。数据存储集群
多数同步 数据强一致性,最强可用性,故障容忍度高;写入性能不高;实现复杂。 分布式一致性,分布式协同。
状态决策
独裁 决策逻辑简单;决策者需要高可用,整体结构复杂;数据一致性强度中等
协商 架构简单,决策简单,一般心跳机制。双主时使用双通道解决。数据一致性弱。
民主 决策过程复杂,决策逻辑复杂;可用性最高,数据一致性最强;脑裂问题,quorum。
鸡蛋篮子第三法则 ---冗余法则
不要把鸡蛋都装在一个篮子里,放到多个篮子里
高可用 必然时集群方案
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 上周热点回顾(2.17-2.23)
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)