毕业论文
您现在的位置: 版本控制 >> 版本控制优势 >> 正文 >> 正文

Kubernetes是如何控制并发和资

来源:版本控制 时间:2022/7/12
并发控制

并发控制指的是当多个用户同时更新运行时,用于保护数据库完整性的各种技术。并发机制不正确可能导致脏读、幻读和不可重复读等此类问题。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。

悲观锁

悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。

悲观锁主要用于数据争用激烈的环境,以及发生并发冲突时使用锁保护数据的成本要低于回滚事务的成本的环境中。

优点

是“先取锁再访问”的保守策略,为数据处理的安全提供了保证。

缺点

在效率方面,处理加锁的机制会让数据库产生额外的开销,还有增加产生死锁[1]的机会;

在只读型事务处理中由于不会产生冲突,也没必要使用锁,这样做只能增加系统负载[2];

会降低了并行性,一个事务如果锁定了某行数据,其他事务就必须等待该事务处理完才可以处理那行数据。

乐观锁

乐观锁在操作数据时非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。

乐观并发控制多数用于数据争用不大、冲突较少的环境中,这种环境中,偶尔回滚事务的成本会低于读取数据时锁定数据的成本,因此可以获得比其他并发控制方法更高的吞吐量。

优点

不会产生任何锁和死锁

有更高的吞吐量

缺点

ABA问题[3]是乐观锁一个常见的问题

循环时间长开销大

乐观锁一般会使用版本号机制或CAS算法实现:

版本号机制

一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取version值,在提交更新时,若刚才读取到的version值为当前数据库中的version值相等时才更新,否则重试更新操作,直到更新成功。

CAS算法

转载请注明:http://www.0431gb208.com/sjszjzl/912.html