架构师训练营第 1 期 - 第十一周作业
(至少完成一个)
导致系统不可用的原因有哪些?保障系统稳定高可用的方案有哪些?请分别列举并简述。
引起系统不可用的原因有如下几个可能性:
硬件故障
软件 Bug
系统发布
并发压力
网络攻击
外部灾害
为了尽量避免或者解决以上问题,通常我们采用的手段如下:
对系统解耦,降低系统的复杂度,这样可以减少 bug 提升系统可维护性
高内聚低耦合的设计原则
面向对象设计和实现我们的程序
通过领域模型来设计我们系统
对解耦后的系统进行隔离,这样防止单个系统出问题后影响整个系统.隔离包括逻辑和物理的隔离
消息队列隔离
中台架构
虚拟机容器隔离
业务系统隔离->微服务
采用异步的方式进行编程,降低系统之间的耦合度,模块出故障不会影响其他模块故障
对系统采用集群的方式部署,单台服务器不可用可以转发流量到其他服务器上.
也就是失效转义
此时注意集群的时候要注意
消息的幂等
事务补偿
建立重试机制
如果服务出现故障,要采用熔断手段方式控制高并发的时候系统的可用度
对高并发还有限流手段.
计数器,有固定窗口和滑动窗口两种
令牌桶
漏桶算法
自适应限流
降级手段来保护核心功能
通过异地多活来保证大范围的可用性
请用你熟悉的编程语言写一个用户密码验证函数,Boolean checkPW(String 用户 ID,String 密码明文,String 密码密文),返回密码是否正确 boolean 值,密码加密算法使用你认为合适的加密算法。
复制代码
评论