写点什么

架构师训练营第 0 期 - 第 11 周 - 命题作业

用户头像
关注
发布于: 2020 年 08 月 26 日

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

  1. 原因

  2. 硬件故障:服务器故障、各类硬件设备故障

  3. 软件bug:代码质量问题、测试不足

  4. 系统发布:往往是发布流程问题

  5. 并发压力:业务量太大,压垮了系统

  6. 网络攻击:外部恶意攻击,DDOS等等

  7. 外部灾害:网络线路断了、机房意外事故、自然灾害等等

  8. 保障手段

  9. 解耦

  10. 大多数普通公司、系统,首当其冲的问题是代码质量问题。

  11. 解耦可以使代码质量更优,问题更好定位。

  12. 在逻辑层面可以有隔离的效果

  13. 隔离

  14. 和解耦类似,是物理层面的隔离

  15. 业务与子系统隔离

  16. 微服务与中台隔离

  17. 消费者与生产者隔离

  18. 虚拟机与容器隔离

  19. 异步

  20. 多线程编程

  21. 反应式编程

  22. 异步通信网络编程

  23. 事件驱动异步架构

  24. 备份

  25. 集群设计:

  26. 多台服务器、异地、负载均衡、分布式等等特性,既可以减少单台压力,也可用提升可用性。

  27. 任何应用都要考虑单台服务器故障的问题,要考虑重要数据的备份。

  28. 数据库复制

  29. 失效转移

  30. 这点需要与备份互相配合

  31. 要设计诸如数据库失效、负载均衡失效的转移逻辑

  32. 尽量设计无状态的服务

  33. 幂等

  34. 同一个操作执行多次的情况下结果是相同的。

  35. 防止备份、失效转移的情况下产生的重复操作不影响业务最终的正确性。

  36. 事务补偿

  37. 通过执行业务逻辑逆操作,使事务回滚到事务前状态。

  38. 重试

  39. 主要是避免垃圾回收和网络抖动等概率低但难以完全避免异常情况。

  40. 熔断

  41. 设计断路器阻断对故障服务的调用,防止级联失效、防止故障影响扩大。

  42. 限流

  43. 在高并发时的保护手段

  44. 丢弃超过限额的请求,保护系统能在合理范围内运行。

  45. 几种常用算法:

  46. 计数器算法

  47. 令牌桶算法

  48. 漏桶算法

  49. 自适应限流

  50. 负反馈调节

  51. 降级

  52. 在高并发压力下,根据具体业务实际情况,关闭非核心功能,以腾出系统资源给核心功能。

  53. 异地多活

  54. 解决现实世界中的不可控因素

  55. 难点:数据一致

  56. 高可用系统的运维

  57. 发布:发布过程中需要保证发布本身的高可用

  58. 自动化测试:保障每次发布都能得到充分的测试。

  59. 自动化部署

  60. CI/CD

  61. 预发布验证:准备预发布环境,解决测试环境和正式环境不同的问题,只供工程师访问。

  62. 代码版本控制:对代码版本、分支进行妥善管理。要有一套规范。

  63. 自动化发布

  64. 灰度发布:按一定比例发布,从低百分比开始,分步发布到全网,每步过程中逐步观察验证服务是否正常,才推进到下一步,如果有故障则回滚。

  65. 系统运行监控

  66. 监控数据采集

  67. 用户行为日志收集

  68. 服务器性能监控

  69. 业务运行数据报告

  70. 监控管理

  71. 监控系统

  72. 高可用的价值观

  73. 保持简单:使问题易于发现、快速解决。

  74. 目标明确:解决特定环境下的具体问题。

  75. 价值回归:成本收益要合理。



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



// 选用算法:md5
// 计算方式:将用户id(作为salt)和传入的密码拼接,计算md5得到临时密文,然后与存储的密文作对比
func checkPW(uid string, password string, cipher string) bool {
c := hex.EncodeToString(md5.New().Sum([]byte(uid + password)))
return c == cipher
}



用户头像

关注

还未添加个人签名 2018.09.10 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第 0 期 - 第 11 周 - 命题作业