Marvel-Site Marvel-Site
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)

Marvel

吾必当乘此羽葆盖车
首页
  • Java

    • Java基础
    • Java进阶
    • Java容器
    • Java并发编程
    • Java虚拟机
  • 计算机基础

    • 数据结构与算法
    • 计算机网络
    • 操作系统
    • Linux
  • 框架|中间件

    • Spring
    • MySQL
    • Redis
    • MQ
    • Zookeeper
    • Git
  • 架构

    • 分布式
    • 高并发
    • 高可用
    • 架构
  • 框架

    • React
    • 其他
  • 实用工具
  • 安装配置

    • Linux
    • Windows
    • Mac
  • 开发工具

    • IDEA
    • VsCode
  • 关于
  • 收藏
  • 草稿
  • 索引

    • 分类
    • 标签
    • 归档
GitHub (opens new window)
  • Java

  • 计算机基础

  • 框架|中间件

  • 架构

    • 分布式

    • 高并发

      • 如何设计一个高并发架构
        • 高并发的根源
        • 系统拆分
        • 缓存
        • MQ
        • 分库分表
        • 读写分离
        • ElasticSearch
      • 讲座预约高并发方案
      • 分库分表
    • 高可用

    • 架构

  • 后端
  • 架构
  • 高并发
Marvel
2022-07-21
目录

如何设计一个高并发架构

# 如何设计一个高并发架构

原文 (opens new window)

# 高并发的根源

数据库请求达到每秒两三千的时候基本就要完蛋了,如果数据库瞬间承载5000以上,甚至上万的并发,那一定会宕机,因为 MySQL 根本就抵挡不了高并发。

但现在互联网用的人越来越多,每秒并发量几千、几万、几十万的场景都很正常。那如此高的并发量再加上复杂的业务该如何解决呢?

可以从一下几点解决高并发的问题:

  • 系统拆分
  • 缓存
  • MQ
  • 分库分表
  • 读写分离
  • ElasticSearch

high-concurrency-system-design

# 系统拆分

将一个系统拆分为多个子系统,用 dubbo 实现远程调用。同时,每个系统连一个数据库,这样数据库的数量从1个变成了多个,就可以抗住高并发了。

# 缓存

Redis 解决的是高并发读的问题,大部分的高并发场景,都是读多写少,所以可以再数据库和缓存里都写一份数据,读的大量请求就可以访问缓存,毕竟 Redis 轻轻松松单机几万的并发量。

# MQ

MQ 解决的是高并发写的问题,因为 Redis 很难担任写的任务,因为数据会过期、数据格式简单、不支持 MySQL 那种复杂的事务,所以写还是要靠 MySQL 自己来完成。但为了不能让大量请求同时访问到 MySQL,所以用 MQ 来实现排队,MySQL 就可以按它自己的能力慢慢写。MQ 单机也能扛得住几万的并发量。

# 分库分表

数据库最后还是难免还是会遇到高并发的问题,那么就可以将一个数据库拆分为多个数据库,多个库就能分担压力;然后将一个表拆分为多个表,每个表的数据量报错少一点,提高 sql 语句的性能。

# 读写分离

读写分离主要也是解决读多写少的情况,没必要将所有的请求都集中当一个数据库上,可以让数据库搞主从架构,主库写入,从库读取,实现读取分离。读流量太多的时候,还可以继续加更多的从库。

# ElasticSearch

ES 是分布式的,可以随便扩容,天然支持高并发。一些简单的查询、统计类的和全文搜索类的操作可以通过 ES 来承载。

编辑 (opens new window)
上次更新: 2023/08/20, 21:21:52
负载均衡
讲座预约高并发方案

← 负载均衡 讲座预约高并发方案→

最近更新
01
位运算
05-21
02
二叉树
05-12
03
Spring三级缓存解决循环依赖
03-25
更多文章>
Theme by Vdoing | Copyright © 2022-2024 Marvel
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式