鸵鸟算法

介绍

在计算机科学中,鸵鸟算法是一个忽略潜在问题的一种算法策略,这种策略对计算机程序可能出现的问题采取无视态度(类似于鸵鸟在遇到危险时将头埋在地里,装作看不见)。鸵鸟算法的使用前提是,问题出现的概率很低。

传说中鸵鸟看到危险就把头埋在地底下。当你对某一件事情没有一个很好的解决方法时,那就忽略它,就像鸵鸟面对危险时会把它深埋在沙砾中,装作看不到。这样的算法称为“鸵鸟算法“。这实在不算是一个算法,但却是目前实际系统采用最多的一种策略。例如在计算机操作系统中,当死锁真正发生且影响系统正常运行时,手动干预—重新启动。

应用

鸵鸟算法可以称之为不是办法的办法。在计算机科学中,鸵鸟算法是解决潜在问题的一种方法。假设的前提是,这样的问题出现的概率很低。比如,在操作系统中,为应对死锁问题,可以采用这样的一种办法。当系统发生死锁时不会对用户造成多大影响,或系统很少发生死锁的场合采用允许死锁发生的鸵鸟算法,这样一来可能开销比不允许发生死锁及检测和解除死锁的小。如果死锁很长时间才发生一次,而系统每周都会因硬件故障、编译器错误或操作系统错误而崩溃一次,那么大多数工程师不会以性能损失或者易用性损失的代价来设计较为复杂的死锁解决策略,来消除死锁。大多数操作系统,包括UNIX,LINUX和windows,处理死锁问题的办法仅仅是忽略它。其假设前提是大多数用户宁可在极偶然的情况下发生死锁也不愿接受因为死锁解决算法带来的性能上的损失。因为解决死锁的问题,通常代价很大。鸵鸟算法的实质:出现死锁的概率很小,并且出现之后处理死锁会花费很大的代价,还不如不做处理,OS中这种置之不理的策略称之为鸵鸟算法。所以鸵鸟算法,是平衡性能和复杂性而选择的一种方法。

举例2:
比如分布式事务中
2PC两阶段提交
第一个阶段:准备(投票),并不commit
第二个阶段:提交执行(同意)/回滚
缺点:
1.单点故障。事务协调者一定不能挂,否则事务失效。即使使用seata也会有这问题
2.阻塞资源。第一阶段不释放资源
3.数据不一致。第二阶段部分事务未成功commit
为什么很多公司还在使用?
以上3个问题出现的概率低,参考鸵鸟算法

参考资料

鸵鸟算法
分布式事务理不清?先来了解两阶段提交吧

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值