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

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

时间:2024-04-11 14:35:05浏览次数:26  
标签:分库 数据库 系统 并发 缓存 分表 设计

一、为什么要做高并发

  • 首先你得知道你当前的项目为什么要做高并发,之前的单体架构为什么不满足你的需求?
  • 当前的系统架构已经远远不能满足你的业务需求?
  • 当前的系统的并发数已经越来越多,加机器代理已经无法解决此问题?
  • 当前系统用户数越来越多,数据量越来越大,数据库极可能在崩的边缘?
  • 当前公司的业务数上来了,需要提升性能。

二、如果做到高并发呢?

分析: 以数据库mysql而言其单库单表的情况下并发量最多可以达到2000-3000,在往上就可能数据库就扛不住更高的并发量,这是你肯定得想分库分表造起来,不够的话再加MQ队列来抗并发,这样可以满足你的业务需求的并发量。所以说这个只是数据库层面上的一些解决方案,但是你的系统其他层次也是需要提升的,接下来给大家介绍一下基本高并发系统需要具备哪些东东?

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

三、模块分析

  1. 系统拆分
    将系统按照业务模块化的形式拆分成多个子系统,用dubbo来搞,将所有的服务注册到注册到中心上去,这样的子系统有单独的库,不行分别加库加表(涉及数据的导入可用:1.停机机制 2.双写机制(推荐)),这样就可以抗得住你的高并发了
  2. 缓存
    当前系统都是肯定要将缓存搞上去的,大部分开发的人员都知道现在的数据读多写少,像redis随便能抗得住几万的并发,可以根据你自己的业务场景将数据放入缓存中,提高你的系统并发量,问题是你得根据场景用缓存来抗并发
  3. MQ
    为你的数据库减轻压力,提高数据库的写能力,我们可以将大量的写请求放入到我们的队列中,然后让下游的数据库慢慢的写入,这样异步写入到数据库,毕竟MQ是没有问题的,比如单机版的RabbitMQ都能抗得住好几万的并发量。这样数据库的并发就很好的解决了
  4. 分库分表
    如果你的数据库的并发还没有上来,那你就分库分表呗,保证一下每张表的数据量不超过500万,提高mysql的读写能力,这样不就解决了问题了吗
  5. 读写分离
    你可以做一个主从复制模式,或者是多主多从,这样主进行写数据,从进行读数据,做到读写分离,当你的读流量过大时你可以随意的加个从数据库上去抗并发
  6. ElasticSearch
    es,天然的分布式,可以随便扩容,可以随意的根据你的并发量来扩容,对于一些查询,全文搜索可以用它来替你分担。

四、总结

做完了上述东西,再业务中需要考虑:哪些需要分库分表,哪些不需要分库分表,单库单表跟分库分表如何 join,哪些数据要放到缓存里去,放哪些数据才可以扛住高并发的请求,你需要完成对一个复杂业务系统的分析之后,然后逐步逐步的加入高并发的系统架构的改造,这个过程是无比复杂的,加油吧,一起成长!!!

标签:分库,数据库,系统,并发,缓存,分表,设计
From: https://www.cnblogs.com/qxlzzj/p/18129103

相关文章

  • Golang 中 在gmp下,mutex 是如何并发的
    在Go语言的并发模型中,GMP(Goroutine、Machine、Processor)模型是核心概念,其中Mutex(互斥锁)扮演着关键的角色,用于同步并发访问共享资源,防止数据竞争和不一致性问题。以下是Mutex在GMP模型下实现并发的详细解释:Goroutines(协程)轻量级的线程:Goroutines是Go语言中的轻量级线程,它......
  • Python+Django+Html网页版人脸识别考勤打卡系统
    程序示例精选Python+Django+Html人脸识别考勤打卡系统如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助!前言这篇博客针对《Python+Django+Html网页版人脸识别考勤打卡系统》编写代码,代码整洁,规则,易读。学习与应用推荐首选。运行结果文章......
  • python计算机毕设【附源码】养老院管理系统(django+mysql+论文)
    本系统(程序+源码)带文档lw万字以上  文末可获取本课题的源码和程序系统程序文件列表系统的选题背景和意义选题背景:随着社会的快速发展,人口老龄化问题日益凸显。养老院作为为老年人提供居住、医疗、康复、娱乐等综合服务的场所,其管理水平和服务质量对老年人的生活质量有着......
  • C语言程序设计(第四版)第五章主要内容
    本章主要讲述<选择控制结构>一、关系运算符与表达式1.既不能在<=、>=、==、!=的符号中间插入空格,也不能将!=、<=、>=的两个符号写反,更不能以相应的数学运算符相混淆。2.不要将==误写为=。3.用非0值表示"真",用0值表示"假"。二、用于单分支控制的条件语句if(表达式p) 语......
  • Linux:修改系统时间
    学习自:Linux修改系统时间的两种方式-寻梦99-博客园 1、首先判断是要修改时间还是时区有的Linux系统时间错误,可能是因为时区不正确导致的:例如常见的时区是CST,但是当前系统时区为EDT,这时候只要把时区修改过来就好了。输入指令date,查看当前系统时间date WedAug1802......
  • 腾讯云2核4G5M轻量服务器测评报告:在线并发人数实测及优惠购买地址分享
    在当今这个数据驱动的时代,云服务器的选择对于企业和个人而言都至关重要。其中,腾讯云2核4G5M轻量应用服务器因其高性价比而备受瞩目。那么,这款服务器到底能支持多少人同时在线呢?它的并发性能又如何呢?首先,我们要明白并发数是指同一时刻内,服务器能够处理的用户请求数量。对于腾讯......
  • 2024年腾讯云8核16G服务器性能评测:高并发场景下的表现如何?
    在当今的云计算时代,服务器的配置与性能直接关系到应用程序的稳定运行和用户体验。腾讯云作为国内领先的云服务提供商,其8核16G18M配置的云服务器备受关注。那么,这款服务器究竟能支撑多少人的并发量呢?首先,我们要明确一个概念:并发量不仅取决于服务器的硬件配置,还与应用程序的类型......
  • java+saas模式医院云HIS系统源码Java+Spring+MySQL + MyCat融合BS版电子病历系统,支持
    java+saas模式医院云HIS系统源码Java+Spring+MySQL+MyCat融合BS版电子病历系统,支持电子病历四级云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务,提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医......
  • Battleship程序设计语言与技术
    程序设计语言与技术课业10:战舰截止日期以画布为准)对于HW10,你可以作为一个小组(不超过2名学生)工作。请提及您的每个代码文件顶部的合作者姓名。这个家庭课业比以前的课业更详细,所以请尽早开始它涉及以下主题:●继承和覆盖●访问修饰符●抽象课程(我们将在下一堂课中了解这些内容)●......
  • 顺通鞋业ERP管理系统
    鞋业管理软件/鞋业管理系统/鞋业管理云平台顺通鞋业ERP进销存系统拥有订货管理、销售管理、财务管理、产品管理、库存管理、客户管理、员工管理、查询统计等功能。顺通鞋业ERP进销存系统在管理信息系统业务领域,广泛涉足了公司金融、财资管理、财务管理、项目管理、销售管理、客户......