第十一周课后练习
作业一:
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
系统不可用的原因
硬件故障
软件 bug
系统发布
并发压力
网络攻击
外部灾害
保障系统稳定高可用的方案
解耦
高内聚、低耦合的组件设计原则
面向对象基本设计原则
面向对象设计模式
领域驱动设计建模
隔离
业务与子系统隔离
微服务与中台架构
生产者消费者隔离
虚拟机与容器隔离
3.异步
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份
集群设计
数据库复制
CAP 原理
Failover(失效转移)
数据库主主失效转移
负载均衡失效转移
幂等
服务重复调用有时候是无法避免的,必须保证服务重复调用和调用一次产生的结果相同,
即服务具有幂等性。
事务补偿
事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试
远程服务可能会由于线程阻塞、垃圾回收或者网络抖动,而无法及时返还响应,调用者
可以通过重试的方式修复单次调用的故障。
熔断
当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求
阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用。
10 限流
在高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。
自适应限流
降级
有一些系统功能是非核心的,但是它也给系统产生了非常大的压力,这时候就可以将这些非核心的功能
关闭,将宝贵的系统资源留下来。
异地多活
采用了异地多活的多机房架构策略,也就是说将数据中心分布在多个不同地点的机房里,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问,这样每个机房都可以提供完整的系统服务,即使某一个机房不可使用,系统也不会宕机,依然保持可用。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
评论