第十一周课后练习
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
隔离
业务与子系统隔离
微服务与中台架构
生产消费者隔离
虚拟机与容器隔离
其中一个故障,不影响其他应用。
异步
多线程编程
反应式编程
异步通信网络编程
时间驱动异步架构
备份
集群设计
数据库复制
Failover(失效转移)
数据库主主失效转移
负债均衡失效转移
设计无状态的服务
幂等:服务的重复调用与调用一次是一样的。比如转账。如果中途失败,确定保其只转一次钱。
事务补偿:通过执行业务逻辑你操作,使事务回滚到事务前状态。
熔断
断路器,关闭,打开,半开。
限流
拒绝部分请求。
策略
计数器算法,单位时间内记录请求次数。滑动窗口解决计数器清零临界期,导致流量激增的问题。
令牌桶算法,单位周期内保证令牌的数量。
漏铜算法,漏桶算法出口是均匀的。
自适应限流,系统根据自己情况决定处理多少流量
降级,对于一些非核心功能(流量比较大),通过降低服务的等级,来确保其他的重要服务能够正常执行。
异地多活
多地部署数据中心。挑战:异地存储导致数据不一致。
自动化测试,thoughtWorks开发的selenium
自动将期望值与真实值做对比。测试工程师干的。保证线上工程质量负责,保证线上系统的正确性。
单元测试,是RD需要干的。保证自己代码的正确性。
预发布验证
比如,第三方接口以及真实的数据。
预发布服务,不接入负载均衡。而是通过host绑定。只有开发工程师才能访问这台服务器。不是全量测试,而是关键点验证。
自动化发布
发布是人在控制,发布过程是自动化的。
灰度发布
针对大型的线上服务。
网站运行监控
用户行为日志采集
报警、自动控制(自动失效转移,自动扩容、自动限流)
通过代理进程收集相关信息,上报给数据中心,进行数据分析。
高可用的价值观
1,保持简单,是问题已于发现,快速解决。
2,目标明确,解决特定环境下的具体问题。
3,价值回归,成本收益要合理。
评论