写点什么

第十一周作业

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



导致系统不可用的原因可以分为以下两大类:

  1. 外部原因:地质灾害、地震、火山爆发

  2. 内部原因:一方面是硬件故障,主要是硬件的生命周期,一般的硬件厂家质保3年,基本3年就会从线上换下来作为测试服务器;另外一方面是软件故障,比如系统bug等;还有一方面是黑客攻击等;



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

  1. 按照公司的业务进行异地多活部署,防止自然灾害

  2. 降级,保证核心服务可用,业务高峰期将非核心业务降级

  3. 限流,由于硬件能承载的并发数量受限制,限流将超出的请求直接拒绝或者按照规则丢弃,降低服务的压力

  4. 熔断,服务调用方自我保护机制

  5. 异步化,按照业务将写请求异步化



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

public static void main(String[] args) throws Exception{
checkPW("9876","1233456","4430b3b14cae8d0e8bd3b37527425247");
}
public static String byte2hex(byte[] b) //二进制转字符串
{
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs;
}
public static Boolean checkPW(String userId,String password,String encodepassword) throws Exception{
byte[] a;
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
a = messageDigest.digest((userId+password).getBytes());
System.out.println(byte2hex(a));
if(byte2hex(a).equals(encodepassword)){
System.out.println("验证OK");
return true;
}
return false;
}



用户头像

魔曦

关注

我思故我在! 2018.01.15 加入

凡事有交代,件件有着落,事事有回音。

评论

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