zoukankan      html  css  js  c++  java
  • 随笔

    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  击穿,同时请求一条数据库中不存在的数据

  • 相关阅读:
    Oracle建立表空间和用户
    Session详解
    Spring中AOP方式实现多数据源切换
    Filter(过滤器)学习
    不用加号运算
    数字转化为十六进制
    1px像素问题(移动端经典问题)
    对postcss-plugin-px2rem的研究
    npm cache clean --force
    对async/await的研究
  • 原文地址:https://www.cnblogs.com/luoying/p/11803331.html
Copyright © 2011-2022 走看看