架构设计(高可用)


架构设计(高可用)

                

                     

                               

cap 原理

        

cap原理:分布式系统的三个特性(一致性、可用性、分区容错性)不能同时满足

                    

一致性(consistency):分布式系统中数据在多个节点冗余存储,从任意节点读取数据,总能读取最新的数据
可用性(avaliable):分布式系统在任何时刻都能正常响应
分区容错性(partition):发生网络分区(如网络故障、丢包等)时,系统仍可以正常工作                     

             

分布式系统中,网络分区不可避免,分区容错性需要满足,要在一致性、可用性之间做出选择

ca:同时满足一致性、可用性,单节点部署时不存在网络分区,如关系型数据库
cp:同时满足一致性、分区容错性,故障期间不可用,如redis集群、mongoDB集群
ap:满足可用性、分区容错性,从不同节点可能会读到不一致的数据,如dynamoDB集群

              

base理论:牺牲部分一致性,保证系统可用,但最终会保持一致

基本可用:系统出现故障时,允许牺牲部分可用性(如响应时间延长、服务降级等)
软状态:在可容忍的一段时间内,允许系统的不同节点数据不一致,系统正常对外服务
最终一致性:经过一段时间数据同步完成后,不同节点之间的数据保持一致

               

                 

                               

可用性标准

     

可用性计算公式

# 故障时间计算
可用性 = 平均正常工作时间/(平均正常工作时间时间+平均故障时间)

# 请求数计算:故障时间难于统计,一般用请求数计算可用性
可用性 = 正常请求数/(增长请求数+异常请求数)

             

可用性分级:关键业务、核心业务的可用性一般要达到极高可用性(99.999%及以上)

                    

            

                  

                               

高可用实现

   

冗余部署

# 服务冗余
服务器数量按照满足最小性能要求数量的1.5倍部署,
如果按照最小数量部署,剩余的服务器可能会超负荷运行,容易故障
冗余部署后,可将流量切换到备份的服务器,不使服务器超负荷运行

# 数据冗余备份
数据库如mysql使用双主部署,避免出现单点故障,导致服务不可用

         

限流降级

# 服务降级
远程服务调用出现故障,需要进行服务降级,避免一个服务故障导致其他服务不可用

# 服务限流
需要对服务的最大流量限制,避免超负荷运行

# 线程隔离
与主业务无关的逻辑(如日志等)单独处理,避免出错后对主业务造成影响

              

                     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值