随笔分类 -  并发与高并发(入门)

摘要:前言 高可用手段有哪些? 主体概要 高可用的一些手段 总结 主体内容 一、高可用的一些手段 任务调度系统分布式:elastic job+zookeeper 主备切换:apache curator+zookeeper 分布式锁实现:比如线上有一台服务器,它特别重要,我们担心它出问题带来的影响太大,因此 阅读全文
posted @ 2020-04-20 22:26 mcbbss 阅读(258) 评论(0) 推荐(0)
摘要:前言 数据库为什么要切库?如何切库? 主体概要 数据库瓶颈 数据库切库 数据库的分表 主体内容 一、数据库瓶颈 单个数据库数据量太大(1 2T):多个库 单个数据库服务器压力太大,读写瓶颈:多个库 单个表数据量过大:分表 二、数据库切库和分库 现在大型的系统在数据库层面大多采用了读写分离技术,就是一 阅读全文
posted @ 2020-04-20 21:47 mcbbss 阅读(417) 评论(0) 推荐(0)
摘要:前言 这一章节我们将讲解高并发解决方案中的服务降级和服务熔断思路,这里仅提供思路,至于如何具体操作,后续补上。 经历过12306抢票的会遇到这个问题,抢票高峰期查询列表是空的,等高峰期过后,列表再次恢复正常,这是什么问题?这里很可能采用了服务降级。 主体概要 服务降级和服务熔断概念 服务降级分类 服 阅读全文
posted @ 2020-04-19 22:09 mcbbss 阅读(242) 评论(0) 推荐(0)
摘要:前言 这一章节我们将讲解高并发解决方案中的应用限流思路。像我们之前讲的股票数据并没有把他们直接存放到数据库,而是放到Redis中,利用缓存保证用户能看到的数据的实时性和准确性。 主体概要 限流概念 应用限流示例 应用限流算法 主体内容 一、限流概念 限流就是通过对并发访问/请求进行限速或一个时间窗口 阅读全文
posted @ 2020-04-19 21:44 mcbbss 阅读(251) 评论(0) 推荐(0)
摘要:前言 这一章节我们将讲解高并发解决方案中的应用拆分思路,也可以称之为系统拆分。单个服务器再优化,它的处理都是有上限的,因此我们采用扩容、缓存、消息队列等对程序进行优化,这些手段都可行,但还不是全部。随着项目的需求要求越来越多,应用自然会跟着越来越大,因此呢,架构师设计出了特别容易扩展的方案,从整体将 阅读全文
posted @ 2020-04-19 17:19 mcbbss 阅读(402) 评论(0) 推荐(0)
摘要:前言 这一章节我们将讲解高并发解决方案中的队列。消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 主体概要 高并发の消息队列基本介绍 消息队列特性 主体内容 一、高并发の消息队列基本介绍 1.例子 在购 阅读全文
posted @ 2020-04-19 02:15 mcbbss 阅读(1173) 评论(0) 推荐(0)
摘要:前言 缓存是什么?缓存如何使用?何时该使用? 主体概要 高并发之缓存 特征、场景及组件介绍 高并发之缓存 redis的使用 高并发之缓存 高并发场景问题及实战 主体内容 一、高并发之缓存 特征、场景及组件介绍 1.以下是客户端请求数据的过程。 随着用户数量不断增加,服务器资源消耗增大,这时就需要引入 阅读全文
posted @ 2020-04-14 22:30 mcbbss 阅读(566) 评论(0) 推荐(0)
摘要:前言 高并发场景特别多,本文章将对高并发处理的主要扩容方向作分析,讲解部分实现,但是,不包括所有的高并发场景。 主体概要 扩容 主体内容 一、扩容 1.了解Java 内存结构的应该都知道 , 每个线程都有自己的工作内存, 占用内存大小取决于工作内存里变量的多少与大小 , 单个线程占用内存通常不会很大 阅读全文
posted @ 2020-04-09 22:16 mcbbss 阅读(770) 评论(0) 推荐(0)
摘要:前言 本章将阐述多线程并发的拓展及总结 主体概要 死锁 并发最佳实践 Spring与线程安全 HashMap与ConcurrentHashMap解析 多线程并发与线程安全总结 主体内容 一、死锁 1.首先,祭出一张熟悉的图,可以看到中间的四辆直行车辆互相在等待其他车让路,大家都动弹不得。如果没有人指 阅读全文
posted @ 2020-03-30 21:30 mcbbss 阅读(475) 评论(0) 推荐(0)
摘要:前言 之前的例子中基本上都用到了线程池,一般我们都是把任务初始化好之后直接丢到线程池就可以了,使用起来非常简单方便。 主体概要 线程池与new Thread对比 线程池的几个类介绍 线程池的几种状态 ThreadPoolExecutor的几个方法 线程池的合理配置 主体内容 一、线程池与new Th 阅读全文
posted @ 2020-03-26 22:24 mcbbss 阅读(915) 评论(0) 推荐(0)
摘要:前言 J.U.C的拓展组件有哪些?分别在什么场景下使用?如何使用? 主体概要 J.U.C-FutureTask J.U.C-ForkJoin J.U.C-BlockingQueue 主体内容 一、J.U.C-FutureTask 1.这里要介绍的第一个组件是FutureTask,这个组件是J.U.C 阅读全文
posted @ 2020-03-23 21:45 mcbbss 阅读(240) 评论(0) 推荐(0)
摘要:前言 什么是AQS,是AbstractQueuedSynchronizer类的简称。J.U.C大大提高了并发的性能,而AQS又是J.U.S的核心。 主体概要 J.U.C之AQS介绍 J.U.C之AQS-CountDownLatch J.U.C之AQS-Semaphore J.U.C之AQS-Cycl 阅读全文
posted @ 2020-02-20 22:38 mcbbss 阅读(408) 评论(0) 推荐(1)
摘要:前言 线程安全策略包括哪些策略,这些策略又是分别如何实现的,怎么用? 主体概要 不可变对象 线程封闭 线程不安全类与写法 同步容器 并发容器及安全共享策略总结 主体内容 一、不可变对象 概念:不可变对象是指一个对象的状态在对象被创建之后就不再变化。 不可变对象需要满足的三个条件: 对象创建以后其状态 阅读全文
posted @ 2019-12-22 22:32 mcbbss 阅读(916) 评论(0) 推荐(0)
摘要:前言 什么是发布对象呢?简要来说,就是让我们定义的对象能够被其他范围之外的范围使用。 主体概要 对象的发布与逸出 对象安全发布的四种方法 主体内容 一、对象的发布与逸出 1.概念 发布对象:使一个对象能够被当前范围之外的代码所使用。 对象逸出:一种错误的发布。当一个对象还没有被构造完成时,就使它被其 阅读全文
posted @ 2019-12-22 01:01 mcbbss 阅读(420) 评论(0) 推荐(0)
摘要:前言 本章将讲解一下线程安全性中的有序性,并对之前的线程安全性部分作一个简单的总结。 主体内容 一、首先,给出有序性的相关知识。 1.有序性:Java内存模型中,允许编译器和处理器对指令进行重排序,但是重排序过程中不会影响到单线程程序的执行,却会影响到多线程并发执行的正确性。 2.有序性遵从happ 阅读全文
posted @ 2019-12-15 22:25 mcbbss 阅读(484) 评论(0) 推荐(1)
摘要:前言 乍看可见性,不明白它的意思。联想到线程,意思就是一个线程对主内存的修改及时的被另一个线程观察到,即为可见性。 那么既然有可见性,会不会存在不可见性呢? 答案是肯定的,导致线程不可见的原因是什么呢? 有三个原因: (1)线程交叉执行。 (2)重排序结合线程交叉执行。 (3)共享变量更新后的值没有 阅读全文
posted @ 2019-12-15 21:28 mcbbss 阅读(542) 评论(0) 推荐(0)
摘要:前言 闲暇时刻,谈一下曾经在多线程教程中接触的同步锁synchronized,相当于复习一遍吧。 主要介绍 synchronized:依赖JVM Lock:依赖特殊的CPU指令,代码实现,ReetrantLock 主体内容 一、那么我们主要先讲解一下关于同步锁synchronized的作用范围。 1 阅读全文
posted @ 2019-12-14 23:49 mcbbss 阅读(450) 评论(0) 推荐(0)
摘要:前言 何为原子性?它又是通过什么原理来控制线程安全的?这里主要介绍有关Atomic原子性操作的几个类的使用场景和方法。 主体概要 AtomicInteger AtomicLong LongAdder AtomicReference AtomicIntegerFieldUpdater AtomicSt 阅读全文
posted @ 2019-11-17 02:50 mcbbss 阅读(507) 评论(0) 推荐(0)
摘要:一、CountDownLatch(计数器) 1.背景: (1)countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 (2)存在于java.util.cucurr 阅读全文
posted @ 2019-11-17 00:38 mcbbss 阅读(577) 评论(0) 推荐(0)
摘要:一、Postman 下载地址:http://www.onlinedown.net/soft/971602.htm 二、Apache Brench(AB) 下载地址:https://www.apachelounge.com/download/ 用法:cd 到bin目录下,输入“ab -n 1000 - 阅读全文
posted @ 2019-11-12 22:14 mcbbss 阅读(3397) 评论(0) 推荐(0)