分布式系统稳定性建设-高可用篇

分布式系统稳定性建设-高可用篇

系统稳定性建设是系统工程的核心内容之一。以下是一些重要的方面:

  1. 架构设计:

    • 采用模块化、松耦合的架构设计,以提高系统的可扩展性和可维护性。
    • 合理划分系统功能模块,降低单个模块的复杂度。
    • 定义清晰的接口和数据交换标准,确保各模块之间协调工作。
  2. 容错机制:

    • 建立完善的异常处理和容错机制,及时检测并隔离故障,防止故障传播。
    • 实现关键功能的冗余备份,提高系统的可用性。
    • 设计自动恢复和自修复机制,缩短系统故障的恢复时间。
  3. 性能优化:

    • 进行系统性能测试和瓶颈分析,确定系统的承载能力。
    • 优化关键模块的性能,提高系统的整体响应速度。
    • 采用缓存、异步处理等手段,缓解系统的瞬时压力。

高可用设计

High Availability,简称HA,通过设计减少系统不能提供服务的时间。假设系统一直能够提供服务,我们说系统的可用性是100%。

  1. 可用性公式:**可用性 = 系统正常可用的时长/系统运行总时长 * 100%**或:可用性 = (系统运行总时长-系统不可用时长)/ 系统运行时长 * 100%
  2. 可用性目标:高可用理想值是:100%,2个9:99%,3个9:99.9%,4个9:99.99%

高可用方法

扩展实现冗余
  • 按照实际情况评估资源,使用2倍以上的资源,即使垮掉一半也能完全支撑业务。
  • 部署机房:双中心或多中心机房部署,热备、冷备方式部署
  • 应用架构:支持横向分布式扩展,支持集群部署,支持跨机房部署
  • 数据库层:一主多从、读写分离、双集群部署
故障自动转移
  • 客户端:提供多组IP或域名,失败时重试和自动切机制
  • 代理层:重试或探测自动切换
  • 服务层:自动剔除下线
  • 存储层:实现主从切换,redis-sentinal哨兵机制监控主节点是否正常,mysql主从切换MHA方案
限流降级隔离熔断
  • 限流: 计数器、令牌桶、漏桶
  • 熔断降级:
    • 人工降级:人工降级一般采用降级开关来控制,公司内部一般采用配置中心Ducc来做开关降级,开关的修改也是线上操作,这块也需要做好监控;
    • 自动降级:设置超时时长降级,熔断方式降级,例如调用头像服务100毫秒超时,比较常用的是流量控制和熔断降级框架是 Netflix 的 Hystrix 和 alibaba 的 Sentinel。
  • 资源弹性伸缩:docker+k8s容器方式,实现自动扩容,当出现大流量或者故障情况时,可以自动按规则进行扩容。
  • 定期故障演练:制定演练计划,对基础模块和核心业务模块进行故障演练,模拟部分机器、单个机房出现网络故障,检查系统的高可用性,不断优化系统。
  • 完善监控告警
    • 硬件层监控:监控运行中服务器硬件状态
    • 网络层监控:监控网络状态和丢包情况
    • 客户端监控:客户端增加埋点,自动上报使用异常情况,根据客户IP、账号等信息定位故障点
    • 代理层监控:网关、nginx
    • 基础中间件:服务注册中心、配置中心、消息队列、分布式缓存、分布式数据库、日志中心(ELK)
    • 服务层监控:服务间调用链、服务内存和CPU占用情况、GC情况、系统负载均衡情况,接口QPS和延迟,系统错误日志
  • 保证代码质量:遵守规范、质量扫描、 充分测试、代码审核
  • 遵守上线规范:对线上服务和数据保持敬畏之心,严格遵守操作流程
    • 准备充分:制定上线计划,准备好checklist,提前通知有关人员
    • 灰度发布:指定灰度计划,更新局部验收确认后全量。
    • 回滚止损:发现问题及时回滚,降低对业务的损失。
    • 验收充分:验收过程要仔细严谨,不能漏掉细节
异步调用

异步调用的话我们不需要关心最后的结果,这样我们就可以用户请求完成之后就立即返回结果,具体处理我们可以后续再做,除了可以在程序中实现异步之外,我们常常还使用消息队列,消息队列可以通过异步处理提高系统性能(削峰、减少响应所需时间)并且可以降低系统耦合性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Go语言小鸟编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值