第十一周作业

用户头像
alpha
关注
发布于: 2020 年 12 月 06 日

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

列一些我碰到的导致系统不可用的原因:

1、服务器硬盘资源不足,同时又缺少监控,排查了很久最终发现是硬盘满了。

2、Redis内存写满。有些key么有失效时间,没有及时清理无用的值,没有预估资源的增长情况。

3、并发压力。系统中某个时间并发增大,使系统负载较高,响应慢,无法处理后续请求。

4、微服务超时时间比较长,某个功能执行缓慢等待超时,越来越多请求进来后,占满了线程池。

5、代码bug,执行一个更新操作,某些场景导致不带where条件,全表更新。

6、数据库负载高,查询缓慢。

7、数据库死锁。



高可用方案:

解耦、拆分子系统分布部署。

异步。多线程编程。事件驱动异步架构。

备份。集群设计,数据库复制。

失效转移。负载均衡失效转移,数据库实现转移。(一般通过配置服务器进行心跳管理,确认是否失效,进行故障转移)

熔断。

限流。计数器算法。令牌桶算法。漏桶算法。自适用限流(根据服务器负载动态限流)。

降级。高并发时,将非核心功能下线。

异地多活。



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



使用Md5进行加密。加密时将明文密码+用户id同时进行MD5,保存加密结果,防止用户密码简单,被暴力破解。验证密码时,进行同样的加密与数据库中保存的密码进行对比。

用户头像

alpha

关注

还未添加个人签名 2019.01.09 加入

还未添加个人简介

评论

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