写点什么

第十一周课后练习

用户头像
Binary
关注
发布于: 2021 年 02 月 08 日

作业一:


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

系统不可用的原因

  • 硬件故障

  • 软件 bug

  • 系统发布

  • 并发压力

  • 网络攻击

  • 外部灾害


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

  1. 解耦

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

  • 面向对象基本设计原则

  • 面向对象设计模式

  • 领域驱动设计建模

  1. 隔离

  • 业务与子系统隔离

  • 微服务与中台架构

  • 生产者消费者隔离

  • 虚拟机与容器隔离

3.异步

  • 多线程编程

  • 反应式编程

  • 异步通信网络编程

  • 事件驱动异步架构

  1. 备份

  • 集群设计

  • 数据库复制

  • CAP 原理

  1. Failover(失效转移)

  • 数据库主主失效转移

  • 负载均衡失效转移

  1. 幂等

  • 服务重复调用有时候是无法避免的,必须保证服务重复调用和调用一次产生的结果相同,

即服务具有幂等性。

  1. 事务补偿

  • 事务补偿:通过执行业务逻辑逆操作,使事务回滚到事务前状态

  1. 重试

  • 远程服务可能会由于线程阻塞、垃圾回收或者网络抖动,而无法及时返还响应,调用者

可以通过重试的方式修复单次调用的故障。

  1. 熔断

  • 当某个服务出现故障,响应延迟或者失败率增加,继续调用这个服务会导致调用者请求

阻塞,资源消耗增加,进而出现服务级联失效,这种情况下使用断路器阻断对故障服务的调用。

10 限流

  • 在高并发场景下,如果系统的访问量超过了系统的承受能力,可以通过限流对系统进行保护。

  1. 自适应限流

  2. 降级

  • 有一些系统功能是非核心的,但是它也给系统产生了非常大的压力,这时候就可以将这些非核心的功能

关闭,将宝贵的系统资源留下来。

  1. 异地多活

  • 采用了异地多活的多机房架构策略,也就是说将数据中心分布在多个不同地点的机房里,这些机房都可以对外提供服务,用户可以连接任何一个机房进行访问,这样每个机房都可以提供完整的系统服务,即使某一个机房不可使用,系统也不会宕机,依然保持可用。


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


用户头像

Binary

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
第十一周课后练习