作业一(至少完成一个):
1.导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
2.请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。

作业二:
根据当周学习情况,完成一篇学习总结

密码验证时序图

密码验证时序图.png

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

1.1 导致系统不可用的原因

1.外力原因。光纤被挖断了、机房起火等
2.硬件故障。硬件老化、损坏
3.程序问题。导致系统资源消耗殆尽
4.架构不合理。导致资源不合理使用,级联反应,最终导致系统奔溃

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

程序设计层:解耦、隔离、异步
架构层:备份、失效转移
逻辑层:幂等、事务补偿、重试
网关层:熔断、降级、限流
基础设施层:异地多活

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

2.1 PHP 自带加密和验证函数:password_hash、password_verify

优点:官方提供的函数,单向散列,动态密码,破解难度非常大安全性极高
缺点:PHP 版本需要大于 5.5,与外部系统其他语言有交互的时候,需要实现相同的逻辑可能较为麻烦

2.2 自己用 PHP 实现 Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)

<?php

function checkPW($userId, $passwordPlaintext, $passpordSecret){
    $salt = 'xxx';
    return hash_equals($passpordSecret, crypt($passwordPlaintext, $salt));
}