【前言】
之后的技术方向应该是大数据量和高并发场景下的编程,分别对应大量数据的存储查询计算,超高请求的多线程处理,这才是以后的技术发展方向。当然是在能完成基础业务的前提下,增删改查数据转换SSM这些。现在项目的用户数上来了,经常出现,在公司测试好好的,一发布到现网,就会出各种性能瓶颈,请求超时,数据库连接超时,甚至部件奔溃。所以不光是高并发的编程,更需要高并发场景下的测试,像公司基本都是功能测试,性能测试很少,测试不充分,肯定会出问题。
好了,废话就不多说了,记录下学习经验。
【正文】
高并发主要包括:线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C等等
一般解决高并发问题,主要采取手段:扩容,缓存,队列,拆分,服务降级与熔断,数据库切库,分库分表等等
说下这些在项目组的应用吧。扩容,基本所有部件都经历过 单机-双击-集群;缓存,主要是在用户订购关系这块用的redis+持久化;服务降级,是给接口加了线程锁,频率1tips;分库分表,基本都会有用户库系统库的概念,用户表这种几百w的大表,根据ID首字母拆成10个表。
高并发无非是为了保证你的线程是安全的,不会出现线程传输的数据和最后入库的不一致。
线程安全主要包括:
线程安全性:原子性,可见性,有序性,atomic包,CAS算法,synchronized和lock,volatile,happes-before
安全发布对象:安全发布方法,不可变对象,final关键字使用,不可变方法,线程不安全类与写法
线程封闭:堆栈封闭,threadLocal线程封闭,JDBC的线程封闭,同步容器,并发容器,J.U.C
AQS和J.U.C组件:CountDownLatch,CyclicBarrier,Semaphore
原文地址:https://www.cnblogs.com/likailun/p/8934403.html