写点什么

week11 作业 1

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

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

导致系统不可用的原因:

1.网络不通;

2.系统遭遇攻击;

3.系统升级;

4.自然灾害



保证系统高可用的方案:

1.扩展

1.1 垂直扩展:是在同一逻辑单元里添加资源从而满足系统处理能力上升的需求。比如,当机器内存不够时,我们可以帮机器增加内存,或者数据存不下时,我们为机器挂载新的磁盘。

垂直扩展能够提升系统处理能力,但不能解决单点故障问题。

优点:扩展简单。

缺点:扩展能力有限。

1.2 水平扩展:通过增加一个或多个逻辑单元,并使得它们像整体一样的工作。

水平扩展,通过冗余部署解决了单点故障,同时又提升了系统处理能力。

优点:扩展能力强。

缺点:增加系统复杂度,维护成本高,系统需要是无状态的、可分布式的。

2.隔离

2.1 线程池隔离

2.2 进程隔离

2.3 模块隔离、应用隔离

2.4 机房隔离

2.5 读写分离

3.解耦

4.限流

5.熔断

6.降级

7.灰度发布和回滚

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

from hashlib import md5
import json


def checkPW(user_id, password, hash_password):
"""
检测用户登录输入的用户账号,密码信息是否是正确的
:param user_id: 用户登录账号唯一认证信息
:param password: 用户登录密码明文
:param hash_password: 用户正确的登录账号认证信息及密码加密后的数据
:return:
"""

new_password = encryption(user_id=user_id,
password=password)

if new_password == hash_password:
return True
else:
return False


def encryption(user_id, password):
"""
数据加密函数
:param user_id: 用户登录账号唯一认证信息
:param password: 用户登录密码明文
:return: 返回该用户登录时,根据登录时输入的账号认证信息及密码明文信息加密后的数据
"""
m = md5()
new_str = json.dumps(user_id) + password + json.dumps(user_id)

m.update(new_str.encode(encoding='UTF-8'))
new_password = m.hexdigest()
return new_password


if __name__ == "__main__":
hash_pwd = encryption("[4656#", "2356")
print(hash_pwd)
check_flag = checkPW("[4656#", "2356", "35fb2b2f8598c8fe7f5bafac7469b654")
print(check_flag)




发布于: 2020 年 08 月 26 日阅读数: 47
用户头像

关注

还未添加个人签名 2019.04.12 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请添加“极客大学架构师训练营”标签,便于分类
2020 年 08 月 27 日 09:52
回复
没有更多了
week11作业1