第十一周作业

用户头像
关注
发布于: 2020 年 12 月 06 日
  • 导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。



系统不可用原因:



  • 硬件故障:内存、硬盘故障

  • 软件BUG:程序问题导致系统资源耗尽、OOM

  • 系统发布:发布流程不正确,数据库DDL未执行,代码却先上线了

  • 并发压力:大量的并发耗尽了系统资源

  • 网络攻击:网络攻击导致数据库表被删除

  • 外部灾害:电缆被挖断、机房着火



高可用架构方案:



  • 解耦:系统的各个组件、模块之间进行解耦,这样就能用各种方式来降低故障在组件之间的传播

  • 隔离:各个组件、模块的资源进行隔离,防止灾害蔓延

  • 异步:削峰填谷

  • 备份:一份数据出了问题还有备份的数据可以使用

  • 失效转移:一台服务出了问题,需要将请求路由到其他服务

  • 幂等:防止重复提交引起问题

  • 事务补偿:保证一致性

  • 重试:重试时间要设置合理

  • 熔断:当系统出问题时,快速返回默认数据,防止故障蔓延

  • 限流:防止突然的高并发引起问题

  • 降级:放弃部分不重要的功能,将资源集中到重要的功能上

  • 异地多活:防止区域性停电风险等



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



public boolean checkPW(String userId, String pwd, String encryptPwd) {
return encrypt(userId, pwd).equls(encryptPwd);
}

private String encrypt(String userId, String pwd) {
String salt = getSalt(userId);
return sha256(pwd + salt);
}



用户头像

关注

还未添加个人签名 2018.11.22 加入

还未添加个人简介

评论

发布
暂无评论
第十一周作业