随笔

1,cas

Cas是JUC中的JAR,用来处理线程,多并发情况下的数据一致性问题。

2,优点:

底层操作,原子性,数据一致性

缺点:CPU开销大,ABA问题

CAS 比较重试机制,在高并发的情况下。反复更新又更新不成功,循环往复。

ABA问题,AtomicStampedReference,使用版本号解决ABA问题

使用volatile 保证比较值都是最新的

怎样提高系统的高并发能力?

1、静态资源结合CDN来解决图片文件等访问

2、分布式缓存:redis、memcached等。

3、消息队列中间件:activeMQ等,解决大量消息的异步处理能力。

4、应用拆分:一个工程被拆分为多个工程部署,利用dubbo解决多工程之间的通信。

5、数据库垂直拆分和水平拆分(分库分表)等。

6、数据库读写分离,解决大数据的查询问题。

7、利用nosql ,例如mongoDB配合mysql组合使用。

8、建立大数据访问情况下的服务降级以及限流机制等。

 

Synchronized 锁优化

偏向锁

单线程情况下使用,避免使用CAS造成的开销,产生本地延迟。

对象头是否指向当前线程,CAS替换Mark Work。到达全局安全点同时线程替换失败,挂起,并撤销偏向锁,进入轻量级锁

 

常用技巧

按目标设计接口做幂等设计

l  查询接口,每次结果一致

l  更新,修改。保证只操作一次。考虑一场情况可能造成的影响

 

Redis 雪崩,击穿

 

 

l  雪崩,高并发同时请求失效数据。直接请求数据库,导致数据库崩掉,并且重启继续崩。避免redis同时大面积失效,时间时间后加随机数,或者设置成永不过期

l  击穿,同时请求一条数据库中不存在的数据

posted @ 2019-11-06 09:53  影落  阅读(113)  评论(0编辑  收藏  举报