当前位置: 首页 > news >正文

【高并发架构设计】-1:高并发通用设计思想

在这里插入图片描述

本文目录

  • 1. 天下长河
    • Scale-out
    • 缓存
    • 异步

1. 天下长河

最近看电视剧《天下长河》的时候,讲的就是自康熙十五年一场巨大的水患之后,年轻的康熙帝设科开举招纳治河贤才,二十四岁的落第举子陈潢脱颖而出,长于治河。 所以说,古代的时候,长江和黄河经常泛洪,那么他们是怎么治理的,主要有几种方式,比如拓宽河道,让河流降低流量;又或者是像都江堰一样,建造多个分流支流,分担压力;或者是像三门峡创建多个水库,然后再把水库的水排出去。

高并发也是指流量特别大,比如双十一这种,一般需要通过架构设计来抵抗高并发流量冲击,确保系统稳定性。

那么归根结底,我们也可以把高并发的方案概括为三种方案:

1、分布式:分而治之,直接分布式部署多个集群,把流量分开,每个服务器都来承担一部分的并发和流量问题。这个也可以看作是Scale-out,横向拓展思想。

2、缓存:通过建造缓存来提高系统的性能。

3、异步:某些场景下,比如微服务中的调用链路太长了,那么未处理完之前,可以让请求先返回,数据准备好了之后再通知请求方,可以在单位时间内处理更多请求。

Scale-out

Scale-out是指横向拓展,比如说分布式这种,对应的scale-up,就是指直接对单机的硬件性能进行提升,当系统超过了单机的极限的时候,一般是先考虑scale-up,然后再考虑scale-out。

本质上就是横向和纵向的这个意思,横向需要考虑很多的问题,比如说某个节点出现故障,如何保障整体集群的可用性;多个节点的状态信息如何同步;如何进行动态的增加删除节点而不影响系统正常运行。

缓存

普通的磁盘寻道时间通常是10ms,CPU执行指令和内存寻址的时间都是在ns级别,从千兆的网卡上读取数据的时间是在us微秒级别(即 1μs = 1000ns)。所以可以知道,磁盘是最慢的,会相差几个数量级。

缓存思想已经很久了,比如说CPU多级缓存、还有内存页的缓存,包括redis、kafka也都有这个内部缓存机制。

异步

异步很好理解,就是以方法调用为例,同步调用代表调用方要阻塞等待被调用方法中的逻辑执行完成。这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。

异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。

最常见的就是用消息队列,把消息丢进消息队列,然后直接返回给用户消息,那么就可以释放资源来处理更多请求。当请求全部处理完成之后,再告诉用户订票是否成功或者失败。

http://www.xdnf.cn/news/402643.html

相关文章:

  • LayerNorm vs RMSNorm 技术对比
  • [学习]RTKLib详解:ionex.c、options.c与preceph.c
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.1 风险数据清洗与特征工程
  • Python语言在地球科学交叉领域中的应用——从数据可视化到常见数据分析方法的使用【实例操作】
  • Spring MVC 根据请求头 (如 Accept) 怎么返回 JSON 或 XML 数据?
  • 破解 Qt QProcess 在 Release 模式下的“卡死”之谜
  • 多模态大语言模型arxiv论文略读(七十一)
  • 基于Spring AI实现多轮对话系统架构设计
  • PHP 代理服务器:如何在 PHP 中设置代理
  • 热门CPS联盟小程序聚合平台与CPA推广系统开发搭建:助力流量变现与用户增长
  • Android Studio的jks文件
  • DDR的PCB设计(T点)
  • 力扣210(拓扑排序)
  • 1. 使用 IntelliJ IDEA 创建 React 项目:创建 React 项目界面详解;配置 Yarn 为包管理器
  • VLM-RL:用于安全自动驾驶的统一视觉语言模型和强化学习框架——论文阅读
  • vue3搭建实战项目笔记四
  • 前端面试高频50个问题,解答
  • 【2025最新】Vm虚拟机中直接使用Ubuntu 免安装过程直接使用教程与下载
  • 26 广西大学机械考研材料力学真题 材料力学考研复习笔记题库 机械考研材料力学择校推荐哪个院校?
  • MATLAB复制Excel数据到指定区域
  • lenis滑动插件的笔记
  • 【sqlmap需要掌握的参数】
  • Oracle 19c 静默安装
  • LeetCode[101]对称二叉树
  • 05_jdk8新特性
  • SpringAI框架中的RAG模块详解及应用示例
  • WebRTC:去中心化网络P2P框架解析
  • continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
  • 白帽SEO与黑帽SEO差异
  • 24.(vue3.x+vite)引入组件并动态挂载(mount)