写点什么

架构师训练营第 1 期 - 第十一周作业

用户头像
Todd-Lee
关注
发布于: 2020 年 12 月 07 日

(至少完成一个)

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

引起系统不可用的原因有如下几个可能性:

  • 硬件故障

  • 软件 Bug

  • 系统发布

  • 并发压力

  • 网络攻击

  • 外部灾害

为了尽量避免或者解决以上问题,通常我们采用的手段如下:

  • 对系统解耦,降低系统的复杂度,这样可以减少 bug 提升系统可维护性

  • 高内聚低耦合的设计原则

  • 面向对象设计和实现我们的程序

  • 通过领域模型来设计我们系统

  • 对解耦后的系统进行隔离,这样防止单个系统出问题后影响整个系统.隔离包括逻辑和物理的隔离

  • 消息队列隔离

  • 中台架构

  • 虚拟机容器隔离

  • 业务系统隔离->微服务

  • 采用异步的方式进行编程,降低系统之间的耦合度,模块出故障不会影响其他模块故障

  • 对系统采用集群的方式部署,单台服务器不可用可以转发流量到其他服务器上.

  • 也就是失效转义

  • 此时注意集群的时候要注意

  • 消息的幂等

  • 事务补偿

  • 建立重试机制

  • 如果服务出现故障,要采用熔断手段方式控制高并发的时候系统的可用度

  • 对高并发还有限流手段.

  • 计数器,有固定窗口和滑动窗口两种

  • 令牌桶

  • 漏桶算法

  • 自适应限流

  • 降级手段来保护核心功能

  • 通过异地多活来保证大范围的可用性


  • 请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。


function checkPW(uid,password,hash_pass){	return md5(`${uid}${password}`)===hash_pass;}
复制代码


用户头像

Todd-Lee

关注

还未添加个人签名 2017.10.17 加入

还未添加个人简介

评论

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