极客时间架构师训练营 - week11 - 作业 1

简介: 极客时间架构师训练营 - week11 - 作业 1

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

答:导致系统不可用的原因包括:

  • 硬件故障
  • 软件缺陷
  • 系统更新与发布
  • 并发压力
  • 网络攻击
  • 外部灾害等

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

  • 冗余备份。数据库主从复制,即便一台服务器宕机, 也不影响整个系统对外提供服务。
  • 负载均衡。后台微服务部署多份,在服务更新的时候,让部分服务先下线,再进行升级,在恢复服务,再接入使用。
  • 失败隔离。将后台服务均部署多份,定期检测心跳,下线出问题的服务。
  • 限流降级。在秒杀等高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。
  • 完善安全防护。采用必要的安全措施,或者采用三方的成熟的安全防护产品。
  • 异地多活。说将数据中心分布在多个不同地点的机房里,每个机房均可以独立对外提供服务,即使某一个机房不可使用,系统也不会宕机,依然保持可用。

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

导入两个 Jar 依赖

        <!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.4.0</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.11</version>
        </dependency>



package com.example.demo;
import cn.hutool.crypto.SecureUtil;
import org.apache.commons.lang3.StringUtils;
/**
 * @author Jiang Jining
 * @date 2020/8/26 22:55
 */
public class PasswordUtil {
    private static final String SALT = "salt";
    /**
     * Check password of user.
     *
     * @param userId   userId
     * @param password password
     * @param input    input
     * @return boolean
     */
    public static boolean checkPassword(String userId, String password, String input) {
        if (StringUtils.isBlank(userId) || StringUtils.isBlank(input)) {
            return false;
        }
        return StringUtils.equals(generateMd5ForDatabase(userId, input), password);
    }
    public static String generateMd5ForDatabase(String userId, String originalPassword) {
        return SecureUtil.md5(userId + SALT + "@" + originalPassword);
    }
}



目录
相关文章
|
2月前
|
机器学习/深度学习 算法 安全
隐私计算训练营第三讲-详解隐私计算的架构和技术要点
SecretFlow 是一个隐私保护的统一框架,用于数据分析和机器学习,支持MPC、HE、TEE等隐私计算技术。它提供设备抽象、计算图表示和基于图的ML/DL能力,适应数据水平、垂直和混合分割场景。产品层包括SecretPad(快速体验核心能力)和SecretNote(开发工具)。算法层涉及PSI、PIR、数据分析和联邦学习(水平、垂直、混合)。此外,SecretFlow还有YACL密码库和Kusica任务调度框架,Kusica提供轻量化部署、跨域通信和统一API接口。
132 0
|
9月前
|
资源调度 分布式计算 调度
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
Fink--3、Flink运行时架构(并行度、算子链、任务槽、作业提交流程)
|
10月前
|
消息中间件 缓存 NoSQL
|
11月前
|
消息中间件 存储 关系型数据库
极客时间架构实战营作业八
极客时间架构实战营作业八
121 0
|
11月前
|
容灾 网络协议
极客时间架构实战营模块 7 作业
极客时间架构实战营模块 7 作业
62 0
|
11月前
|
消息中间件 Java 中间件
极客时间架构实战营作业六
极客时间架构实战营作业六
75 0
|
11月前
|
存储 缓存 负载均衡
极客时间架构实战营作业五
极客时间架构实战营作业五
96 0
|
11月前
|
存储 JSON NoSQL
极客时间架构实战营作业四
极客时间架构实战营作业四
85 0
|
11月前
|
运维 关系型数据库 MySQL
极客时间架构实战营作业三
极客时间架构实战营作业三
109 0
|
11月前
极客时间架构实战营作业二
极客时间架构实战营作业二
59 0