摘要: 1 前言 数据库大并发操作要考虑死锁和锁的性能问题。看到网上大多语焉不详(尤其更新锁),所以这里做个简明解释,为下面描述方便,这里用T1代表一个数据库执行请求,T2代表另一个请求,也可以理解为T1为一个线程,T2 为另一个线程。T3,T4以此类推。下面以SQL Server(2005)为例。 数据库 阅读全文
posted @ 2018-04-18 16:25 java懒洋洋 阅读(1663) 评论(0) 推荐(0) 编辑
摘要: 前言 控制并发的方法很多,从最基础的synchronized,juc中的lock,到数据库的行级锁,乐观锁,悲观锁,再到中间件级别的redis,zookeeper分布式锁。特别是初级程序员,对于所谓的锁一直都是听的比用的多,第一篇文章不深入探讨并发,更多的是一个入门介绍,适合于初学者,主题是“根据并 阅读全文
posted @ 2018-04-18 16:09 java懒洋洋 阅读(994) 评论(0) 推荐(0) 编辑
摘要: 分布式遭遇并发 在前面的章节,并发操作要么发生在单个应用内,一般使用基于JVM的lock解决并发问题,要么发生在数据库,可以考虑使用数据库层面的锁,而在分布式场景下,需要保证多个应用实例都能够执行同步代码,则需要做一些额外的工作,一个最典型分布式同步方案便是使用分布式锁。 分布式锁由很多种实现,但本 阅读全文
posted @ 2018-04-18 16:04 java懒洋洋 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一、前言 最近刚刚结束转岗以来的第一次双11压测,收获颇多,难言言表, 本文就先谈谈异步日志吧,在高并发高流量响应延迟要求比较小的系统中同步打日志已经满足不了需求了,同步打日志会阻塞调用打日志的线程,而打日志本身是需要写磁盘的,所以会造成rt增加。异步日志就是为了解决这个问题。 二、日志打印模型 同 阅读全文
posted @ 2018-04-18 15:32 java懒洋洋 阅读(1560) 评论(0) 推荐(0) 编辑
摘要: 我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在 阅读全文
posted @ 2018-04-18 14:41 java懒洋洋 阅读(412) 评论(0) 推荐(0) 编辑
摘要: 前言: 锁分3种:java锁、分布式锁、DB锁 分布式锁的几种实现方式 目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题。分布式的CAP理论告诉我们“任何一个分布式系统都无法同时满足一致性(Consistency)、可用性(Availability)和 阅读全文
posted @ 2018-04-18 14:18 java懒洋洋 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 前言: 锁分3种:java锁、分布式锁、DB锁 在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下: 公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁 上面是很多锁的名词,这些分类并 阅读全文
posted @ 2018-04-18 14:07 java懒洋洋 阅读(267) 评论(0) 推荐(0) 编辑