写点什么

第十一周命题作业

用户头像
cc
关注
发布于: 2021 年 02 月 06 日

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


导致系统不可用的原因主要有:

1)硬件故障 2)软件 Bug 3)系统发布造成问题 4)系统并发压力 5)外部安全问题:网络攻击 6)外部灾害


保障系统高可用的方案主要有:

解耦:需要对不同系统、不同功能职责进行功能分解,互相不影响

隔离:为了不相互影响,将子系统、模块、功能进行不同程度的隔离

冗余:同一系统、功能进行多服务器部署,防止单点。服务上称之为集群,数据上称之为备份

失效转移:单台服务出现故障时,可以自动转移到其他服务器

无状态:业务之间是无状态的,便于进行集群、分布式部署

可重试、幂等:相同的请求在服务出现问题的情况下,重复调用不会出现问题

事务补偿:数据最终实现一致性

限流熔断:高峰或业务出现问题时,可以进行流量控制或者阻断服务等方案

实时监控保障:系统要有实时监控,以便当问题出现时可以及时解决处理


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

public class LoginService {    public boolean checkPwd(String userId, String password, String encPassword) {        String passwordMd5 = encrypt(password, getSalt(userId));        return encPassword.equals(passwordMd5);    }
//根据useId经过一定的业务逻辑处理转换成响应salt值 private String getSalt(String userId) { // 根据userId 获取 salt // 转换验证相关代码处理 return userIdSalt; }
private String encrypt(String password, String salt) { String passwordMd5 = null; try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] bytes = md5.digest((password + salt).getBytes(StandardCharsets.UTF_8)); passwordMd5 = new String(bytes); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return passwordMd5; }}
复制代码


用户头像

cc

关注

还未添加个人签名 2018.03.19 加入

还未添加个人简介

评论

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