初识elasticsearch解决并发问题

一、乐观锁和悲观锁

①悲观锁:

     顾名思义,就是很悲观,每次去拿数据的时候都认为被人会修改,所以每次拿数据的时候都会加锁,以防别人修改,直到操作完成后,才会被别人执行。常见的关系型数据库,就用到了很多这样的机制,如行锁,表锁,读锁,写锁,都是在操作之前加锁。

     悲观锁的优点:方便,直接加锁,对外透明,不需要额外的操作。

     悲观锁的缺点:并发能力低,同一时间只能有一个操作。

②乐观锁l:

     顾名思义,就是很乐观,每次拿数据的时候,都认为别人不会修改,所以不会加锁,但是在执行跟新操作的时候,需要判断一下,在此期间有没有别人去更新数据,一般使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。

     乐观锁的优点:并发能力高,不用加锁。

     乐观锁的缺点:每次更新数据需要判断一下版本号,操作复杂,可能需要执行多次(查询,计算,写入)操作,直到跟新成功。

二、elasticsearch的并发处理

   ①、elasticsearch多线程异步并发修改时,采用乐观锁基于_version进行并发控制。其过程和上述乐观锁类似。

   

   ②、elasticsearch后台,进行数据同步时,采用的是多线程异步的,所以更新的请求是乱序的。当后修改的操作先到,跟新完成后,先修改的操作后到的话,会被丢弃掉,不会让旧值覆盖新值。

   

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值