作业一:
(至少完成一个)
Q: 导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
A: 不可用原因:
硬件故障:
网络传输故障:
服务器故障:
磁盘写满:
软件故障:
服务崩溃:
服务器超负荷、阻塞等导致服务不可用:
缓存击穿、缓存雪崩等导致数据库负载过大
系统有严重 bug
域名过期、dns 域名解析服务出错
保障系统稳定高可用的方案:
系统架构
解耦;隔离;异步;备份;Failover(失效转移);幂等;事务补偿;重试;熔断;限流;自适应限流;降级;异地多活;
系统运维
自动化测试;自动化部署;预发布验证;灰度发布;运行监控
安全架构
开发安全、网络安全配置、防火墙、黑/白名单、安全扫描及监控
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
//bcrypt 通过接受一个参数 cost 提高计算时长,cost 数值越大,bcrypt 运行计算所需的时间就越长package main
import ( "fmt" "golang.org/x/crypto/bcrypt")
type User struct { Name string `json:"name"` Password string `json:"password"`}
func CheckPassWord(password string, hashedPassword []byte) bool { err := bcrypt.CompareHashAndPassword(hashedPassword, []byte(password)) if err != nil { return false } return true}
func main() { user := User{ Name: "allen", Password: "abcd1234", } hashedPassword, _ := bcrypt.GenerateFromPassword([]byte(user.Password), bcrypt.DefaultCost) ret := CheckPassWord(user.Password, hashedPassword) if ret { fmt.Println("pass") } else { fmt.Println("fail") }}
复制代码
评论