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

news2024/11/15 21:03:23

目录

单体架构

应用数据分离架构

应用数据集群架构

读写分离 / 主从分离架构

引⼊缓存⸺冷热分离架构

垂直分库

业务拆分-微服务

单体架构

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

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

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

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

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

应用数据分离架构

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

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

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

应用数据集群架构

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

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

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

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

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

读写分离 / 主从分离架构

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

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

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

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

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

引⼊缓存⸺冷热分离架构

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

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

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

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

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

垂直分库

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

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

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

业务拆分-微服务

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

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安卓主板_MTK安卓一体机方案定制

安卓一体机主板集成多媒体解码、3G(4G/5G可选)模块,GPS,液晶驱动、WIFI、蓝牙、串口于一体,支持绝大部分当前流行的视频及图片格式解码。支持MIPI接口的1280*720分辨率的显示屏,最大支持1280*720P解码。大大…

非上市公司的财务报表可以找到吗?

企业财务报表 财务报表是反映企业或预算单位一定时期资金、利润状况的会计报表。我国财务报表的种类、格式、编报要求,均由统一的会计制度作出规定,要求企业定期编报。国营工业企业在报告期末应分别编报资金平衡表、专用基金及专用拨款表,基…

java中的抽象

1.当一个类中给出的信息不够全面时,(比方说有无法确定的行为),它给出的信息不足以描绘出一个具体的对象,这时我们往往不会实例化该类,这种类就是抽象类。 2. 在Java中,我们通过在类前添加关键字…

怎样的一款嵌入式 IDE 才是各阶段嵌入式开发者所喜欢的?

怎样的一款嵌入式 IDE 才是各阶段嵌入式开发者所喜欢的? 1 一定要快,现在流行的VSCODE用起来是很爽,但是VSCODE的插件什么的,也很容易拖卡,更不要说source insight了,SI有一个致命的特点就是,某个时候会闪…

Vatee万腾携手Wiki EXPO 2023悉尼峰会 共谱辉煌未来

悉尼,这座充满活力和创新的城市,即将成为全球商业的焦点。2023年11月16日,由WikiEXPO主办的Wiki Finance Expo Sydney 2023在悉尼马丁广场1号富丽敦酒店隆重开幕,这场金融博览会是澳大利亚今年规模最宏大、备受期待的金融科技盛会…

leetcode刷题日记:202. Happy Number( 快乐数)和203. Remove Linked List Elements(移除链表元素)

202. Happy Number( 快乐数) 这一题的解决与之前的循环链表比较类似,因为如果不是快乐数的话,在数字变化的过程中必然遇到了数字变换的循环,所以我们需要在变换的过程中判断是否遇到了循环,判断是否在一个序列中存在循环&#xf…

使用frp搭建内网穿透服务

使用frp搭建内网穿透服务 frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 1.下载frp 下载地址 2.服务端安装 …

网络工程师网络配置经典例题(五)

1、配置SwitchA的单臂静态BFD特性 [SwitchA] bfd [SwitchA-bfd] quit [SwitchA] bfd 1 bind peer-ip 10.2.2.2 interface vlanif 10 source-ip 10.1.1.1 one-arm-echo [SwitchA-bfd-session-1] discriminator local 1 [SwitchA-bfd-session-1] min-echo-rx-interval 200 …

超长圆钢在线直线度检测 告别手工测量时代

圆钢的直线度指的是它的表面形状是否呈现出直线。直线度是圆钢的重要品质要求之一,与其物理性能密切相关。在工业制造中,如果圆钢的直线度不达标,就会影响其后续的加工和使用效果,严重时甚至会造成损失。 超长圆钢的检测&#xff…

【Python】12 GPflow安装

概述 GPflow 是一个基于TensorFlow 在 Python 中构建高斯过程模型的包。高斯过程是一种监督学习模型。 高斯过程的一些优点是: 不确定性是高斯过程的固有部分。高斯过程可以在不知道答案时告诉您。适用于小型数据集。如果您的数据有限,高斯过程可以从…

电磁场与电磁波part6、7--均匀平面波的反射与透射、导行电磁波

1、分界面上的反射系数 反射波电场振幅 与入射波电场振幅 的比值,即: 2、驻波系数(驻波比) 合成波的电场强度的最大值与最小值之比,即: 3、导波系统中电磁波的传输问题属于电磁场边值问题,即…

【云栖 2023】张治国:MaxCompute 架构升级及开放性解读

云布道师 本文根据 2023 云栖大会演讲实录整理而成,演讲信息如下 演讲人:张治国|阿里云智能计算平台研究员、阿里云 MaxCompute 负责人 演讲主题:MaxCompute架构升级及开放性解读 活动:2023云栖大会 MaxCompute 发展经历了三个阶…

Semi-Supervised Multi-Modal Learning with Balanced Spectral Decomposition

Y是所有模态的表征矩阵, ∑ i 1 d h ( λ i ) \sum_{i1}^dh(\lambda_i) ∑i1d​h(λi​) is the proposed eigenvalue-based objective function,the final similarity matrix W for the multimodal data as a block matrix 辅助信息 作者未提供代码

【C++百宝箱】语法总结:引用 | 内联函数 | auto | 范围for循环

🚩纸上得来终觉浅, 绝知此事要躬行。 🌟主页:June-Frost 🚀专栏:C入门宝典 🔥本文主要探讨C的语法,并深入了解C如何针对C语言中存在的不合理之处进行优化改进。 目录: ⌛…

LED植物生长灯怎么做更有效?聚光和散热不能少!

如何选择一款更有效的植物生长灯呢?相信这是很多朋友关心的问题。 其实方法很简单,以主流的LED植物生长灯为例,想要植物灯更有效、更好用,需要关注其是否有光学透镜和散热技术。 光学透镜对植物生长灯有什么样的作用&#xff1f…

OpenHarmony Ohpm安装历程(个人踩坑,最后安装成功)

大家好,我是【八戒,你又涨价了哎】 以下是我个人在学习OpenHarmony过程中的分享,请大家多多指教 目录 问题描述: 尝试解决 尝试一、 尝试二、 尝试三、 最终解决方案 问题描述: 当我学习到使用OpenHarmony的三方…

儿童家居服 I 童年很短不留遗憾,尽情打扮

厚实细腻的双面北极绒面料 软糯亲肤,上身效果极佳 经典宽松版型,对身材的包容性很强 帽子上的小熊刺绣精致又可 袖口处还有小熊掌的刺绣哦 松紧裤腰和束脚设计,防风保暖做到实处 这么好看又保暖的家居服喜不喜欢呢

中间件安全:Apache Tomcat 弱口令.(反弹 shell 拿到服务器的最高控制权.)

中间件安全:Apache Tomcat 弱口令. Tomcat 是 Apache 软件基金会(Apache Software Foundation)的 Jakarta 项目中的一个核心项目,由 Apache、Sun 和其他一些公司及个人共同开发而成。 通过弱口令登录后台,部署 war 包…

TDengine TSZ 压缩算法优化背后的故事,要从一篇学术论文说起

TSZ 压缩算法是 TDengine 提供的一种可选压缩算法,专门用于浮点数据类型。它具有出色的压缩性能,能够在有损和无损状态下都提供更高的压缩率,甚至比默认压缩算法高出一倍,满足更高的数据存储需求。利用数据预测技术,TS…

Idea 2023.2.5配置(插件、Maven等)

IDEA2023.2.5配置 一. 插件Alibaba Java Coding Guidelines plugin supportMaven HelperMyBatisXSonarLintTranslationVuesion Theme 二. 自定义创建live template,快速写代码三. 修改全局配置3.1 Maven配置3.1.1 安装MavenStep1. 下载Step2. 安装Step3. 创建系统环…