系统稳定高可用的方案以及用户密码验证函数
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
导致系统不可用的原因有 :
硬件故障
软件Bug
系统发布
并发压力
网络攻击
外部灾害
保障系统稳定高可用的方案:
解耦(降低软件Bug)
高内聚、低耦合的组件设计原则
面向对象基本设计原则
面向对象设计模式
领域驱动设计建模
隔离(减少软件Bug)
业务与子系统隔离
微服务与中台架构
生产者与消费者隔离
虚拟机与容器隔离
异步(应对并发压力)
多线程编程
反应式编程
异步通信网络编程
事件驱动异步架构
备份(应对硬件故障)
集群设计
数据库复制
失效转移(应对硬件故障)
数据库主主失效转移
负载均衡失效转移
幂等(减少软件Bug)
保证服务重复调用和调用一次产生的结果相同
事务补偿(减少软件Bug)
通过执行业务逻辑逆操作,使事务回滚到事务前状态
重试(应对网络波动)
通过重试的方式修复单次调用故障
熔断(应对硬件故障)
通过断路器检测到故障并阻止应用程序尝试执行注定要失败的操作,避免出现服务级联失效。
限流(应对并发压力)
通过对进入系统的用户请求进行限流限制,丢弃一部分用户请求,保证真个系统的可用性。
降级(应对并发压力)
将非核心功能关闭将系统资源留给核心功能。
异地多活(应对硬件故障、外部灾害)
将数据中心分布在多个不同地点的机房里。
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文)返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
评论