
高并发
weixin_45096138
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
本地锁和分布式锁的理解
1|0本地所和分布式锁的理解1|11. 本地锁和分布式锁的区别。1.1. 本地锁的意义 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行,以防止并发修改变量带来数据不一致或者数据污染的现象。 而为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线程都能看到,当标记不存在时可以设置该标记,其余后续线程发现已经有标记了则等待拥有标记的线程结...原创 2020-12-13 02:41:44 · 1439 阅读 · 0 评论 -
3种Redis分布式锁的对比
3种Redis分布式锁的对比 我们通常使用的synchronized或者Lock都是线程锁,对同一个JVM进程内的多个线程有效。因为锁的本质 是内存中存放一个标记,记录获取锁的线程是谁,这个标记对每个线程都可见。然而我们启动的多个订单服务,就是多个JVM,内存中的锁显然是不共享的,每个JVM进程都有自己的 锁,自然无法保证线程的互斥了,这个时候我们就需要使用到分布式锁了。常用的有三种解决方案:1.基于数据库实现 2.基于zookeeper的临时序列化节点实现 3.redis实现。本文我们介绍的就是re转载 2020-11-21 22:48:06 · 349 阅读 · 1 评论 -
为什么需要线程池
为什么需要线程池java中为了提高并发度,可以使用多线程共同执行,但是如果有大量线程短时间之内被创建和销毁,会占用大量的系统时间,影响系统效率。为了解决上面的问题,java中引入了线程池,可以使创建好的线程在指定的时间内由系统统一管理,而不是在执行时创建,执行后就销毁,从而避免了频繁创建、销毁线程带来的系统开销。线程池如何使用,以及实现原理,处理步骤,有什么使用注意事项等,今天主要从这几个方面详细介绍Java线程池。线程池的处理流程就以ThreadPoolExecutor..转载 2020-08-18 17:08:59 · 372 阅读 · 0 评论 -
分布式锁使用场景和可实现方式
我司使用了六年的分布式锁导读:不管是在单体应用时代还是分布式应用时代,一些保障我们数据安全的手段从来都未过时,只是底层实现发生了一些变化,今天我就来分享一下我司使用了六年的分布式锁方案,希望对一些同学有一些帮助。关键词:分布式,并发,原子性前言提到数据一致性、操作原子性,诸如此类的一些与并发有关的词汇时不知道你第一时间会联想到什么呢?我相信大多数人可能会想到“锁”,为什么是锁呢,这个我不多说,大家心里应该都明白。在单体应用时代,我们使用jvm提供的锁就可以很好的工作,但是到了分布式应用时代,转载 2020-08-12 11:11:46 · 340 阅读 · 0 评论 -
面试必备之乐观锁与悲观锁
面试必备之乐观锁与悲观锁推荐阅读后端程序员必备的Linux基础知识后端必备——数据通信知识(RPC、消息队列)一站式总结何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用转载 2020-07-07 10:21:15 · 136 阅读 · 0 评论 -
Java多线程:彻底搞懂线程池
Java多线程:彻底搞懂线程池熟悉Java多线程编程的同学都知道,当我们线程创建过多时,容易引发内存溢出,因此我们就有必要使用线程池的技术了。目录1 线程池的优势2 线程池的使用3 线程池的工作原理4 线程池的参数4.1 任务队列(workQueue)4.2 线程工厂(threadFactory)4.3 拒绝策略(handler)5 功能线程池5.1 定长线程池(FixedThreadPool)5.2 定时线程池(ScheduledThreadPool )转载 2020-07-01 08:26:46 · 209 阅读 · 0 评论 -
大白话讲解分布式缓存并发冲突问题及其解决方案:zk分布式锁
大白话讲解分布式缓存并发冲突问题及其解决方案:zk分布式锁一、背景介绍如果您更喜欢看视频教程,可以看本头条号发布的视频教程,绝对大白话,手把手带你体验整个冲突的演示过程及解决方案:两种方式,随机挑选缓存架构之实战演练基于zk分布式锁解决分布式缓存并发冲突问题1、源架构:2、分布式缓存并发冲突问题二、项目整合1、广告服务系统**功能:**为媒体提供广告的源头服务...转载 2020-04-28 10:53:53 · 532 阅读 · 0 评论 -
缓存架构之借助消息中间件RabbitMQ实现Redis缓存实时更新实战演练
一、背景介绍前面,我们花了大量的时间来介绍消息中间件RabbitMQ,讲了其基本使用,其可靠性传输,这些对我们的缓存架构有什么用呢,我们直接上图来分析下:我们要实现这部分功能,需要借助两个系统:广告管理系统:生产广告的地方 缓存服务系统:消费广告的地方这两个独立的系统又有着紧密的联系,一个是生产者,一个是消费者,我们如何建立这两个系统的联系呢,我们生产的广告,如何及时能通知你来获取...转载 2020-03-31 00:02:12 · 1347 阅读 · 0 评论 -
高并发下,Redis缓存和MySQL数据一致性方案详解
一、需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用Redis做一个缓冲操作,让请求先访问到Redis,而不是直接访问MySQL等数据库。从Redis缓存读数据,一般都是按照下图的流程来进行业务操作:读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(MySQL)间的数据一致性...原创 2020-03-30 16:46:43 · 704 阅读 · 0 评论 -
乐观锁和悲观锁
并发控制当程序中可能出现并发的情况时,我们就需要通过一定的手段来保证在并发情况下数据的准确性,通过这种手段保证了当前用户和其他用户一起操作时,所得到的结果和他单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是保证一个用户的工作不会对另一个用户的工作产生不合理的影响。没有做好并发控制,就可能导致脏读、幻读和不可重复读等问题。并发我们常说的并发控制,一般...转载 2020-03-30 16:25:45 · 167 阅读 · 0 评论