写点什么

架构一期第十一周作业

用户头像
Airs
关注
发布于: 2020 年 12 月 06 日

作业一:

(至少完成一个)

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

引起故障的原因:

  1. 硬件故障:承载应用的服务器 cpu,内存,硬盘,网络设备,等出现硬件物理问题

  2. 软件 bug:代码的 bug 引发的问题

  3. 系统发布:新代码上线过程中,或者上线后测试,或者上线后生产运行时出现的问题

  4. 并发压力:用户、请求数量超出服务承载能力上线

  5. 网络攻击:黑客恶意攻击引发的问题

  6. 外部灾害:天灾,人祸

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

  1. 解耦:可以解决或者减少软件 bug,或者软件发布带来的故障影响

  2. 隔离:可以解决软件 bug 带来的级联影响

  3. 异步:提高系统承载能力,减少并发压力

  4. 备份:保证数据不丢失

  5. 数据幂等:保证数据准确性

  6. 事务补偿:同样保证数据准确性

  7. 重试:提高成功率,改善用户体验

  8. 熔断:保证系统承载能力,减少系统故障时的级联影响

  9. 限流:保证系统的承载能力,提供稳定的服务

  10. 降级:保证系统的承载能力,暂时停止非核心业务服务,保证核心服务不中断

  11. 异地多活:天灾人祸时,保证服务不中断


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

import MySQLdbimport hashlib
def getData(userID:str): db = MySQLdb.connect("localhost", "dbuser", "dbpw", "TESTDB", charset='utf8') db_cursor = db.cursor() pwd = db_cursor.execute("SELECT USERPW FROM ENCRYPTEDPW WHERE USERID = ' " + userID + "';") return pwd
def checkPW(userID:str, decryptPW:str, encryptPW:str): encryptedPW = hashlib.md5() src = bytes(decryptPW + userID, encodeing="utf-8") encryptedPW.update(src) if encryptedPW.hexdigest() == getData(userID): return True else: return False
复制代码



作业二:

  • 根据当周学习情况,完成一篇学习总结


发布于: 2020 年 12 月 06 日阅读数: 25
用户头像

Airs

关注

Emmmmmmm 2018.02.28 加入

Emmmmmmm

评论

发布
暂无评论
架构一期第十一周作业