写点什么

第 11 周 - 作业 1

发布于: 2021 年 01 月 17 日

作业一:

(至少完成一个)

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") }}
复制代码


用户头像

还未添加个人签名 2019.09.13 加入

还未添加个人简介

评论

发布
暂无评论
第11周-作业1