写点什么

架构师训练营第十一周作业

用户头像
丁乐洪
关注
发布于: 2021 年 01 月 02 日

作业一:

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

1)系统不可用,系统故障有外部原因和内部原因。内部原因有软件问题,运维问题,硬件故障等。外部原因有恶意攻击,网络不可以等。

2)提高系统可用性方案:

  • 解耦:架构及组件设计,减少部署故障

  • 隔离:物理隔离,保证核心业务,子业务独立,依赖于架构,微服务方案和容器部署

  • 异步:消息系统(kafka 等),同时还提高性能

  • 备份:CAP 原理,主备部署

  • 失效转移: 保证恢复后正确性,

  • 幂等及重试:保证重试正确性

  • 补偿机制:重试失败后,达到最终一致

  • 熔断:防止雪崩效应

  • 限流:滑动窗口控制

  • 降级:非核心业务关闭

  • 异地多活:


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



import org.apache.commons.lang3.StringUtils;import org.springframework.util.DigestUtils;import org.springframework.util.StringUtils;import java.io.UnsupportedEncodingException;
public final class CryptUtil { private CryptUtil() { }
public static String md5(String plainText) { return md5(plainText, null); }
public static String md5(String plainText, String salt) { if (StringUtils.isEmpty(plainText)) { return ""; } String toEnc = plainText; if (StringUtils.isEmpty(salt)) { toEnc += salt; } try { return DigestUtils.md5DigestAsHex(toEnc.getBytes("UTF-8")).toUpperCase(); } catch (UnsupportedEncodingException e) { throw new IllegalStateException("UTF-8 not supported!"); } }
public static Boolean checkPassword(String userId,String pwPlain, String pwMd5){ //TODO: get pwMD5 from DB by userId // pwMd5=
return pwMd5.equals(md5(pwPlain)); }}
复制代码


作业二:

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

本周相对简单,深入学习还要参考相关文档。

1 安全架构

2 高可用

3 监控


案例:

log 日志级别,配置

数据库 sql,访问评论,是否用 cache

响应超时,多线程要注意死锁,互斥锁

缓存参透

应用发布,必须监控,服务启动顺序


用户头像

丁乐洪

关注

还未添加个人签名 2018.10.11 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第十一周作业