架构师训练营 - 作业 - 第十一讲
作业一:
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
问题一:
导致系统不可用的原因包括:
硬件故障、软件bug、系统发布、并发压力、网络攻击、外部灾害
保障系统稳定高可用方案:
1,高可用架构设计
解耦:采用高内聚、低耦合的组件设计原则
隔离:业务与子系统隔离,采用为符合和中台架构,生产者和消费者隔离,虚拟机和容器隔离
异步:多线程编程,反应式编程,异步通信网络编程,事件驱动异步架构
备份:采用集群设计,每个功能最少有两台服务器。数据库复制。
失效转移:访问转移到可用系统上
幂等:一个操作执行多次,结果是相同的。可以采用事务补偿的方式
重试:上游调用者超时时间应大于下游超时时间之和
熔断:对故障或压力过大部分系统采用部分熔断或者全部熔断的处理,减轻压力
限流:丢弃一部分用户的请求,保证大部分用户可以访问。
降级:关闭部分非核心功能保证核心功能。
异地多活
2,高可用运维
自动化测试、部署。
预发布验证
系统监控
问题二:
使用spring提供的MD5工具包,将密码原文和作为salt的userID拼接之后MD5,和加密密文ciphertext比较。
评论