写点什么

架构师训练营 week11

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

作业1.

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

导致不可用的原因:

  • 硬件故障

  • 软件bug

  • 系统分布

  • 并发压力

  • 网络攻击

  • 外部灾害

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

  • 分级管理: 运维上将服务器进行分级管理,核心应用和服务优先使用更好的硬件,在运维响应速度上也格外迅速。

  • 超时设置

  • 异步调用: 应用对服务的调用通过消息队列等异步方式完成,避免一个服务失败导致整个应用请求失败的情况。

  • 服务降级: 网站访问高峰期,服务可能因为大量的并发调用而性能下降,严重时可能会导致服务宕机。为了保证核心应用和功能的正常运行,需要对服务进行降级。降级有两种手段:拒绝服务及关闭服务。

  • 异地多活: 如果整个数据中心都不可用了,比如受到了一些不可抗力的影响,为了解决这个问题,可以在不同的地方配置多个数据中心。

  • 限流: 在高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。

作业2.

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



public Boolean checkPW(String userName, String password, String encryption){
return encrypByMd5(password).equals(encryption);
}
private String encrypByMd5(String context) {
StringBuffer buf = new StringBuffer("");
try {
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(context.getBytes());
byte [] encryContext = md.digest();
int i;
for (int offset = 0; offset < encryContext.length; offset++) {
i = encryContext[offset];
if (i < 0) i += 256;
if (i < 16) buf.append("0");
buf.append(Integer.toHexString(i));
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return buf.toString();
}



用户头像

devfan

关注

还未添加个人签名 2017.11.12 加入

还未添加个人简介

评论 (2 条评论)

发布
用户头像
可以考虑加盐来提升密码安全性
2020 年 08 月 29 日 21:50
回复
用户头像
请添加“极客大学架构师训练营”标签,便于分类
2020 年 08 月 27 日 09:53
回复
没有更多了
架构师训练营 week11