写点什么

架构师训练营 -week11 作业

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

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

致不可用的原因:

  • 硬件故障

  • 软件bug

  • 系统分布

  • 并发压力

  • 网络攻击

  • 外部灾害

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

1.分级管理

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

2.超时设置

设置请求超时时间,当请求超过设定时间, 返回超时错误, 减少耗时的线程暂用.

3.异步调用

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

4.服务降级

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

5.异地多活

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

6.限流

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

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

public bool checkPW(String userName,String password,String encryption){
return encrypByMd5(password).equals(encryption);
}
public string encrypByMd5(string txt)
{
byte[] sor = Encoding.UTF8.GetBytes(txt);
MD5 md5 = MD5.Create();
byte[] result = md5.ComputeHash(sor);
StringBuilder strbul = new StringBuilder(40);
for (int i = 0; i < result.Length; i++)
{
//加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位
strbul.Append(result[i].ToString("x2"));
}
return strbul.ToString();
}



用户头像

Frank Zeng

关注

还未添加个人签名 2018.09.17 加入

还未添加个人简介

评论 (1 条评论)

发布
用户头像
请添加“极客大学架构师训练营”标签,便于分类
2020 年 08 月 27 日 09:53
回复
没有更多了
架构师训练营-week11作业