写点什么

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

用户头像
一雄
关注
发布于: 2020 年 08 月 24 日

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

  1. 导致系统不可用的原因

  2. 硬件层面

  3. 硬件故障,如内存、硬盘、网卡等

  4. 软件层面

  5. 操作系统安全、性能漏洞

  6. 基础组件安全、性能漏洞

  7. 如 Tomcat, Nginx, Jenkins(几乎每周都会有新的漏洞)

  8. 软件 bug

  9. 软件高并发导致的不可用

  10. 网络黑客攻击

  11. XSS/SQL Injection/CRSF/Error code echo

  12. 外界环境层面

  13. 地震、火灾

  14. 电子、电磁干扰

  15. 社会宗教层面,如游行、示威等

  16. 听说某国外大型网站就在黑人游行疫情期间,大量服务器被抢,导致网站服务不稳定。

  17. 保障系统稳定高可用的方案

  18. 异地多机房架构

  19. 使用高可用集群

  20. 解决单机硬件故障

  21. 可对高并发进行负载均衡

  22. 安全高可用

  23. 使用应用防火墙

  24. 定期打好系统、基础组件安全补丁

  25. 使用 Coverity, Sonar 等工具对代码进行安全扫描 

  26. 优化软件及架构,使用:

  27. 微服务

  28. 分布式缓存/图片缓存

  29. 消息队列

  30. CDN

  31. 高并发场景下,做好熔断、限流、降级等措施

  32. 高可用的系统运维(DevOps)

  33. 持续集成 - CI & 持续交付 - CD

  34. Source Control -> Build -> Test -> Deploy -> Release  

  35. 灰度发布/蓝绿发布/金丝雀/滚动发布

  36. 监控系统关键指标

  37. 自动回滚



请用你熟悉的编程语言写一个用户密码验证函数,

Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)

返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。

const hmacSHA256 = require('crypto-js/hmac-sha512');
const db = require('./db');
async function checkPW(userID, rawPwd, userPwdEncoded) {
  const user = await db.getUserByID(userID);
  return userPwdEncoded === hmacSHA256(rawPwd, user.salt);
}



发布于: 2020 年 08 月 24 日阅读数: 48
用户头像

一雄

关注

还未添加个人签名 2020.03.05 加入

还未添加个人简介

评论

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