1.Redis之初识Redis分布式系统

news2024/11/17 9:30:29

1.初识Redis

1.1 官网

Redis中文网

Redis 教程 | 菜鸟教程 (runoob.com)

1.2 解释

在内存中存储数据

定义变量,不就是在内存中存储数据嘛??

Redis 是在分布式系统(进程的隔离性:Redis 就是基于网络,可以把自己内存中的变量给别的进程甚至别的主机的进程进行使用。)中,才能发挥威力的~~

如果只是单机程序,直接通过变量存储数据的方式是比使用 Redis 更优的选择

Redis 就是基于网络可以把自己内存中的变量给别的进程甚至别的主机的进程进行使用.

1.3 用途

可用作数据库,高速缓存和消息队列代理(Redis的初心:最初就是用来作为一个"消息中间件"的(消息队列)分布式系统下的生产者消费者模型,但现在很少用)

1.数据库

优势:Redis速度快,因为Redis在内存中存储,而Mysql在硬盘中存储。

劣势:存储空间有限

  • 如何做到又大又快???
  • Redis和Mysql结合起来->(会导致系统的复杂程度大大提升)

2.分布式系统 

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

如果业务进一步增长,用户量和数据量都水涨船高,,一台主机难以应付的时候,就需要引入更多的主机, 引入更多的硬件资源~~ 

  • 为什么难以应付???

一台主机的硬件资源是有上限的!!! 

包括不限于以下几种:
1. CPU
2.内存
3.硬盘
4. 网络
5......

服务器每次收到一个请求,都是需要消耗上述的一些资源的~~
如果同一时刻,处理的请求多了,此时就可能会导致某个硬件资源不够用了!!!
无论是哪个方面不够用了,都可能会导致服务器处理请求的时间变长~甚至于处理出错~~

  • 如果我们真的遇到了这样的服务器不够用的场景,怎么处理呢?

1.开源
简单粗暴,增加更多的硬件资源~

一个主机上面能增加的硬件资源也是有限的,取决于主板的扩展能力~~
2.节流-软件上优化.

(各凭本事了,需要通过性能测试,找到是哪个环节出现了瓶颈,再去对症下药)

->一台主机扩展到极限了,但是还不够~~就只能引入多台主机了!!!

->不是说新的机器买来就直接可以解决问题了.也需要软件上做出对应的调整和适配~~

->一旦引入多台主机了,咱们的系统就可以称为是"分布式系统"

引入分布式,这是万不得已~~无奈之举~~系统的复杂程度会大大提高~~出现 bug 的概率越高

  • 应用服务(第一个服务器)和数据库服务(第二个服务器)分离 

 

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

负载均衡器:公平公正的“平均分配”(涉及很多的算法)

  • 负载均衡器,看起来不是承担了所有的请求嘛?这个东西能顶住嘛??

负载均衡器,对于请求量的承担能力,要远超过应用服务器的.
负载均衡器,是领导, 分配工作,
应用服务器,是组员,执行任务

引入更多机器->请求量太大

  • 是否可能会出现,请求量大到负载均衡器也扛不住了呢??

也是有可能的!!!引入更多的负载均衡器~~(引入多个机房)

当机器变多了,管理成本也会提高~~ 出现问题的概率也会提高

  • 如上面讨论,增加应用服务器,确实能够处理更高的请求量但是随之存储服务器,要承担的请求量也就更多了!!!咋办?

主要进行开源

开源(引入更多的机器)+节流(门槛高, 更复杂)
引入更多的机器->读写分离~

主服务器一般是一个.

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

数据冷热区分->响应速度慢

数据库天然有个问题,响应速度是更慢的!!

  • 如何解决???

把数据区分"冷热",热点数据放到缓存中~缓存的访问速度往往比数据库要快很多了!!

要想得到一个效果,就要付出一定的代价~~~
欲戴其冠,必承其重!!!

分库分表->存储空间不足 

  • 引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也要能应对更大的数据量~~是否可能会出现,一台服务器已经存不下数据了呢??

当然会存在!!!短视频~~虽然一个服务器,存储的数据量可以达到 几十个 TB,即使如此也可能会存不下~~台主机存不下,就需要多台主机来存储~~ 

微服务架构-解决人的问题

之前应用服务器,一个服务器程序里面做了很多的业务这就可能会导致这一个服务器的代码变的越来越复杂~~
为了更方便于代码的维护,就可以把这样的一个复杂的服务器,拆分成更多的,功能更单一,但是更小的服务器~~

(微服务)->服务器的种类和数量就增加了~~

【注意】微服务本质上是在解决"人"的问题~~(大厂才会考虑此情形)

当应用服务器复杂了~~势必就需要更多的人来维护了~~当人多了,就需要配套的管理,把这些人组织好~~
划分组织结构,分成多个组,每个组分别配备领导进行管理~~(分成多个组,就需要进行分工~~)

按照功能,拆分成多组微服务,就可以有利于上述 人员的组织结构的分配了~~

  • 引入微服务,解决了人的问题,付出的代价?

1.系统的性能下降~~(要想保证性能不下降太多,只能引入更多的机器,更多的硬件资源 =>充钱~~)

拆出来更多的服务,多个功能之间要更依赖

网络通信网络通信的速度很可能是比硬盘还慢的!!!

幸运的是,硬件技术的发展,网卡现在有 万兆 网卡【贵】,读写速度已经能过超过硬盘读写了~~

2.系统复杂程度提高, 可用性收到影响~~
服务器更多了,出现问题的概率就更大了~~
这就需要一系列的手段,来保证系统的可用性~~
(更丰富的监控报警,以及配套的运维人员)

微服务的优势

1.解决了人的问题.
2.使用微服务,可以更方便于功能的复用
3.可以给不同的服务进行不同的部署~~

2.1 基本概念

  • 应用(Application)/系统(System)

一个应用,就是一个/组 服务器程序

  • 模块(Module)/组件(Component)

一个应用,里面有很多个功能,每个独立的功能,就可以称为是一个 模块/组件

  • 分布式(Distributed)

物理上的多个主机引入多个主机/服务器, 协同配合完成一系列的工作.

  • 集群(Cluster)

逻辑上的多个主机,引入多个主机/服务器,协同配合完成一系列的工作.

  • 主(Master)/从(Slave)

分布式系统中一种比较典型的结构~~
多个服务器节点,其中一个是主,另外的是从,从节点的数据要从主节点这里同步过来~~

  • 中间件(Middleware)

和业务无关的服务(功能更通用的服务)
1.数据库
2. 缓存
3. 消息队列

  • 中间件(Middleware)

和业务无关的服务(功能更通用的服务)
1.数据库
2.缓存
3. 消息队列

  • 可用性(Availability)(最核心)

系统整体可用的时间/总的时间
一个系统的第一要务.
360/365 =>可用性~~
4个9即系统可以提供99.99%的可用性,5个9是99.999%

  • 响应时长(Response Time RT)

衡量服务器的性能
和具体服务器要做的业务密切相关的~~
越小越好~~

  • 吞吐(Throughput)ys并发(Concurrent)

衡量系统的处理请求的能力.衡量性能的一种方式

 

3.分布式系统小节

1.单机架构 (应用程序 +数据库服务器)

2.数据库和应用分离
应用程序和数据库服务器 分别放到不同主机上部署了

3.引入负载均衡, 应用服务器 =>集群
通过负载均衡器,把请求比较均匀的分发给集群中的每个应用服务器.【当集群中的某个主机挂了,其他的主机仍然可以承担服务~~提高了整个系统的可用性~-】

4.引入读写分离,数据库主从结构
一个数据库节点作为主节点,其他N个数据库节点作为从节点,
主节点负责 写 数据. 从节点负责 读 数据.
主节点需要把修改过的数据同步给从节点~二八原则【Redis 在一个分布式系统中,通常就扮演着缓存这样的角色~.引入的问题: 数据库和缓存的数据一致性问题~~】

5.引入缓存, 冷热数据分离
进一步的提升了服务器针对请求的处理能力.

6.引入分库分表,数据库能够进一步扩展存储空间

7.引入微服务,从业务上进一步拆分应用服务器~~~从业务功能的角度,把应用服务器,拆分成更多的功能更单一,更简单, 更小的服务器.

上述这样的几个演化的步骤,只是一个粗略的过程.实际上一个商业项目,真实的演化过程,都是和他的业务发展密切相关的,业务是更重要的,技术只是给业务提供支持的
所谓的 分布式 系统, 就是想办法引入更多的硬件资源! 

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

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

相关文章

DA-CLIP论文阅读笔记

这是ICLR2024的一篇用VLM做multi-task image restoration的论文首页图看起来就很猛啊,一个unified模型搞定10个任务: 文章的贡献点主要是两个,一个是提出一个利用Image Controller,CLIP,cross-attention 和 diffusion …

外卖系统源码开发全攻略:外卖小程序与后台管理系统的设计与实现

今天,小编将详细介绍外卖系统源码的开发全攻略,从需求分析到设计与实现,为开发者提供全面指导。 一、需求分析 1.用户需求 用户是外卖系统的核心,需满足以下基本需求: -浏览菜单并下单 -实时追踪订单 -多种支付方…

3D虚拟艺术品网上展让观众沉浸式感受到艺术的魅力和力量

传统的艺术品展厅因为空间有限、内容割裂、形式静态和局限性强导致传播和宣传效果难以保障,艺术品VR线上虚拟艺术品展示借助web3d开发建模和VR虚拟现实技术,打造数字化、互动化、信息化的展示,不仅是一场视觉的革命,更是对传统展览…

智慧校园建设的进阶之路

智慧校园的建设现已到达了老练的阶段,许多学校设备充满着数字化信息,进出宿舍楼,校园一卡通体系会记载下学生信息,外来人员闯入会报警,翻开电脑就能查到学生是否在宿舍等……学生的学习和日子都充满了数字化的痕迹。但…

百度集团:AI重构,走到哪了?

内有自家公关一号“自曝”狼性文化,主动制造舆论危机。 外有,OpenAI、谷歌、字节、华为等大模型劲敌扎堆迭代新产品, 强敌环伺。 今天我们要说的是早就从BAT掉队的——百度。 最近,在武汉Aapollo Day 2024上,百度发布了…

“定融”爆大雷,害苦有钱人

据《大猫财经》Pro(ID:caimao_shuangquan)报道,中植系的恒天财富有5名理财顾问被抓了。其实因为涉及刑事犯罪,中植系不少高管之前已经进去了,现在进去的这几个,是追赃过程中遇到的不配合的那些人。 这个消息是从“恒天财富”内部…

王炸! Coze图像流发布,我用它实现了海马体影楼级形象照(内附喂饭级教程

最近Coze图像流发布,我用它实现了海马体风格照片Bot: 照片魔术师。你可以自定义提供模版,也可以根据你的需求生成模版! 这篇文章,全文不废话,只讲干货 二话不说,先来看看帅气的奥特曼怎么生成吧吧&#xff…

今日好料推荐(AI工业革命 + 产业级数据治理白皮书)

参考资料在文末获取,关注我,获取优质资源。 《ChatGPT:AI工业革命》 《ChatGPT:AI工业革命》是一本深入探讨人工智能技术,尤其是ChatGPT及其背后的GPT-4架构在各个领域中应用的书籍。这本书不仅详细介绍了ChatGPT的发…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(九)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 16 节) P16《15.ArkUI-状态管理-任务统计案例》 1、实现任务进度卡片 怎么让进度条和进度展示文本堆叠展示&#xff1…

【Linux】进程终止与进程等待

目录 进程终止 errno exit和_exit 进程等待 wait和waitpid 宏:WIFEXITED 非阻塞等待 进程终止 下面要谈的一个话题就是进程终止,就是说一个进程退出了,可能有三种情况 1.进程代码执行完,结果是正确的 2.进程代码执行完&…

代码随想录算法训练营Day4|24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、 142.环形链表II、面试题 02.07. 链表相交

24. 两两交换链表中的节点 这道题的关键在于: 1、在置换两个节点的时候,当前节点需要在这俩节点之前一个节点。并且要提前保存cur.next以及cur.next.next。 2、每次置换完一组节点,cur cur.next.next 3、判断结束的标志:奇数个节点&#xf…

一个开源的个人主页模板,可以通过 Github Actions 来进行自动构建。

無名の主页 简单的小主页,原来的看够了,重新弄了一个 主页的 Logo 字体已经过压缩,若用本站 Logo 以外的字母会变回默认字体,这里是 完整字体,若无法下载,可将字体目录下的 Pacifico-Regular-all.ttf 进行替…

MySQL 带游标的存储过程(实验报告)

一、实验名称: 带游标的存储过程 二、实验日期: 2024 年 5月 25 日 三、实验目的: 掌握MySQL带游标的存储过程的创建及调用; 四、实验用的仪器和材料: 硬件:PC电脑一台; 配置&#xff1…

huggingface 笔记:PretrainModel

1 from_pretrained 从预训练模型配置中实例化一个 PyTorch 预训练模型默认情况下,模型使用 model.eval() 设置为评估模式(Dropout 模块被禁用) 要训练模型,应该首先使用 model.train() 将其设置回训练模式 1.1 主要参数 pretra…

Android 项目中自定义多个 RadioButton 并排一列选择效果实现

文章目录 1、静态版实现1.1、实现要求1.2、实现步骤1.3、代码实现1.4、代码实现说明1.5、结论 2、项目版实现(动态)1、先看效果图2、main的布局文件3、定义RadioButton的属性4、最后在代码中生成我想要的东东5、说明 3、后续优化方向 1、静态版实现 1.1、实现要求 我们需要在…

【字典树 马拉车算法】336. 回文对

本文涉及知识点 字典树 马拉车算法 336. 回文对 给定一个由唯一字符串构成的 0 索引 数组 words 。 回文对 是一对整数 (i, j) &#xff0c;满足以下条件&#xff1a; 0 < i, j < words.length&#xff0c;i ! j &#xff0c;并且words[i] words[j]&#xff08;两个字…

CAN网络管理(TJA1145如何实现MCU的休眠唤醒)

节点唤醒方式 本地唤醒&#xff1a; 唤醒源来源于自身模块&#xff0c;比如常说的KL15&#xff0c;控制器由KL15线供电&#xff0c;即只能在钥匙置于“ACC”或者“ON”档时运行软件和维持CAN通信 对于正在运行的CPU软件&#xff0c;无论它处在什么状态&#xff0c;只要Hardwa…

【Tools】微服务工程中的通用功能模块抽取

Catalog 通用功能模块抽取一、需求二、步骤三、细节 通用功能模块抽取 一、需求 在微服务工程中&#xff0c;可能有一些工具类、实体类是多个微服务通用的&#xff0c;如果在每个微服务中都复制粘贴这些工具类&#xff0c;会产生很多重复性的代码&#xff0c;对开发来说也很繁…

吴恩达2022机器学习专项课程C2W2:实验Relu激活函数

目录 代码修改1.Activation2.Dense3.代码顺序 新的内容1.总结上节课内容2.展示ReLU激活函数的好处3.结论 代码案例一代码案例二1.构建数据集2.构建模型 2D1.构建数据集2.模型预测3.扩展 代码修改 1.Activation &#xff08;1&#xff09;需要添加代码from tensorflow.keras i…

5.小程序页面布局 - 记账页面(名目布局、绘制键盘、引用picker时间选择组件)

文章目录 1. 小程序页面布局 - 记账页面1.1. 记账页面的布局1.1.1. 样例1.1.2. 页面解构1.1.3. 内容布局的实现1.1.3.1. 填坑(display:flex)1.1.3.2. 突破(display:grid)1.1.3.3. 应用 1.1.4. 点击图片加背景色1.1.5. 添加一个键盘1.1.6. 日期选择组件 1. 小程序页面布局 - 记账…