• 高并发(四)扩容/阻塞队列


    扩容

    • 扩容:

        垂直扩展(纵向扩展):提高系统部件能力

        水平扩容(横向扩展):增加系统成员来实现

    • 扩容-数据库

        读操作扩展:memcache、redis、CDN等缓存

        写操作扩展:Cassandra、Hbase

    • 缓存

        命中率:命中数/(命中数+没有命中数)

        最大元素(空间)

        清空策略:FIFO,LFU,LRU,过期时间,随机等

    • 分类:

        本地缓存:编程实现(成员变量、局部变量 、静态变量)、Guava Cache

        分布式缓存:Memcache、Redis

        Guava Cache:

    • redis:
    1. 数据类型:string、hash、list、set、sorted set
    2. 编码方式:raw、int、ht、zipmap、linkedlist
    3. 数据指针
    4. 虚拟内存
    5. 其他信息
    • 高并发问题:
    1. 缓存一致性
    2. 缓存穿透 解决:1.对查询为空的对象进行缓存
    3. 缓存雪崩现象

    消息队列:(kafka、RabbitMQ)

    • 为什么会需要消息队列(MQ)?

    ##########################################################################################

    主要原因是由于在高并发环境下,由于来不及同步处理,请求往往会发生堵塞,比如说,大量的insert,update之类的请求同时到达MySQL,直接导致无数的行锁表锁,甚至最后请求会堆积过多,从而触发too many connections错误。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。

    #########################################################################

        生产和消费的速度或稳定性等因素不一致

        好处:1.业务解耦2最终一致性3.广播4.错峰与流控

    • 消息队列特性:

        业务无关:只做消息分发

        FIFO:先投递先到达

        容灾:节点的动态增删和消息的持久化

    应用拆分:

    一个应用被很多小应用拆分  缺点:带来管理的复杂性

    原则:

    业务优先

    循序渐进

    兼顾技术:重构、分层

    微服务:

    异步通信(消息队列)

  • 相关阅读:
    大项目之网上书城(五)——主页(End)
    # 大项目之网上书城(四)——主页(下中)
    大项目之网上书城(三)——主页(中)
    大项目之网上书城(二)——主页(上)
    大项目之网上书城(一)——注册页面
    Mycat
    centos7 bash: netstat: 未找到命令
    docker 推送镜像到Harbor错误修改
    Jenkins插件下载镜像加速
    docker镜像加速器
  • 原文地址:https://www.cnblogs.com/nickup/p/9721237.html
Copyright © 2020-2023  润新知