架构师训练营—第十一周作业

用户头像
Geek_shu1988
关注
发布于: 2020 年 12 月 06 日



  • 导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。



导致系统不可用的原因:

  1. 硬件和网络故障

  2. 应用系统的配置错误

  3. 大并发请求造成应用系统过载

  4. 系统 BUG 造成存储层的响应变慢(慢 SQL, 缓存中存在大的 Value 对象, Java 应用的内存泄露造成频繁的 FGC等)

  5. 系统中适用的中间件故障(网关, MQ 等中间件不可用)

  6. 系统漏洞被黑客攻击, 比如 SQL 注入后删除了关键业务表或者数据库, XSS 攻击造成系统的页面执行恶意的脚本

  7. 系统超过容量

  8. 不可抗拒的自然灾害, 如数据中心被破坏, 到数据中心的网络光纤被挖掘机挖断

保证系统高可用的方案有:

  1. 硬件冗余, 避免系统应用集群的单点故障问题

  2. 在一组服务集群中引入负载均衡器, 在版本升级的过程中引入预发环境发现和避免验证系统配置问题

  3. 引入监控系统, 监控系统的关键参数: 应用服务宿主机的负载, 内存, CPU, 硬盘, Linux 服务的 INode 信息; 应用服务的堆栈信息, 线程池信息, Java 进程的 GC 状况, 接口的异常信息, 接口服务的调用链路节点耗时信息, 中间件和数据存储的关键参数等

  4. 在新系统上线的时候做系统性能测试, 得到系统容量的瓶颈, 在监控系统中设置合理的关键参数的预警阈值

  5. 引入应用安全策略, 防止系统被攻击, 比如在网关中引入 Web 应用防火墙, 在 Java 应用数据库访问层适用 PrepareStatement 防止 SQL 注入

  6. 建立多数据中心, 在一个数据中心发生故障时能够切换到另外的数据中心

  7. 在系统过载的时候引入服务的限流和降级的机制防止系统过载



用户头像

Geek_shu1988

关注

还未添加个人签名 2020.02.02 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营—第十一周作业