写点什么

week11- 作业一

用户头像
未来已来
关注
发布于: 2021 年 01 月 03 日

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

1、系统不可用的原因

1.1、硬件故障;

内存、磁盘、服务器掉电、交换机、网络、光纤、

1.2、软件 bug;

1.3、系统发布;

配置没有执行

1.4、并发压力;

资料竞争

1.5、网络攻击;

删除表

1.6、外部灾害;

挖断光纤

2、稳定高可用的方案

2.1、解耦

高内聚、低耦合的组件设计原则;

面向对象基本设计原则;

面向对象设计模式;

领域驱动设计建模;

2.2、隔离

业务与子系统隔离

微服务与中台架构

生产者消费者隔离

虚拟机与容器隔离

2.3、异步

多线程编程;

反应式编程;

异步通信网络编程;

事件驱动异步架构;

2.4、备份

集群设计;

数据库复制,CAP 原理;

2.5、失效转移

数据库主主失效转移;

负载均衡失效转移;

2.6、幂等;

2.7、事务补偿;

传统事务的 ACID;

分布式事务的 BASE;

事务补偿;

2.8、重试;上游调用者超时时间要大于下游调用者超时时间之和;

2.9、熔断;

2.10、限流;

令牌桶算法;

漏桶算法;

2.11、自适用限流;

2.12、降级;

2.13、异地多活;

3、运维方案

3.1、发布;

3.2、自动化测试;

3.3、持续部署;

4、监控方案

4.1、日志收集与分析;

4.2、自动控制;

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

public static Boolean checkPW(String uid,String plaintext ,String ciphertext) throws NoSuchAlgorithmException {

return SHAEncrypt(plaintext).equals( ciphertext);

}

public static String SHAEncrypt(String plaintext) throws NoSuchAlgorithmException {

String encrypted = null;

MessageDigest md = MessageDigest.getInstance("SHA-256");

byte[] bytes = md.digest(plaintext.getBytes());

StringBuffer hexString = new StringBuffer();

for (int i = 0; i < bytes.length; i++) {

String hex = Integer.toHexString(0xff & bytes[i]);

if (hex.length() == 1) {

hexString.append('0');

} else {

hexString.append(hex);

}

encrypted = hexString.toString();

}

return encrypted;

}


用户头像

未来已来

关注

还未添加个人签名 2019.02.26 加入

还未添加个人简介

评论

发布
暂无评论
week11-作业一