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

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

系统不可用的原因:

硬件故障:内存颗粒损坏,磁盘坏道等

软件Bug:

系统发布:系统发布期间会导致系统不可用

并发压力:并发压力超过系统预定负荷导致系统奔溃

网络攻击:DDOS攻击等

外部灾害:自然灾害导致整个机房毁坏,或光纤挖断等

系统高可用方案:

解耦:通过减少依赖,逻辑上减小故障的影响范围

隔离:通过物理上的隔离,减小故障影响范围

异步:异步方案本质上是解耦的一种实现方式,也是通过减少依赖减小故障影响范围

备份:也就是冗余,通过多个副本实现高可用,只要有一个副本正常工作,系统整体上就可以正常运行。

失效转移:通过冗余实现高可用就会出现当副本不可用时如何切换到其他副本上。对于应用服务器可以用负载均衡失效转移,数据库主备切换可以通过ZK,如果在同一个机房中,可以使用keepalived的vip(虚拟IP)方案实现故障转移,IP漂移是一种链路层的故障转移方案。



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

import org.apache.shiro.crypto.hash.SimpleHash;
import org.apache.shiro.util.ByteSource;
public class CipherUtil
{
public static Boolean checkPW(String account, String password, String encryptedPassword)
{
ByteSource salt = ByteSource.Util.bytes(account);
Object obj = new SimpleHash("MD5", password, salt, 2);
String enPassword = obj.toString();
return enPassword.equals(encryptedPassword);
}
}



用户头像

邓昀垚

关注

还未添加个人签名 2018.06.04 加入

还未添加个人简介

评论

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