写点什么

架构师训练营 - 命题作业 第 11 周

用户头像
铁血杰克
关注
发布于: 2020 年 08 月 26 日
  • 导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。

不可用的原因:软件故障、硬件故障、机房故障、地理灾害等。

高可用方案需要做分类:

高可用存储架构有双机架构,主备复制、主从复制、主主复制,以及针对主备和主从的双击切换。

高可用存储架构还有集群和分区手段,数据集中集群有1主多备或者1主多从,结合ZK做分布式选举;数据分散集群有Hadoop的数据分区管理架构,Elasticsearch的数据分片。数据分区用来应对地理级别的故障,可设置不同的分区规则。

高可用计算架构也有主备、主从和集群。其中负载均衡集群要注意选取分配策略、检测服务器状态。非

对称集群要注意将任务要划分为不同类型并分配给不同角色的集群节点,角色分配策略涉及分布式选举算法。

业务高可用的保障有异地多活架构,包括同城异区、跨城异地、跨国异地,延时递增,有不同的数据同步策略。

应付接口级的故障,保证高可用的手段有:降级、熔断、限流、排队等。



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



public boolean checkPW(String userId, String originPass, String dbPass) {
String encryptPass = getMd5Password(originPass, userId);
if(encryptPass.equals(dbPass)) {
return true;
} else {
return false;
}
}
private String getMd5Password(String password, String salt) {
// 拼接原密码与盐值
String str = salt + password + salt;
// 使用MD5循环加密5次
for (int i = 0; i < 5; i++) {
str = DigestUtils.md5DigestAsHex(str.getBytes()).toUpperCase();
}

return str;
}



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

铁血杰克

关注

还未添加个人签名 2017.12.18 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 命题作业 第 11 周