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

【Redis】从单机架构到分布式,回溯架构的成长设计美学

前言

🌟🌟本期讲解关于分布式架构的发展相关知识介绍~~~

🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-CSDN博客

🔥 你的点赞就是小编不断更新的最大动力                                       

🎆那么废话不多说直接开整吧~~

 

目录

📚️1.单机架构

📚️2.应用服务于数据库分离

📚️3.引入负载均衡

📚️4.数据读写分离

📚️5.引入缓存

📚️6.分库分表

📚️7.微服务架构

📚️8.总结

 

📚️1.单机架构

所谓的单机架构,其实就是一台服务器完成所有的工作,包括业务处理,数据库数据存储等等

大致如下所示:

应用服务主要负责我们业务处理,而数据库主要负责存储数据,那么这就是一个比较基础的单体架构;

那么单体架构已经被淘汰了吗?

1、当然没有,随着计算机的快速的发展,硬件以发展非常快,那么一台主机就能够处理极高的并发,以及存储大量的数据;

2、并且单体架构对于分布式来说,系统的复杂程度大大下降,方便开发;

但是日益增长的请求和访问量,单体架构无法胜任,(硬件资源是有上限的,包括CPU,硬盘,带宽,内存......)那么就有两种解决方式

1、开源:引入更多的硬件资源

2、节流:在软件层面,对于代码进行性能的提高,但是比较困难

所以引入下面的应用服务和数据库进行分离

📚️2.应用服务于数据库分离

具体的格式如下图所示:

那么在引用服务器中,要处理我们的业务数据,那么就会吃CPU和内存,所以可以对症下药;

在存储服务器中,我们就可以用硬盘进行数据的存储,这里我们可使用固态硬盘提高访问的速度;

将两者分离后,大大降低了单台服务器(主机)的压力;

📚️3.引入负载均衡

具体的图示如下:

假如单台应用服务器,承受不住压力,或者把CPU吃没了,那么就会崩溃;所以就引入了两个应用服务器;

但是,我们如何对于我们的来的情求进行合理的分配呢?那么就要引如负载均衡了;那么他就可以针对来的请求,进行处理,合理的进行分配~~~

负载均衡的负载能力很强,但是假如请求量大到负载均衡也处理不了,就可以引入多个,即多个机房

📚️4.数据读写分离

如下图所示:

其实如果请求过大,那么又由于数据库的访问速度比较慢,那么就可以将数据库进行分离,一个主数据库,一个从数据库;

主数据库主要负责写的操作,然后从数据库负责读的操作,并且写完后要同步到从数据库数据中;

注意:在大多数对于数据库的访问多是查询操作,写的操作比较少;并且这里遵守一主多从,通过负载均衡进行数据库的访问~~~

那么这样就可以减轻我们数据库的访问压力了;

📚️5.引入缓存

数据库有一个天然的缺点,即访问的速度慢;那么我们如何提高数据的访问速度呢?

那么就有一个很出名的定律:二八定律;

即百分之二十的数据可以满足百分之八十的数据访问;

那么我们就可引入缓存(特点速度更快,存在内存上,空间不大)

那么就正好可以存那百分之二十的数据,满足百分之八十访问需求;

如下所示:

 

其中我们把百分之二十的热点数据存储到缓存中,极大的提高的我们数据的访问速率;

但是这里要将我们的数据的缓存和我们的数据库进行同步~~~

📚️6.分库分表

如下所示:

假如越来越大的数据需要存储,那么就要更多的数据库来存储数据;

此时就可以针对某特定类的数据进行存储,称为数据库的集群~~~

并且如果某一个表非常大,就可以针对这个表来进行分表的操作~~~

📚️7.微服务架构

如下图所示:

即将我们上述的所有的分为几个板块,将我们的业务拆分,然后针对每个业务采用我们上述讲解的架构模式 ;

其实由于一个服务器的代码越来越多,那么我们将代码功能分为小块,简化了代码的复杂程度;

但是我们的微服务真的没有什么缺点吗?当然是存在缺点的~~

1、系统的性能下降(由于进程之间通信,所以拆分出来的多个服务需要依靠网络通信来进行数据的传输)网络传输的熟读比硬盘还慢

2、复杂度提高,可用性收到影响(服务器更多了,那么出现问题的概率增加)

 BUT微服务也有好处:

第一:解决了人源问题,针对每个业务功能分配不同的人力资源

第二:使用微服务,方便了我们功能的复用;

第三:可以给不同的服务,进行不同的部署(假如一个核心功能,请求高,那么可以分配部署在一个性能更好的服务器上)

📚️8.总结

本期小编主要讲解了分布式微服务的发展来源,从单机架构到分布式,再到微服务,小编都进行了一一的讲解~~~

🌅🌅🌅~~~~最后希望与诸君共勉,共同进步!!!


💪💪💪以上就是本期内容了, 感兴趣的话,就关注小编吧。

       😊😊  期待你的关注~~~

相关文章:

  • 数据驱动增长:大数据与营销自动化的结合之道
  • 学习设计模式《三》——适配器模式
  • Java 并发性能优化:线程池的最佳实践
  • 【上海大学计算机系统结构实验报告】多机环境下MPI并行编程
  • Ai Agent 在生活领域的深度应用与使用指南
  • Flink介绍——实时计算核心论文之Kafka论文总结
  • NoSQl注入学习
  • OpenLayers:视图变换的方法
  • Python语法系列博客 · 第3期 数据结构入门(列表、元组、字典、集合)
  • 从代码学习深度学习 - 优化算法 PyTorch 版
  • MPTCP 的吞吐困局
  • ICS丨Chapter 1 Introduction to Computer System
  • MFC文件-屏幕录像
  • C 语言联合与枚举:自定义类型的核心解析
  • [Swift]Xcode模拟器无法请求http接口问题
  • Qt unknown module(s) in qt:serialport解决方法
  • Oracle Recovery Tools修复ORA-600 6101/kdxlin:psno out of range故障
  • C++11新增语法:列表初始化
  • 实现AWS Lambda函数安全地请求企业内部API返回数据
  • [每周一更]-(第140期):sync.Pool 使用详解:性能优化的利器
  • 观察|智驾监管升级挤掉宣传水分,行业或加速驶入安全快车道
  • 河南社旗县委书记张荣印转任南阳市人大常委会农工委主任
  • 两大跨国巨头称霸GLP-1市场,国产减肥药的机会在哪?
  • 人民网评:官方轻踩刹车,智能驾驶不能“蒙眼狂奔”
  • 推动中阿合作“向新而行”,这场论坛在上海松江举行
  • 福特预期6月美国市场涨价,机构称加税让每辆汽车成本至少增加数千美元