高并发分布式架构的演进之路

目录

单体架构

应用数据分离架构

应用数据集群架构

读写分离 / 主从分离架构

引⼊缓存⸺冷热分离架构

垂直分库

业务拆分-微服务

单体架构

一个系统初期,我们需要利⽤我们精⼲的技术团队,快速将业务系统投⼊市场进⾏检验,并且可以迅速响 应变化要求。但好在前期⽤⼾访问量很少,没有对我们的性能、安全等提出很⾼的要求,⽽且系统架构简单,⽆需专业的运维团队,所以选择单机架构是合适的。

单体架构就是我们的应用服务和数据库服务都是在一个主机上的.

用户在浏览器地址栏中输入域名之后,通过DNS解析为ip地址,随后访问该IP地址上的应用服务.

 单体架构也是我们目前最常见的一种架构,因为系统架构简单,无需过多的维护人员.

目前绝大多数公司的产品都是这总单体架构.因为现在计算机的硬件发展的速度是非常快的,所以哪怕只有一台主机,这一台主机的性能都是非常好的,都能支持非常大的高并发和非常大的存储量.

应用数据分离架构

随着系统的上线,我们不出意外地获得了成功。市场上出现了⼀批忠实于我们的⽤⼾,使得系统 的访问量逐步上升,逐渐逼近了硬件资源的极限,同时团队也在此期间积累了对业务流程的⼀批经 验。⾯对当前的性能压⼒,我们需要未⾬绸缪去进⾏系统重构、架构挑战,以提升系统的承载能⼒。 但由于预算仍然很紧张,我们选择了将应⽤和数据分离的做法,可以最⼩代价的提升系统的承载能⼒.

如果业务进一步增长,用户量和数据量都水涨船高的时候,总有一天,一台主机就会难以应付,这个时候我们就需要引入更高的硬件资源.毕竟一台主机的硬件资源是有限的.

可以看到这个架构和之前的架构的区别就是将数据库服务器部署在了其他的主机上,应用服务器就会通过网络去访问数据库服务器. 

应用数据集群架构

应用服务器可能会吃很多的CPU和内存,如果把CPU和内存都吃完了,那么应用服务器就会顶不住了,那么我们需要引入更多的应用服务器来解决这个问题.

此时如果当访问量进一步增高的时候,这种一个应用服务器和一个存储服务器的架构已经满足不了需求的时候,就会引入更多的应用服务器节点.

这里的web服务器可以是多个,不止两个. 

可以发现当引入了更多应用服务器节点之后,我们的架构中出现了负载均衡器.这个负载均衡器的作用就像公司里面的领导一样,要负责管理,要负责把任务平均的分配给每个员工.

假设有1W的用户请求,如果只有一个应用服务器的时候,那么这1W个请求肯定都会落在哪一个应用服务器上的,但是如果有多个应用服务器之后,再加上负载均衡器的加入,负载均衡器会将这1W个请求尽可能平均的分配给每个应用服务器.

读写分离 / 主从分离架构

如上面所讨论,增加了应用服务器之后,确实可能承载更多的请求了,但是我们的存储服务器要承担的请求量还是那么多?

这个时候我们是不是应该考虑增加存储服务器的主机数量了.

 将存储服务器的职责进一步细分,存储服务器的主机之间变成读写分离的结构.

我们可以将写数据请求全部交给主库处理,但读请求分散到各个从库中。由于⼤部分的系统中,读写请求都是不成⽐例的,例如 100 次读 1 次写,所以只要将读请求由各个从库分担之后,数据库的压⼒就没有那么⼤了。

只用主数据库进行写,其他数据从数据库进行读,然后在主数据库和从数据库之间进行数据同步.主服务器一般只有一个,但是从服务器可以有多个.

引⼊缓存⸺冷热分离架构

到了这一步之后,我们发现业务中⼀些数据的读取频率远⼤于其他数据的读取频率。我们把这部分数据称为热点数据,与之相对应的是冷数据..对于我们需要频繁访问的热数据,数据库的响应还是比较慢的.

我们可以将冷热数据进行区分,将热数据放入缓存中,因为缓存的访问速度要比访问数据库要快很多的.

 我们这里的缓存服务器可以使用Redis,让Redis帮助数据库进行负重前行.

我们可以在缓存服务器这里存放一部分热点数据,因为这些热点数据都是会被频繁访问的数据,数据库服务器这里存储的还是全量的数据.

当我们需要进行读取数据的时候,会先在缓存服务器中读取,如果缓存服务器中有数据,则不在去数据库服务器中查询,要是缓存服务器中没有数据,才会去查询数据库服务器.这样的话,数据库服务器的压力就会进一步减小.

垂直分库

随着业务的数据量增⼤,⼤量的数据存储在同⼀个库中已经显得有些⼒不从⼼了,所以可以按照 业务,将数据分别存储。

这时就需要针对数据库进一步进行拆分,也就是分库分表

本来一个数据库服务器上就会有多个数据库,现在引入多个数据库服务器,每一个数据库服务器存储一个或者一部分数据.如果某个表特别大,可以针对这个表进行拆分.具体如果拆分,还需要根据具体的业务场景进行展开.

业务拆分-微服务

随着⼈员增加,业务发展,我们将业务分给不同的开发团队去维护,每个团队独⽴实现⾃⼰的微 服务,然后互相之间对数据的直接访问进⾏隔离,可以利⽤ Gateway、消息总线等技术,实现相互之 间的调⽤关联。甚⾄可以把⼀些类似⽤⼾管理、安全管理、数据采集等业务提成公共服务。

 按照功能,拆分为多组微服务,就有利于上述人员的组织分配了.

使用微服务,可以更方便的进行功能的复用,可以针对不同的服务进行不同的部署.不同服务之间通过网络进行交互.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/168794.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端uniapp生成海报绘制canvas画布并且保存到相册【实战/带源码/最新】

目录 插件市场效果如下图注意使用my-share.vue插件文件如下图片hch-posterutilsindex.js draw-demo.vuehch-poster.vue 最后 插件市场 插件市场 效果如下图 注意 主要&#xff1a;使用my-share.vue和绘制canvas的hch-poster.vue这两个使用 使用my-share.vue <template&…

通过css设置元素隐藏和显示

背景&#xff1a;鼠标悬浮时显示删除&#xff0c;放开后显示组件名 解决&#xff1a;通过display:none和display:block显示和隐藏元素&#xff1b; 使用 div p选择器选择当前div的下一个紧跟的p元素 <div v-if"!preview" class"name">{{propertyDa…

java每日一记 —— 浅浅的说下在Lombok中遇到的一个坑

今天说下Lombok 1.先谈谈Lombok吧2.来聊聊为什么有些公司不喜欢用Lombok3.聊点废话 本篇代码在jdk11中测试通过&#xff0c;Lombok版本使用的是1.18.20 昨天写注解时提到了一下Lombok&#xff0c;然而最近写毕业论文又因为Lombok踩过几次坑&#xff0c;所以今天来聊聊 1.先谈谈…

windows10关闭自动更新

windows10关闭自动更新 下载策略组改配置组配置 下载策略组 我自己的电脑里没有这个文件gpedit.msc所以要下载 pushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows…

[uni-app]记录APP端跳转页面自动滚动到底部的bug

文章目录 bug描述原因分析: 处理方案 bug描述 1.点击的A页面, 跳转到了B页面, 第一次页面正常显示 2.从B页面返回A页面 3.A页面不进行任何操作,再次点击A页面进入B页面 4.B页面自动滚动到底部. 原因 看一段A页面代码 let that thisthis.defaultScrollTop uni.getStorageSy…

OpenAI内斗剧情反转!微软力保ChatGPT之父回归?

美东时间11月17日下午&#xff0c;全球最热门的聊天机器人ChatGPT开发商OpenAI宣布了一项重磅管理层调整&#xff0c;Sam Altman将辞去CEO一职&#xff0c;并离开公司董事会。 Altman被踢出的消息除了让业界担心会影响该公司未来发展外&#xff0c;OpenAI另一位共同创办人暨总裁…

Linux学习第43天:Linux 多点电容触摸屏实验:难忘记第一次牵你手的温存

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 人都是性情中人&#xff0c;如果把学习当做自己的女朋友&#xff0c;对她细致入微、掏心掏肺、有耐心有恒心&#xff0c;终会修成正果。 而我们本节需要学习的电…

idea导入javaweb变成灰色

解决办法&#xff1a; 如果这时候src是蓝色&#xff0c;其余都是灰色文件夹&#xff0c;这时候要先把src文件夹变成灰色&#xff0c;否则之后会报错 src文件变成灰色方法&#xff0c;右键src,选择make direcory as 选择unmark 如果src不是蓝色&#xff0c;就是灰色&#xff0…

《C++PrimePlus》第8章 函数探幽

8.1 内联函数 使用内联函数 #include <iostream> using namespace std;inline double square(double x) { return x * x; }int main(){double a;a square(5.0);cout << "a " << a << endl;return 0; } 8.2 引用变量 将引用用作函数参数&…

软件数据采集使用代理IP的好处用哪些?

随着互联网的快速发展&#xff0c;越来越多的企业开始通过软件数据采集来获取目标客户的信息。然而&#xff0c;在进行数据采集的过程中&#xff0c;由于不同网站的访问规则和限制&#xff0c;经常会遇到一些问题。这时候&#xff0c;使用代理IP就可以很好地解决这些问题。下面…

自然语言处理:Transformer与GPT

Transformer和GPT&#xff08;Generative Pre-trained Transformer&#xff09;是深度学习和自然语言处理&#xff08;NLP&#xff09;领域的两个重要概念&#xff0c;它们之间存在密切的关系但也有明显的不同。 1 基本概念 1.1 Transformer基本概念 Transformer是一种深度学…

Kettle 简介

1. PDI结构简介 图 1‑1 PDI核心组件 Spoon是构建ETL Jobs和Transformations的工具。Spoon可以以拖拽的方式图形化设计&#xff0c;能够通过spoon调用专用的数据集成引擎或者集群。 Data Integration Server是一个专用的ETL Server&#xff0c;它的主要功能有&#xff1a; 功能…

数据库系统原理与实践 笔记 #9

文章目录 数据库系统原理与实践 笔记 #9存储管理与索引文件和记录的组织文件组织定长记录变长记录分槽的页结构文件中记录的组织顺序文件组织多表聚簇文件组织 数据库系统原理与实践 笔记 #9 存储管理与索引 文件和记录的组织 文件组织 数据库是以一系列文件的形式存储的。…

羊大师:冬季有哪些宅家必备?

羊大师&#xff1a;冬季有哪些宅家必备&#xff1f; 寒冷的冬天&#xff0c;宅在家里是舒适的选择。但是长时间的久坐却会让我们的身体变得僵硬&#xff0c;缺乏运动会导致身体机能下降。为了保持健康且舒服的状态&#xff0c;羊大师建议我们应该在家里进行一些简单又有效的运…

竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码

文章目录 0 简介1 项目说明2 数据集介绍&#xff1a;3 思路分析及代码实现3.1 数据可视化3.2 数据分离3.3 数据可视化3.4 在pytorch下创建数据集3.4.1 创建data-label对照表3.4.2 重写Dataset类3.4.3 数据集的使用 4 网络模型搭建4.1 训练模型4.2 模型的保存与加载 5 相关源码6…

拜托!佛系点,你只是给社区打工而已

社区人到年底了各种要写的东西很烦啊&#xff01;突然看到这个&#xff0c;真的谢谢啊&#xff01; 家人们谁懂啊&#xff1f;&#xff01;&#xff01;平时写个东西起码两三天&#xff0c;试了一下这东西&#xff01;输入需求&#xff0c;一键生成&#xff0c;写好了&#xf…

vue年季度月联动筛选(el-cascader实现)

默认显示当年当季当月 <label class"font-weight">时间范围</label> <el-cascaderplaceholder"请选择":options"timeOption"filterableclearablechange-on-selectv-model"timeRange":props"{emitPath: true}&quo…

深眸科技以自研算法+先进硬件,创新打造AI视觉一体化解决方案

工业视觉软硬件一体化解决方案&#xff1a;是以工业AI视觉技术为核心&#xff0c;通过集成工业相机等视觉硬件、电控系统和机械系统等自动化设备以及算法平台等软件应用&#xff0c;为工业自动化降本增效提质。 深眸科技为进一步巩固和加强技术领先优势&#xff0c;创新打造的…

DBeaver连接本地MySQL

原文&#xff1a; DBeaver21.3.0安装与连接本地MySQL_dbeaver创建本地数据库_傅大胖的博客-CSDN博客 其他&#xff1a; mysql 的驱动下载地址&#xff1a; Central Repository: mysql/mysql-connector-java ​​​​​​​

一行代码搞定GPT4.0禁止升级开通

GPT4.0官方停止开通&#xff1f;看我一行代码就搞定他&#xff0c;又可以愉快的充值升级了 首先打开你的chatgpt的界面 正常点击这个升级是没有用的 这个界面中windows用户按键盘的F12打开开发者工具 mac电脑点菜单栏的开发–页面检查 然后输入这一串命令并回车 等待两…