一、课程特点:
1、之相关知识体系包括:
线程安全、线程封闭、线程调度、同步容器、并发容器、AQS、J.U.C等等;
2、高并发解决思路与手段,包括:
扩容:
缓存:
队列:
拆分:
服务降级与熔断:
数据库切库:
分库分表:
等等;
3、
4、最简单的场景举例:
实现一个计数功能,即将一个数字进行累加,如果是一个线程,没问题,但是多个线程,比如同时有200个线程执行,则结果完全有可能不一样,比如实例中运行时,发现最后的结果(累加和)总是小于预期,而且每次执行的结果可能不一样。
三、基本概念:
1、基础知识:
并发:同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上,此时,程序中的每个线程都将分配到一个处理器核上,因此可以同时运行。
高并发:高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求;
2、对比基本概念:
并发:多个线程操作相同的资源,保证线程安全,合理使用资源;
高并发:系统运行时,服务能同时处理很多请求,提高程序性能;比如双十一、12306等短时间内遇到大量请求的情况,这时系统在短时间内会执行大量的操作,例如对系统的请求,对数据库的操作等等。如果处理不好,不仅会造成用户体验度不好,请求请求时间边长,同时也可能导致系统宕机,严重的甚至导致系统OOM异常,机器停止工作。
3、应对考虑:
如果要想系统能够应对高并发的状态,就需要从多个方面进行优化,比如硬件、网络、系统架构、开发语言的选取、数据结构的应用、算法优化、数据库优化等等。
4、知识技能:
》总体架构:Spring Boot、Maven 、JDK8、MySQL
》基础组件:Mybatis、Guava、Lombok、Redis、Kafka
》高级组件(类):Joda-Time、Atomic包、J.U.C、AQS、ThreadLocal、RateLimiter、Hystrix、threadPool、shardbatis、curator、elastic-job等。