美文网首页一些收藏技术原理高并发
如何设计一个高并发系统

如何设计一个高并发系统

作者: 会微积分的猫_9370 | 来源:发表于2022-07-10 23:20 被阅读0次

    什么是高并发

    高并发(High Concurrency)是指通过设计保证系统能够同时并行处理很多请求。

    常用指标有:

    • QPS,每秒响应请求数
    • TPS,每秒响应事务数
    • RT,响应时间,系统对请求做出响应的时间
    • Concurrency,并发数,系统同时能处理的请求数量
    • 吞吐量:单位时间内处理的请求数量

    提高并发的思路

    • 降低 RT
    • 提高 Concurrency

    如何降低 RT

    • 升级服务器和数据库硬件配置,最简单粗暴且有效的手段,但是硬件能带来的提升是有上限的
    • 服务端引入缓存,缓存分为本地缓存和分布式缓存,可显著降低查询接口的响应时间
    • 购买 CDN 服务,将图片、html、css、js等静态资源上传到 CDN,可显著降低用户打开页面的响应时间
    • 业务优化,比如流程拆分,将实时性要求低的流程写入消息队列进行异步处理,将互相独立的流程并行处理;数据预加载;避免热点数据;索引优化;JVM 优化等

    如何提高 Concurrency

    • 使用反向代理 Nginx,可以大大的提高服务的并发数,一般可以达到 10w 并发数,此时单机数据库会出现瓶颈
    • 数据库读写分离,数据库使用主从模式,对一致性要求低的查询请求可以走从库,分担主库压力
    • 数据库分库分表,把不同业务的数据放到不同的数据库中,如果单表数据量过大,可以进行分表存储。分库分表可以显著提升数据库查询的效率
    • 使用负载均技术 LVS/F5,此时 Nginx 已经成为瓶颈,多加一层 Nginx 会影响 RT,所以一般会使用更高效的负载均衡软件 LVS 或者硬件 F5,此时并发数可以上升到几十万
    • 使用 DNS 负载均衡,可以在域名下面绑定多个虚拟IP,每个虚拟 IP 指向一个机房,此时并发数已经来到百万、千万甚至亿的级别,服务入口的并发数将不在是瓶颈。

    架构图

    世上没有万能的架构,需要根据实际情况进行权衡。


    image.png

    相关文章

      网友评论

        本文标题:如何设计一个高并发系统

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