首页 > 其他分享 >如何设计一个高并发系统?

如何设计一个高并发系统?

时间:2024-01-15 16:34:29浏览次数:25  
标签:分库 请求 系统 并发 缓存 分表 设计

所谓高并发系统,是指能同时处理大量并发请求,并及时响应,从而保证系统的高性能和高可用

那么我们在设计一个高并发系统时,应该考虑哪些方面呢?

1. 搭建集群

如果你只部署一个应用,只部署一台服务器,那抗住的流量请求是非常有限的。并且,单体的应用,有单点的风险,如果它挂了,那服务就不可用了

因此,设计一个高并发系统,我们可以采用分布式部署的方式,部署多台服务器,使用负载均衡的方式把流量分流开,让每个服务器都承担一部分的并发和流量,从而提升整体系统的并发能力

2. 微服务拆分

所谓的微服务拆分,其实就是把一个单体的应用,按功能单一性,拆分为多个服务模块。比如一个电商系统,拆分为用户系统、订单系统、商品系统等等。

因此,微服务拆分同样可以分摊请求流量,提高并发能力。如果配合分布式部署,为每个微服务搭建集群,性能将进一步提升

3. 分库分表

在高并发的场景下,大量请求访问数据库,如果表存储的数据量太大,会影响 MySQL 性能,此时可以考虑分库分表

不管是分库还是分表,都有两种切分方式:水平切分和垂直切分

  • 分表
    • 垂直分表:表中的字段较多,将字段拆分到多个表
    • 水平分表:表中的数据较多,将数据拆分到多个表
  • 分库
    • 垂直分库:数据库表太多,按照业务逻辑进行切分,比如用户相关表放在一个数据库,订单相关表放在另一个数据库
    • 水平分库:指将单张表的数据切分到多个数据库,每个数据库都具有相应的表,只是表的数据不同

4. 主从分离

单机 MySQL 支撑的请求访问是有限的,如果遇到双十一这种情况查询请求量会非常大。这时可以做主从分离,实时性要求不高的读请求都去读从库,写请求或者实时性要求高的请求才走主库,提高了系统的吞吐

5. 使用缓存

使用缓存可以提升接口的性能,在高并发场景下支持更多的用户同时访问。常用的缓存包括:Redis 缓存,内存缓存,浏览器缓存等等

6. CDN

CDN 就是内容分发网络,它表示将静态资源分发到位于多个地理位置机房的服务器,可以做到数据就近访问,加速了静态资源如图片、视频等的访问速度,让系统更好处理正常别的动态请求

7. 异步处理

在类似双十一的活动可能会遇到流量暴涨,系统处理不过来,造成请求阻塞,系统崩溃。这时可以引用消息队列,将请求写入消息队列,系统再以合适的速率从消息队列获取请求处理,避免造成阻塞,提高系统性能

8. 熔断降级

当前互联网系统一般都是分布式部署的,如果出现某个基础服务不可用,最终将导致整个系统不可用。比如分布式调用链路 A -> B -> C,如果 C 出现问题,将导致 B 也会延迟,从而 A 也会延迟。A 会不断失败重新请求,消耗占用系统资源,最终会造成其他的请求同样不可用,导致系统崩溃。熔断机制可以防止应用不断尝试可能超时或失败的服务,保证自身快速响应,提高系统吞吐量

降级机制是指在流量过大,系统资源有限的情况下,为了保证关键服务正常运行,降低部分非关键服务的优先级或质量的一种策略。比如电商网站,流量大的时候就把评论功能停掉,把资源让出来给关键服务

9. 限流

大流量过来时,如果系统资源有限,实在没办法处理全部处理,可以采用限流机制,控制接口发送或接收请求的速率,当超过阈值时,限制新的请求对系统的访问,从而保证系统的稳定性

标签:分库,请求,系统,并发,缓存,分表,设计
From: https://www.cnblogs.com/Yee-Q/p/17960267

相关文章

  • Python中的动力系统相图绘制指南
    动力系统相图是描述动力学系统状态随时间变化的图形表示。它可以帮助我们了解系统的稳定性、周期性、吸引子等特性。Python提供了许多强大的工具来处理数值计算和数据可视化,其中最常用的库之一是Matplotlib。下面我们将详细介绍如何使用Matplotlib在Python中创建动力系统相图。步骤......
  • 华为桌面系统迎来重要突破!PC版鸿蒙今年登场
    1月15日消息,据华为官方消息,HarmonyOSNEXT开发者预览版内测招募正式开始,首批招募机型包括华为Mate60、Mate60Pro、MateX5。据了解,HarmonyOSNEXT也就是所谓的“纯血鸿蒙”,系统底座全线自研,仅支持鸿蒙内核和鸿蒙系统的应用,彻底摒弃与安卓的兼容性。博主数码闲聊站表示,今年华......
  • 保障系统稳定,中电金信混沌工程再结硕果
    ​编辑......
  • Linux系统安装
    Linux系统安装本篇介绍了虚拟机和云环境安装Kali,CentOS遇到的一些问题和一些常用基线配置(个人向)0x00KaliLinux系统调试1.开启root用户登录sudo-svim/etc/pam.d/gdm-autologin#第三行!=root那行注释掉保存退出vim/etc/pam.d/gdm-password#第三行!=root那行注释掉......
  • 陪诊系统|陪诊小程序成品|陪诊陪护系统定制功能
    陪诊小程序是一种便捷的工具,为用户提供一系列服务和功能,方便患者在就医过程中获得更好的体验和效果。接下来我们将介绍几个主要的陪诊小程序功能。 陪诊小程序开发功能:一、预约挂号功能。陪诊小程序能够连接用户和医疗机构的系统,用户可以通过它来直接预约挂号,避免了排队等待的烦恼......
  • 业务单系统架构设计心得(一)
    作为一个业务开发工程师,工作中最多的是需求开发,把需求从ppt到落地实现。随着工作的深入,工作面也变得更广和更深,需要面对更多的系统,更加复杂的场景。这时完成功能实现是基本要求了,想要开发能力上一个台阶,需要做好架构设计。常见的架构有:洋葱架构、六边形架构、整洁架构、SOA架构、C......
  • 对计算机系统的理解
    ​ 该图是我对系统的大致了解,从下往上,随着抽象程度的增加,由硬件走向软件。其中硬件系统包括输入输出设备,存储器,控制器和运算器。运算器和控制器统称为中央处理器,当然随着GPU计算和人工智能的兴起,GPU也越来越多的参与到运算器中。存储器包括硬盘和内存,输入输出设备便是我们常用的......
  • 软件测试基础知识 - 集成测试和系统测试的区别,以及它们的应用场景
    分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程区别1、测试计划和测试用例编制的先后顺序:从V模型来讲,在需求阶段就要制定系统测试计划和测试用例,概要设计的时候做集成测试计划和测试用例,有些公司的具体实践不一样,但......
  • 校园跑腿系统需求分析
    《校园跑腿》微信小程序需求分析说明书第一部分·项目背景及需求一、编写目的该说明书为Hi喵微信小程序的需求分析说明书,该说明书对本微信小程序进行了需求分析说明,由开发背景、开发工具、用例图、类图、顺序图、顶层流图图、需求分析,墨刀设计和成果展示等部分组成,明确了该微信......
  • vmware ESXI6.5安装统信uos release 20 (fuyu)系统
    vmwareESXI6.5安装统信uosrelease20(fuyu)系统centos7系统到2024.6.30号左右停止维护,开始适配国产操作系统,本次安装统信uos操作系统,官方已经免费授权了一、下载统信uos操作系统免费授权信息:https://www.chinauos.com/resource/download-server-ufu免费下载镜像:https://......