基于数据库: 基于数据库表做乐观锁,用于分布式锁。(version) 基于数据库表做悲观锁(InnoDB,for update) 基于数据库表数据记录做唯一约束(表中记录方法名称) 基于缓存: 使用redis的setnx()用于分布式锁。(setNx,直接设置值为当前时间+超时时间,保持操作原子性) ...
分类:
其他好文 时间:
2019-09-24 15:38:22
阅读次数:
96
from: https://segmentfault.com/a/1190000009374567 什么是MVCC MVCC即Multi-Version Concurrency Control,中文翻译过来叫多版本并发控制。 MVCC是解决了什么问题 众所周知,在MYSQL中,MyISAM使用的是表 ...
分类:
数据库 时间:
2019-09-23 15:19:26
阅读次数:
108
1、图解Elasticsearch内部如何基于_version进行乐观锁并发控制 (1)_version元数据 PUT /test_index/test_type/6{ "test_field": "test test"} { "_index": "test_index", "_type": "te ...
分类:
其他好文 时间:
2019-09-21 12:41:34
阅读次数:
116
作者|张磊阿里云容器平台高级技术专家,CNCF官方大使一、为什么需要Pod容器的基本概念我们知道Pod是Kubernetes项目里面一个非常重要的概念,也是非常重要的一个原子调度单位,但是为什么我们会需要这样一个概念呢?在使用容器Docker的时候,也没有这个说法。其实,如果想要理解Pod,首先要理解容器,所以来回顾一下容器的概念:容器的本质实际上是一个进程,是一个视图被隔离,资源受限的进程。容器
分类:
其他好文 时间:
2019-09-19 19:15:52
阅读次数:
62
1.轻量级锁(Lock)与重量级锁(synchronized):都是可重入锁 2.可重入锁(递归锁):方法中嵌套方法,锁可传递 3.读写锁(ReentrantReadWriteLock)--读写分离 读锁(获取该值信息)和写锁(对该值操作) 4.乐观锁 本质没有锁,效率比较高、无阻塞、无等待、重试。 ...
分类:
其他好文 时间:
2019-09-15 14:14:55
阅读次数:
130
第1章 课程导学【征途*扬帆起航】没有梦想,何必远方?本小结将站在更高的起点,从项目演示开始 ,然后到本课程适用人群定位,再到通过思维导图介绍课程内容体系,接着到分析收获,最后到学习本课程的一些前置要求,为你的学习征途扬帆起航做保证。第2章 红包业务概述&系统建模【磨刀不误砍柴工】或许大家体验过抢红 ...
分类:
微信 时间:
2019-09-10 00:44:07
阅读次数:
475
前言 CAS,即 Compare And Swap(比较与交换),是一种无锁算法,基于硬件原语实现,能够在不使用锁的情况下实现多线程之间的变量同步。jdk中的java.util.concurrent.atomic包中的原子类就是通过CAS来实现了乐观锁。 CAS算法过程 算法涉及到三个操作数: 需要 ...
分类:
编程语言 时间:
2019-09-03 22:39:46
阅读次数:
118
1、悲观锁(Pessimistic Concurrency Control),第一眼看到它,相信每个人都会想到这是一个悲观的锁。没错,它就是一个悲观的锁。 那这个悲观体现在什么地方呢?悲观是我们人类一种消极的情绪,对应到锁的悲观情绪,悲观锁认为被它保护的数据是极其不安全的,每时每刻都有可能变动,一个 ...
分类:
其他好文 时间:
2019-09-03 09:23:33
阅读次数:
80
一、ES并发控制原理1.1、ES并发冲突问题1.2、悲观锁与乐观锁并发控制图解ES内部基于_version进行乐观锁并发控制:二、并发控制实践2.1、基于_version进行乐观锁并发控制 ...
分类:
其他好文 时间:
2019-09-02 17:10:27
阅读次数:
228
前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细 ...
分类:
编程语言 时间:
2019-09-02 15:43:59
阅读次数:
114