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

2024-01-21

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

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

1. 搭建集群

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

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

2. 微服务拆分

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

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

3. 分库分表

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

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

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

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

5. 使用缓存

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

6. CDN

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

7. 异步处理

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

8. 熔断降级

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

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

9. 限流

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何设计一个高并发系统? 的相关文章

  • 系统架构设计师-数据库系统(1)

    目录 一 数据库模式 1 集中式数据库 2 分布式数据库 二 数据库设计过程 1 E R模型 2 概念结构设计 3 逻辑结构设计 三 关系代数 1 并交差 2 投影和选择 3 笛卡尔积 4 自然连接 一 数据库模式 1 集中式数据库 三级模
  • Game101现代计算机图形学入门学习笔记(七)

    光线追踪 一 光线追踪 1 为什么要使用光线追踪 二 基础光线追踪算法 1 光线 2 光线投射 1 着色过程 3 递归光线追踪 Whitted Style 1 基本过程 2 光线 表面相交 1 光线方程 3 轴对称包围盒 AABB 1 Un
  • OCaml学习笔记(二)——Introduction to Objective Camel

    Chapter2 Simple Expressions 2 1 注释语句 OCaml语言中注释部分写在 和 之间 可以相互嵌套 注释部分当作空格处理 2 2 基本表达式 OCaml中每个有效的表达式都有一个类型 某个类型的表达式不能用作其他
  • 初级PHP工程师对于进阶的思考

    突然想写篇博客记录下刚毕业这段时间的经历 主要是对于人生的下一阶段的思考和诸多事物触起的思考 一 人生的下一阶段 人生的意义从来不是为自己奋斗 生活的意义也从来不是奋斗 今年毕业 距离博文发表的现在约莫有2个月 毕业前的我是一个极度执着追求
  • 大神之路-起始篇

    欢迎关注 WeiyiGeek 公众号 点击 下方卡片 即可关注我哟 设为 星标 每天带你 基础入门 到 全栈实践 再到 放弃学习 涉及 网络安全运维 应用开发 物联网IOT 学习路径 个人感悟 等知识 花开堪折直须折 莫待无花空折枝 本章目
  • Linux 搭建 JumpServer 堡垒机

    跳板机概述 跳板机就是一台服务器 开发或运维人员在维护过程中首先要统一登录到这台服务器 然后再登录到目标设备进行维护和操作 跳板机缺点 没有实现对运维人员操作行为的控制和审计 使用跳板机的过程中还是会出现误操作 违规操作导致的事故 一旦出现
  • 【Blender2.82a】学习记录

    Blender2 82a 学习记录 1 基本操作 1 1 界面操作 1 2 物体操作 1 3 建模基础 2021 12 13 最近的项目又要用到blender了 已经一年半没用过了 现在用的版本为2 93 6 尽管这篇记录的版本比较老了 但
  • Linux的缓存内存(cache memory)

    PS 为什么Linux系统没运行多少程序 显示的可用内存这么少 其实Linux与Win的内存管理不同 会尽量缓存内存以提高读写性能 通常叫做Cache Memory 为什么Linux系统没运行多少程序 显示的可用内存这么少 其实Linux与
  • Python学习笔记--exe文件打包与UI界面设计

    exe文件打包与UI界面设计 前言 一 基于tkinter实现的UI设计 1 1 库的选择及思路 1 2 定位方法的选用 1 3 Frame控件 1 4 变量设置 1 5 批量设置 1 6 Text文本框 1 7 总体界面设计 1 8 功能
  • 操作系统(四):磁盘调度算法,先来先服务,最短寻道时间优先,电梯算法

    文章目录 一 磁盘结构 二 先来先服务 三 最短寻道时间优先 四 电梯算法 SCAN 一 磁盘结构 盘面 Platter 一个磁盘有多个盘面 磁道 Track 盘面上的圆形带状区域 一个盘面可以有多个磁道 扇区 Track Sector 磁
  • 学习笔记-Spark环境搭建与使用

    一 20 04 Ubuntu安装 清华源ISO源 https mirrors tuna tsinghua edu cn ubuntu releases 20 04 下载链接 https mirrors tuna tsinghua edu c
  • 编译器报:lambda表达式中使用的变量应为final或有效final 解决方案

    目录 问题描述 原因分析 解决方案 1 声明为final 2 使用有效final 4 使用数组或集合 错误问题的最终解决示例 总结 问题描述 今天在写代码的过程中想要在stream map 方法内部对外部变量进行赋值 结果发现编译器报错 提
  • python的文件操作

    一 文件的基本操作 1 读文件read f open filename r encoding utf 8 data f read 读文件 f close 关闭文件 1 绝对路径的易错点 文件路径中 前要加转义字符 或者 使用r使转义字符失效
  • 设计模式(5)-适配器模式(Adapter Pattern)

    适配器模式 Adapter Pattern 顾名思义 就像变压器 转接头差不多 就像美国的生活电压是110V 中国是220V 就需要一个变压器将220V转换成110V 或者一个Type C接口想插如USB接口的东西 你就需要一个转换器 而这
  • JavaWeb学习笔记-part1

    互联网通信 什么是互联网通信 两台计算机通过网络实现文件共享行为 就是互联网通信 互联网通信中的角色划分 客户端 用于发送请求的计算机 服务端 用于接受请求 并满足请求的计算机 互联网通信模型 C S通信模型 client software
  • 【学习笔记】开源中文对话预训练模型调研总结

    开源中文对话预训练模型调研 文章目录 开源中文对话预训练模型调研 1 CDial GPT 主要工作 LCCC数据集 数据清洗策略 基于规则的清洗 基于分类器的清洗 模型 输入表征 训练 2 GPT2 chitchat 3 EVA1 0 WD
  • JavaEE学习记录day11 IO流02 字符流、转换流、Properties集合

    1 字符流 1 1为什么会出现字符流 理解 字符流的介绍 由于字节流操作中文不是特别的方便 所以Java就提供字符流 字符流 字节流 编码表 中文的字节存储方式 用字节流复制文本文件时 文本文件也会有中文 但是没有问题 原因是最终底层操作会
  • CST2020 安装包和安装步骤

    安装包和破解码的百度云链接 链接 https pan baidu com s 1RNSWxVxb DIu8dg8gkCzAw 提取码 dve7 如果失效可评论留言 谢谢 1 关闭防火墙和杀毒软件 2 解压后 以管理员模式运行setup文件
  • Java与C#一些区别(学习笔记)

    一 基础语法 1 Console表示控制台 2 输入 Console ReadLine 格式 string name name Console ReadLine 3 输出 Console WriteLine 这个自带换行 Console W
  • C 库函数 - mktime()

    描述 C 库函数 time t mktime struct tm timeptr 把 timeptr 所指向的结构转换为自 1970 年 1 月 1 日以来持续时间的秒数 发生错误时返回 1 声明 下面是 mktime 函数的声明 time

随机推荐

  • 回望计算机视觉会议ICCV的31年

    作者 原野寻踪 编辑 汽车人 原文链接 https zhuanlan zhihu com p 670393313 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心 全栈算法 技术交流群 本文只做
  • pip问题们

    pip问题们 下载指定版本 已经安装的库列表保存到文本文件中 根据依赖文件批量安装库 离线安装库 whl 文件 pip install git https xxxx安装失败解决方法 下载指定版本 安装特定版本的package 通过使用 gt
  • 上汽飞凡,突然换帅了。。。

    作者 有据无车 编辑 智能车参考 点击下方 卡片 关注 自动驾驶之心 公众号 ADAS巨卷干货 即可获取 点击进入 自动驾驶之心技术交流群 本文只做学术分享 如有侵权 联系删文 飞凡汽车 突然换帅了 最近 上汽集团官方宣布 乘用车总经理 飞
  • FL Studio2024国内中文版多少钱?有哪些新功能呢

    购买您想要的最新的水果软件FL2024版本 然后所有未来所有该版本更新都是免费的 再也不用付钱了 在音乐软件行业 更新费用通常在 960 1600 元之间 而 FL Studio 将始终免费为您提供最新版本 因为我们相信 只要我们开发 FL
  • 视频剪辑软件Camtasia2024最新版本快捷键大全

    Camtasia Studio是一款专门录制屏幕动作的工具 它能在任何颜色模式下轻松地记录 屏幕动作 包括影像 音效 鼠标移动轨迹 解说声音等等 今天来给大家介绍一下Camtasia快捷键的相关内容 Camtasia也是一个十分好用的电脑屏
  • 【EI复现】基于深度强化学习的微能源网能量管理与优化策略研究(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 2 1 有 无策略奖励 2 2 训练结果1
  • 题解 | #连续两次作答试卷的最大时间窗#

    程序员到大神成长书单 最无语的公司 写代码让领导不开心了咋办 快手秋招急招 暑期实习也可以投 找实习需要实习经历 操作系统岗 简历能走吗 面了南网数字集团 面试官问的问题有两个挺尖锐的 这种是不是说明不太想要我 俗话说打蛇打七寸 我感觉面试
  • 查找薪水记录超15条的员工号emp_no以及其对应的记录次数

    理想 大模型面经 23届试用期没通过 还能找到工作吗 有没有啥厂招往届生啊 腾讯音乐前端暑期实习一面 已oc 华为od 机试 面试面经 华为OD技术岗面经汇总 软开 算法 测试岗 想看一下大家看法 一个月过去了 25终于找到JAVA实习 华
  • 短信系统搭建主要因素|网页短信平台开发源码

    短信系统搭建主要因素 网页短信平台开发源码 随着移动互联网的快速发展 短信系统已成为企业和个人进行信息传递的重要工具 建立一个高效可靠的短信系统对于企业来说非常重要 下面我们将介绍一些影响短信系统搭建的主要因素 1 平台选择 在搭建短信系统
  • 2024最新MathType7.4.10中文版下载安装激活教程

    MathType 是一款专业的数学公式编辑工具 提供交互式编辑器 让你在编辑数学试卷 书籍 报刊 论文 幻灯演示等文档轻松输入各种复杂的数学公式和符号 1 本次讲解mathtype 7版本的安装步骤 MathType2024 Win 安装包
  • 『力扣刷题本』:逆波兰表达式求值

    大家好久不昂 最近 1 个多月罗根一直在备考期末 文章发的很少 现在已经放寒假啦 学习自然也不能拉下 毕竟 4 月份就要去参加蓝桥杯了 先给自己定个小目标 日更 2 篇 咳咳 下面马上开始讲题 一 题目 给你一个字符串数组 tokens 表
  • GitLab CI 实现项目A更新代码自动触发项目B更新错误码文档

    一 CI CD简介 CI CD 是持续集成 Continuous Integration 和持续交付 持续部署 Continuous Delivery Continuous Deployment 的缩写 是一种软件开发和交付的最佳实践 这两
  • 【go语言】AST抽象语法树详解&实践之扫描代码生成错误码文档

    背景 为了能识别出代码中抛出错误码的地址和具体的错误码值 再根据错误码文件获取到错误码的具体值和注释 方便后续的排错 这里使用AST进行语法分析获取到代码中的目标对象 一 编译过程 在开始解析代码之前先补充了解一下编译过程 编译过程是将高级
  • MongoDB - 整合 SpringBoot 操作全流程

    目录 一 MongoDB 整合 SpringBoot 1 1 引入依赖 1 2 配置文件 1 3 集合操作 1 4 相关注解 1 5 文档操作 1 5 1 查询 1 5 2 更新 1 5 3 删除 一 MongoDB 整合 SpringBo
  • MathType2024下载安装系统要求及新版本功能介绍

    MathType 7应用介绍 MathType可适用于800 软件应用程序和网站 支持在任何文字处理软件 演示程序 页面程序 HTML编辑工具及其它类型的软件 用来建立公式 应用范围 期刊杂志 科研机构 教育教学 工程学 统计学 论文 报告
  • Python 实现的路径解析,url解析处理类

    usr bin python3 coding utf 8 author JHC000abc gmail com file util class py time 2024 1 16 17 06 desc import os class Pat
  • 汽车改装三维扫描抄数3d数据汽车整车上门数据测绘房车改装测量

    在这个汽车改装行业日益兴起的社会 三维扫描技术正逐渐成为汽车改装领域中的一股新势力 它以其独特的优势 为汽车改装带来了前所未有的便利和精准度 CASAIM中科广电三维扫描技术能够快速 准确地获取汽车各个部位的三维数据 为改装工程师提供详细
  • 进口零部件三维模型扫描替换抄数建模逆向造型设计服务CASAIM

    三维扫描技术在现代制造业中发挥着越来越重要的作用 尤其在零部件建模领域 它能够快速 准确地获取物体的三维数据 为后续的逆向工程和快速原型制造提供了有力支持 CASAIM三维扫描仪设备通过对零部件进行三维扫描 我们可以获得其精确的三维几何数据
  • 网页订货系统的诸多优势|企业APP订单管理软件

    1 订单信息 发货信息 账目信息一目了然 生产企业 总代理 和分销商之间可以清楚直观的了解到商品和货款的实时状态 以便高效的订货 发货 进行货款催收以及商品的物流跟踪 2 建立稳固的客户关系 避免客户被竞争对手挖墙脚 有了网上订货系统 企业
  • 如何设计一个高并发系统?

    所谓高并发系统 是指能同时处理大量并发请求 并及时响应 从而保证系统的高性能和高可用 那么我们在设计一个高并发系统时 应该考虑哪些方面呢 1 搭建集群 如果你只部署一个应用 只部署一台服务器 那抗住的流量请求是非常有限的 并且 单体的应用