美文网首页
系统优化!! 吞吐量??

系统优化!! 吞吐量??

作者: 公子请留步LookMe | 来源:发表于2023-03-01 11:39 被阅读0次

    一、jvm 堆内存大小 (减少full gc)

    二、静态资源分离
    将静态资源数据加载至nginx或者其他服务提升系统吞吐量

    三、数据库索引,减少读写io次数 统一查询处理

    四、缓存
    本地缓存(缓存不一致)

    设计一个本地内存需要有什么功能
      存储;并可以读、写;
      原子操作(线程安全),如ConcurrentHashMap
      可以设置缓存的最大限制;
      超过最大限制有对应淘汰策略,如LRU、LFU
      过期时间淘汰,如定时、懒式、定期;
      持久化
      统计监控
    

    缺点:使用本地缓存如果存在多台服务器会使每台服务器都需要缓存,而且需要保证并发安全需要加锁,这样导致每台服务器都得进行一次抢占操作影响速度
    redis缓存:
    分布式锁和同步器 · redisson/redisson Wiki · GitHub

    springboot2.0以后默认lettuce作为操作redis的客户端,它使用netty进行网络通信
    lettuce的bug导致netty推外内存溢出
    1>使用jedis 2>升级lettuce
    缓存穿透:空结果缓存
    缓存雪崩 :设置过期时间(进行随机过期)
    缓存击穿:加锁
    

    锁:

    本地锁  :JUC
    分布式锁: Redis中间锁 
    Redis锁:可重入锁、读写锁、信号量, 闭锁
    

    缓存一致性:

    双写模式:数据发生改变的话,删除缓存重新写入缓存
    失效模式:数据发生改变,直接删除缓存 等待下一次查询缓存在写入
    解决方案:
    1.加过期时间,保存读多写少的数据,处理并发可以加读写锁
    2.canal:模拟mysql从表使用binlog日志记录实时监控更新redis,数据异构
    总结:都会出现脏数据
    

    SpringCache

    @Cacheable: 触发保存缓存数据.
    @CacheEvict: 触发删除缓存数据.
    @CachePut: 更新缓存数据.
    @Caching: 重新组合缓存.
    @CacheConfig: 在类级别共享一些与缓存相关的常见设置.
    

    相关文章

      网友评论

          本文标题:系统优化!! 吞吐量??

          本文链接:https://www.haomeiwen.com/subject/pxmakdtx.html