高并发架构设计模板

目录

 一、高并发简介 

二、高并发框架设计经验

        2.1 基础设施层

        2.2 服务端架构层

        架构分层

        业务分割

        分布式

        数据集群

        缓存设计

        消息队列流量削峰

        服务治理

         2.3 服务应用层


 一、高并发简介 

        高并发(High Concurrency)是指特定时间段内系统能够同时处理大量请求或链接的能力,并且能够迅速给出响应。比如秒杀场景、人气超高的网红或明星进行直播时,直播间一下涌入大量的观众。

        高并发系统的涉及目标是确保用户访问量激增的情况下,系统仍能保持稳定运行,避免服务延迟或中断。衡量高并发系统性能的指标主要包括:

  1. 响应时间:系统对单一请求做出反应的所需的时间。
  2. 吞吐量:系统在单位时间内能够处理的请求数。
  3. 每秒查询数:指QPS,衡量系统每秒种处理查询请求的数量。
  4. 并发用户数:系统能够同时支撑正常使用系统功能的用户数量。

        现在的互联网产品都要考虑高并发,尤其是 C 端业务,一般情况下,用户的访问量都是很大的。下面就来谈谈高并发架构设计的经验。

二、高并发框架设计经验

        高并发框架设计主要从三大层面建设和分析。

  • 基础设施层
  • 服务端架构层
  • 服务应用层

        下面分别展开介绍下这三层的含义。

        2.1 基础设施层

        基础设施层一般包含了服务器、IDC或多云部署、负载均衡、网络设备等。目前部署服务都通过容器的方式,而容器的底层能力建立在K8s基础之上,服务本身的部署管理已经有了成熟的设施帮我们实现,具体部署服务时可以采用:

  1. 多IDC部署,比如服务同时部署在北京和上海。
  2. 多云部署,多云部署可以让企业跨多个云提供商分配工作负载,利用各云平台的负载均衡服务,可以更灵活地管理和分散高并发流量。如果某个云平台遇到性能瓶颈或故障,可以迅速将流量转移到其他健康的云环境,确保服务连续性和高可用性。不同的云提供厂商还提供了丰富的弹性计算资源,可以根据流量进行动态扩缩容,以应对高并发。
  3. CDN 加速,通过在多个地理位置部署服务,利用 CDN 和其他加速技术,减少网络延迟,提升用户体验。
  4. 负载均衡,使用高性能的负载均衡器(如Nginx)来分配进入的流量至多个后端服务器,确保没有单点过载,提高系统整体的处理能力。
  5. 监控预警,建立全面的监控体系,包括性能监控、日志分析、异常报警等,及时发现问题并处理。

        2.2 服务端架构层

        基础设施层由运维团队维护和提供保障,作为开发人员可能不必过多的关注基础设施层,公司内都有统一的标准。但是服务端架构层确实我们需要重点关注的。

        架构分层

        首先对服务进行拆分,拆分出核心链路上的服务作为底层服务,然后再抽象出一个应用层对外提供服务。

        将系统在横向维度上切分成几个部分,每一层的功能职责要足够单一,然后通过上层对下层的依赖和调度组成一个完整的系统。

        将系统划分成多层后,每层专注于特定的功能,是系统结构清晰易于理解,可以进行相对独立的测试。降低耦合度增加扩展性,而且可以进行隔离部署,提高系统的稳定性,保证了服务的性能。

        业务分割

        在纵向方面对业务进行切分,将一块相对复杂的业务分割成不同的模块单元,对应的是模块的划分,通过合理的模块划分,使得每个模块都能可以满足 高内聚低耦合 的设计要求,这样不同的模块可以分布式部署,也能提高并发处理能力和功能扩展。

        分布式

        将分割后的业务服务进行分布式部署,独立的缓存、独立的数据库、独立的应用服务器等。这样可以针对性的进行部署和扩展,当有突发流量时,可以结合云服务的动态扩容的特点,对服务进行扩容,以提高系统应对高并发的能力。

        数据集群

        可以针对数据层单独做一些处理,比如主从分离、读写分离、分库分表,或者采用分布式数据库等等。

        互联网系统大多都是读多写少,因此读写分离可以帮助主库抗量。一般我们都是一主多从的架构,可以抗量,也可以保证数据不丢。

        现在比较流行的分布式数据库 NewSQL 可以替代分库分表,如 TiDB,将数据保存在多台 TiKV 中进行统一管理。

        缓存设计

        缓存的最大作用是可以提升系统性能,保护后端存储不被大流量打垮,增加系统的伸缩性。缓存的设计,需要分多个思路并行。

        首先要考虑的是,必须在数据库之上,增加一层分布式缓存,比如Redis。这里需要考虑一下缓存和数据库一致性的问题。

        其次需要考虑的是多级缓存架构。分几级缓存设计,同时设计热点缓存架构。在分布式缓存之上,还可以加一个本地缓存,来缓存最热的数据;采用多个分布式缓存来搭建多级缓存。

        消息队列流量削峰

        针对流量突峰,仅仅有缓存来抗量可能还不够,还需要使用消息队列来削峰。使用消息队列后,可以将同步处理的请求改为 通过消费 MQ 消息来异步消费,这样可以大大减少系统处理的压力,增加系统的并发量。常用的消息队列比如 kafka。

        服务治理

        在微服务中要对服务进行超时、限流、熔断、降级等处理,避免出现雪崩效应,导致整个系统不可用。

         2.3 服务应用层

        对于单机的处理,如果想提高并发处理能力,可以采用多线程,现在的处理器都是多核处理器,采用多线程可以充分利用多核的优势,提高处理能力。对于可以异步的地方进行异步处理,比如采用线程池等方式,避免让某一个请求长时间等待,提交请求后即可返回,实现快速处理,提高系统吞吐量。

        对一些热点数据进行预热,比如秒杀场景,将商品信息等热点数据提前放入缓存中做好准备,避免从DB 查询影响整体的性能。

        你对高并发处理还有什么经验?欢迎留言讨论。

往期经典推荐

手把手教你实现服务高可用性-CSDN博客

TiDB高手进阶:揭秘自增ID热点现象与高级调优技巧-CSDN博客

Maven核心概念全解析-CSDN博客

如何熟悉一个陌生的业务系统-CSDN博客

微服务拆分:打造高性能、高扩展的未来架构-CSDN博客

  • 11
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
华为软件概要设计模板是华为公司为了规范软件设计过程而提供的一种模板,用于指导软件概要设计阶段的工作。这个模板包含了软件概要设计的关键要素和步骤,帮助开发人员在设计阶段准确而高效地完成任务。 华为软件概要设计模板主要包括以下几个部分: 1. 引言:介绍软件概要设计模板的目的和作用,以及软件项目的背景和目标。同时,说明模板的使用范围和要求。 2. 需求分析:对软件需求进行详细的分析和整理,明确软件的功能和性能要求。这部分内容可以包括用户需求、系统需求和非功能需求等。 3. 概念设计:根据需求分析的结果,进行概念设计,即对软件的整体结构和模块划分进行设计。这部分内容可以包括系统架构、模块划分和数据流程等。 4. 接口设计:定义不同模块之间的接口,包括数据传输格式、消息交互方式等。同时,还需要考虑与其他外部系统的接口设计。 5. 数据设计:定义软件中使用的数据结构、数据库设计和数据流程等。这部分内容需要考虑数据的存储、读取和更新等操作。 6. 安全性设计:根据软件的安全要求,对系统进行安全性设计,包括用户权限管理、数据加密和防御措施等。 7. 性能设计:对软件的性能进行考虑和设计,包括系统响应时间、并发访问能力和负载均衡等。 8. 部署设计:设计软件的部署架构和环境,考虑软件的安装、配置和升级等问题。 通过使用华为软件概要设计模板,开发人员可以按照规范的流程和方法进行软件概要设计,提高设计的质量和效率,同时还可以促进团队之间的沟通和协作。这个模板可以帮助开发团队构建出满足用户需求的高质量软件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超越不平凡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值