【Redis基础篇】浅谈分布式系统(一)

news2024/11/24 2:56:16

一、浅谈分布式系统

1. 单机架构:只有一台服务器,这个服务器负责所有的工作。

在这里插入图片描述

如果遇到了服务器不够的场景怎么处理?

  • 开源:增加更多的硬件资源
  • 节流:软件上的优化,优化代码等…
  • 一台服务器资源使用有限,就需要引更多的服务器,此时系统复杂度就会大大提高!

2. 应用服务和数据库服务分离

在这里插入图片描述

3. 引入更多的应用服务器节点

在这里插入图片描述

那上述中 负载均衡服务器 看起来承担了所有的服务请求,那么它顶得住吗?
负载均衡服务器,对于请求量的承担是远远超过应用服务器的。
这就好比:
● 负载均衡服务器是领导,负责分配任务
● 应用服务器是组员,复杂执行任务
就算请求量多到负载均衡服务器也承担不了,那就引入更多负载均衡服务器~(多个机房)

4. 数据库服务器怎么解决承担压力?

在上述中,应用服务器虽然分担了压力,但是数据库服务器仍然只有一个,那该怎么办呢?
在这里插入图片描述

主服务器一般是一个,从服务器可以有多个。(一主多从);同时从数据库中通过负载均衡的方式,让应用服务器进行访问。

5. 引入缓存

然而数据库有个天然的问题,响应速度是很慢的,因为是从硬盘中读取数据~
所以我们把数据区分为“冷热”,热点数据放到缓存中,访问的速度比数据库快很多!
在这里插入图片描述

6. 数据库如何承担更大的数据量?

上述是解决了请求量(并发量)的问题,但是数据库容量始终有限,如果出现一台服务器存不下数据该怎么办?
在这里插入图片描述

可以针对数据库进行分库分表的操作。引入多个数据库服务器,每个数据库服务器存储一个或者一部分数据库.

7. 微服务架构

之前的应用服务器,一个服务器程序做了很多事情,这可能会导致这个服务器代码越来越复杂~
为了更方便的维护,就可以把一个复杂的应用服务器拆分成更多的、更单一的服务器(微服务)
在这里插入图片描述

微服务本质上是解决了“人”的问题~
引入微服务出现的问题:
● 系统性能下降,拆出来更多的服务,多个功能之间更要依赖网络通信,网络通信的速度速度很可能比硬盘还慢!
● 系统复杂度提高,可用性受到影响,服务器,出现问题概率更高!
微服务的优势:
● 解决了“人”的问题
● 使用微服务,可以更方便于功能的复用
● 可以给不同的服务进行不同的部署

8. 总结

  1. 单机架构(应用程序+数据库服务器)
  2. 数据库和应用分离:应用程序和数据库服务器分别放到不同主机上部署
  3. 引入负载均衡:多个应用服务器之间通过负载均衡把请求比较均匀分发给集群中的每个服务器
  4. 引入读写分离,数据库主从结构:一个数据库作为主节点,其他数据库作为从节点。主节点负责 写数据,从节点负责 读数据。(主节点需要把修改过的数据同步给从节点)5
  5. 引入缓存:冷热数据分离结构,进一步提升服务器处理请求的能力 (数据库和缓存数据一致性问题)
  6. 数据库分库分表:数据库能够进一步扩展存储空间,根据具体业务
  7. 微服务架构:从业务上进一步拆分应用服务器,拆分成功能单一,更简单的服务器

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

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

相关文章

使用Mix-in类组合功能

为什么需要Mix-in? 在学习面向对象时我们知道,类可以通过继承类获得属性和方法,通过继承可以减少重复代码、提高复用率。Python支持多继承,一个类可以通过继承多个类来得到它们的功能。但多继承会带来一些问题,比如属性冲突。那…

AS报错:错误: 无效的源发行版:12

背景:今天用Android Studio 编译以前的demo,运行报错:错误: 无效的源发行版:12 截图如下: 解决办法:将jdk版本由11升级到13,解决了。 路径:Setting/Build,Execution,Deployment/Build Tools/Gradle/Gradl…

Python多线程与线程池(python线程池ThreadPoolExecutor)concurrent.futures高级别异步执行封装

文章目录 Python多线程与线程池一、Python多线程1.1 线程简介1.2 Python中的多线程1.3 GIL限制 二、线程池2.1 Python中的线程池 三、代码分析四、参考资料 Python多线程与线程池 一、Python多线程 在进行复杂的计算或处理大量数据时,可以通过创建多个线程来同时执…

MySQL卸载并重装指定版本

MySQL卸载并重装制定版本 学习新的项目,发现之前的Navicat已经失去了与现有MySQL的链接,而且版本也不适合,为了少走弯路,准备直接重装相应版本的MySQL 卸载现有MySQL 停止windows的MySQL服务,【windowsR】打开运行框…

电脑提示vcomp140.dll丢失怎样修复?vcomp140.dll的三种修复方法

vcomp140.dll是Microsoft Visual C所需的一个动态链接库文件,用于支持C并行编程。为了更好地理解为什么vcomp140.dll会丢失,并对其进行详细介绍,下面将详细解释以下几个方面: 动态链接库(DLL)的作用和原理…

SpringBoot系列之集成Resteasy实现RESTFul接口

JAX-RS:JavaAPI for RESTful Web Services,JAX-RS是可以用可以用于实现RESTFul应用程序的JAVA API,给开发者提供了一系列的RESTFul注解 EasyRest:这是Jboss开源的,一款用来定义实现RESTFul应用程序的框架,…

判断推理 -- 图形推理 -- 样式规律

上述题可以挑一两条线来看。 横着没规律可以竖着看,从上往下没规律可以从下往上。 黑白运算 从0点开始找,排除选项后找剩下选项不同的地方。 求异技巧很重要。

springcloud3 使用openfegin实现getpost请求调用

一 项目介绍 1.1 工程介绍 1.consumer9008 2.provider9009 二 get请求 2.1 消费端 1.controller 2.service 2.2 提供者 1.提供者 2.3 测试请求 地址: http://localhost:9008/consumer/payment/nacos/2223 三 post请求 3.1 消费者 3.2 提供者 3.3 测试请求…

前端打开后端返回的HTML格式的数据

前端打开后端返回的 HTML格式 的数据: 后端返回的数据格式如下示例: 前端通过 js 方式处理(核心代码如下) console.log(回调, path); // path 是后端返回的 HTML 格式数据// 必须要存进localstorage,否则会报错&am…

day 0815

计算文件有多少行? 2.文件的拷贝

InnoDB引擎

1 逻辑存储结构 InnoDB的逻辑存储结构如下图所示: 1). 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个…

FreeRTOS qemu mps2-an385 bsp 移植制作 :环境搭建篇

开发环境 Win10 64位 VS Code,ssh 远程连接 ubuntu VMware Workstation Pro 16 Ubuntu 20.04 FreeRTOSv202212.01(备注:可以在 github 获取最新版本) qemu qemu-system-arm mps2-an385 开发板,qemu 版本 QEMU emu…

eNSP 配置交换机三种端口链路类型:Access、Trunk、Hybird

文章目录 1 概述1.1 总结:access、trunk、hybird 2 三种端口链路类型2.1 Access2.1.1 报文处理流程2.1.2 命令配置实验 2.2 Trunk2.2.1 报文处理流程2.2.2 命令配置实验 2.3 hybird2.3.1 报文处理流程2.3.2 命令配置实验 3 扩展3.1 查看 vlan 信息:displ…

实习机试代码记录

机试记录 2023-03-11 美团机试第一题第二题第三题第四题第五题 2023-03-12 拼多多机试第一题 多多的压缩编码II第二题 多多的飞机大战游戏第三题 多多的团建计划第四题 多多的餐厅客流量 2023-3-15 阿里机试第一题第二题第三题 2023-3-16 蚂蚁机试第一题 整数抽取第二题 组装电…

突破网络编程1024限制的方法(修改配置文件)

文章目录 概述修改linux配置相关命令步骤1. 打开终端2. 使用sudo权限编辑文件3. 添加资源限制配置4. 保存和退出5. 重启系统或重新登录 其他方法1. 使用事件驱动的框架2. 使用连接池3. 负载均衡4. 使用线程池和进程池5. 升级操作系统设置6. 使用专业的高性能服务器7. 分布式架构…

excel快速选择数据、选择性粘贴、冻结单元格

一、如何快速选择数据 在excel中,希望选择全部数据,通常使用鼠标选择数据然后往下拉,当数据很多时,也可单击单元格使用ctrl A选中全部数据,此外,具体介绍另一种方法。 操作:ctrl shift 方向…

6.RocketMQ之索引文件ConsumeQueue

本文着重分析为consumequeue/topic/queueId目录下的索引文件。 1.ConsumeQueueStore public class ConsumeQueueStore {protected final ConcurrentMap<String>, ConcurrentMap<Integer>, ConsumeQueueInterface>> consumeQueueTable;public boolean load(…

重新梳理DeepFaceLab(DeepFake)最近动态:简要且全面的信息

DeepFaceLab相关文章 一&#xff1a;《简单介绍DeepFaceLab&#xff08;DeepFake&#xff09;的使用以及容易被忽略的事项》 二&#xff1a;《继续聊聊DeepFaceLab&#xff08;DeepFake&#xff09;不断演进的2.0版本》 三&#xff1a;《如何翻译DeepFaceLab&#xff08;DeepF…

docker安装及优化详解

目录 一、部署20版的docker 1.1 安装依赖包 1.2 设置阿里云镜像源 1.3 安装docker-ce 社区版 1.4 关闭增强机制 1.5 开启服务 1.6 设置镜像加速 1.7 网络优化 二、linux 系统中的命令 记10条(cd ls pwd mv cp ) 2.1 查询docker 版本 2.2 搜索镜像 2.3 技能点 2.…

北美电商圈的黑马Shein(希音)产品权重打造,测评补单助销量提升

这两年北美的电商领域出现了一些备受关注的热门平台&#xff0c;其中Shein和TEMU无疑是其中的佼佼者。关于TEMU的测评之前有做过介绍&#xff0c;今天我们来探讨一下Shein是否也可以借助测评补单的方式来打造产品泉州提升销量。 首先不可否认只要是电商平台都可以通过测评补单…