Redis --- 第一讲 --- 分布式简单介绍

news2024/9/27 20:36:21

一、认识Redis

定义变量,不就是在内存中存储数据吗?Redis是在分布式系统中,才能发挥威力的。如果只是单机程序。直接通过变量存储数据的方式势必使用Redis更优的选择。由于进程的的隔离性。进程之间通过网络通信,就能共享数据。Redis就是基于网络,可以把自己内存中的变量给别的进程甚至别的主机的进程进行使用。

数据库:MySQL最大的问题在于访问的速度比较慢。很多互联网产品中,对于性能要求是很高的。Redis也可以作为数据库使用,它的特点是非常快。定性的角度,可以知道Redis快很多,但是很难定量衡量。和MySQL相比,最大的劣势,存储空间时有限的。虽然有不少的互联网产品,对于性能要求比较高得,更多的互连网产品对于性能要求没那么高的要求。我们可以把Redis和MySQL结合起来使用。二八原则。但是这种做法使系统的复杂程度大大提升了。而且如果数据发生修改。还涉及到Redis和MySQL之间的数据同步问题。

Redis的初心,最初就是用来作为一个消息中间件(消息队列)的分布式系统下的生产者消费者模型。当前很少会直接使用Redis作为消息中间件的使用,因为业界有很多更专业的消息中间件的使用。

分布式是Redis谈论的重点。

二、分布式系统

单机架构,只有一台服务器,这个服务器负责所有的工作。绝大部分公司的产品都是这种单机架构。哪怕只有一台主机,这一台主机的性能也是很高的。如果业务进一步增长,用户量和数据量都水涨船高,一台主机难以应付的时候,就需要引入更多的主机。

一台主机的硬件资源是有上限的。包括不限于一下几种:CPU,内存,硬盘,网络。服务每次收到一个请求,都是需要消耗上述的一些资源的。如果同一时刻处理的请求多了,此时就导致某个硬件资源不够用了。无论是哪个方面不够用了都可能会导致服务器处理请求的事件变长。甚至处理出错。 

如果我们遇到了服务器资源不够用的场景,采用开源,节流。软件上的优化,对于程序员的水平要求就比较高了。开源,简单粗暴,增加更多的硬件资源。一个主机上面能增加的硬件资源也是有限的。一台主机扩展到极限了,但是还不够,就只能引入多台主机了。不是说新的机器买来就直接可以解决问题了也需要提出对应的调整和适配。一旦引入了多台主机了,咱们的系统就可以称为是分布式系统,引入分布式这是万不得已的,系统的复杂程度会大大提高。

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

请求又增加了,我们的应用服务器又扛不住了,所以我们可以引入更多的应用服务器

 假设有1w个用户请求,有2个应用服务器,此时按照负载均衡的方式,就可以让每个应用服务器承担5K的访问量。用户的请求先到达负载均衡器这里,会有很多的具体的算法。比如轮询。

负载衡器,对于请求量的承担能力,要远超过应用服务器。但是也有可能请求量达到负载均衡器也扛不住了,也是有可能的。引入更多的负载均衡器。

如上面讨论,增加应用服务器,确实能够处理更高的请求量。但是随之存储服务器,要承担的请求量也就更多了。开源方法,数据库读写分离

 实际的应用场景中,读的频率是比写要高的。主服务器是一个写服务器,从服务器可以有多个也就是读服务器。同时从数据库通过负载均衡的方式,让应用服务器进行访问。

数据库天然有个问题,响应速度是更慢的。把数据区分冷热,热点数据放到缓存中,缓存的访问速度往往比数据库要快很多了。

 缓存里面只是放一小部分热点数据,会频繁被访问的数据就是热点数据。20%的数据,能够支持80%的访问量。实际场景的不同会达到一九原则。数据库中存储的仍然是完整的全量数据。

缓存要想快,就要付出代价 =》小!Redis就是作为一个缓存服务器的。缓存服务器帮助数据库服务器负重前行。要想得到一个效果,就要付出一定的代价。

引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也能应对更大的数据量。是否可能会出现一台服务器已经存不下数据了当然会存在!!虽然一个服务器存储的数据量可以达到几十个TB,即使如此也可能会存不下。  如果存储短视频呢。一台主机存不下,就需要多态主机来存储。

 针对数据库进行进一步的拆分,分库分表。本来一个数据库服务器,这个数据库服务器上有多个数据库(指的是逻辑上的数据集合,create database创建的数据库)现在就可以引入多个数据库服务器,每个数据库服务器存储一个或者一部分数据库。如果某个表特别大,大到一台主机存不下,也可以针对表进行拆分。

具体分库分表如何实践,还是要结合实际场景来展开,业务至关重要。技术只是给业务提供支持的。业务决定了技术。

引入微服务架构

之前应用服务器,一个服务器程序里面做了很多的业务这就可能会导致这一个服务器的代码变得越来越复杂,为了更方便于代码得维护,就可以把这样的一个复杂的服务器,拆分成更多的,功能单一的,但是更小的服务器。这个更小的服务器就是微服务。服务器的种类和数量就增加了。注意服务器本质上是在解决人的问题。当应用服务器复杂了势必就需要更多的人来维护了,当人多了,就需要配套的管理把这些人组织好,划分组织结构,分成多个组,每个组分别配套对应的领导进行管理。分成多个组,就需要进行分工,按照功能,拆分成多组微服务,就可以有利于上述人员的组织结构的分配了。引入微服务,解决了人的问题,付出的代价是

1、系统的性能下降,要想保证性能不下降太多。只能引入更多的机器,更多的硬件资源。

拆出来更多的服务,多个功能之间要更依赖,网络通信,网络通信的速度很可能是比硬盘还慢的!

2、系统复杂度程度更高,可用性受到影响

服务器更多了,出现问题的概率就更大了,这就需要一系列的手段,来保证系统的可用性。更丰富的监控报警,以及配套的运维人员。

微服务的优势:

1、解决了人的问题

2、使用微服务,可以更方便功能的复用

3、可以给不同的服务进行不同的部署。

但是微服务并不是终点。

三、其他概念

应用系统:为了完成一整套服务的一个程序或者一组相互配合的程序群。

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

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

集群:多个主机/服务器,协同分配完成一系列的工作,逻辑上的多个主机。

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

中间件:和业务无关的服务,功能更通用的服务。业务无关:数据库,缓存,消息队列等等。

评价指标,可用性:系统整体可用的时间/总的时间。一个系统的第一要务。

响应时间:衡量服务器的性能,越小越好。和具体服务器做的业务密切相关的。

吞吐vs并发:衡量系统请求的能力,衡量性能的一种方式。

小结:

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

2、数据库和应用分离

3、引入负载均衡,应用服务器 =》集群

4、引入读写分离,数据库主从结构

5、引入缓存,冷热数据分离,二八原则。Redis在一个分布式系统中,通常就扮演着缓存这样的角色。

6、分库分表,数据库能够进一步扩展存储空间。

7、引入微服务,从业务上进一步拆分应用服务器。

上述这样的几个演化步骤,只是一个粗略的过程,实际上一个商业项目,真是的演化过程,都是和他的业务发展密切相关的,业务是更重要的,技术只是给业务提供支持的。

所谓的分布式系统,就是想办法引入更多的硬件资源。

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

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

相关文章

keepalived+nginx实现高可用的案例详解(主主模式)

文章目录 前言keepalived主备模式和主主模式有什么区别1. 主备模式(Master-Backup Mode)2. 主主模式(Active-Active Mode 或 Dual Master Mode)主备模式 vs 主主模式 的区别总结: 环境案例实现具体步骤ngx1ngx2验证 前…

【教学类-56-05】数感训练——数字05(指定数字出现次数,速度快)

背景需求: 昨天有客户订购“阿拉伯数字的数感训练” 我查看文件夹,发现前期没有生成过0-50的数字(只研究了学号数感训练的学具) 赶紧用之前写过的代码生成了一份 【教学类-56-01】数感训练——数字01(同样的数字涂色…

猫头虎分享已解决Bug:npm warn old lockfile Could not fetch metadata for yallist@3.1.1

🐯猫头虎分享已解决Bug:npm warn old lockfile Could not fetch metadata for yallist3.1.1 今天有粉丝问猫哥:“🐯猫头虎,我在使用 npm 安装依赖时遇到了一个错误提示 Could not fetch metadata for yallist3.1.1&am…

凿岩机械液压比例多路阀控制器

工程机械应用的BEUEC比例放大器控制比例多路阀主要应用于以下几大类设备中: 1. 挖掘机械:包括挖掘机、挖掘装载机、挖掘船等,主要用于挖掘土壤、煤和矿石等物料。 2. 铲土运输机械:如推土机、铲运机、装载机等,主要用…

亚马逊测评,容易掉评是什么原因,怎么解决

大家好,今天来深入探讨如何有效提升亚马逊测评中的留评率,并解析那些导致评论掉落或难以留下的常见原因,以便采取针对性的策略来优化这一过程。作为卖家,提升留评率无疑是提升产品曝光度和销量的关键一环。 亚马逊测评掉评与留评…

【机器学习】目标分类算法概述

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 目标分类算法概述传统机器学习方法支持向量机(SVM)决策树和随机森林特征提取 基…

docker_阿里云镜像仓库

1.创建个人实例 登录阿里云——控制台——容器镜像服务——创建个人版实例 2.设置密码 设置后可在终端复制上图2测试 [rootserver ~]# sudo docker login --usernameyou_aliyun_name crpi-8y14tvgewmc6tisz.cn-hangzhou.personal.cr.aliyuncs.com Password: WARNING! Your …

Linux环境下安装python

Linux 环境下安装python 以下是在Linux环境下安装Python - 3.9.4.tgz的详细步骤:1. 下载Python - 3.9.4.tgz(如果未下载)2.解压文件3.安装依赖项(如果需要)4.配置和编译5.安装6.创建一个别名(alias&#xf…

中国车主,撑起天猫又一个万亿赛道

"今年双十一,预计会有超过1亿消费者来淘宝天猫汽车类目消费。3~5年之后,天猫汽车有望冲刺为阿里继大服饰、大快消、家装家电等之后又一个GMV(商品成交总额)破万亿的品类。" 淘天集团汽车事业部总经理、天猫养车总裁无封…

UART配置流程

S3C2440A 的通用异步收发器(UART)配有3 个独立异步串行I/O(SIO)端口,每个都可以是基于中断或基于DMA 模式的操作。换句话说,UART 可以通过产生中断或DMA 请求来进行CPU 和UART 之间的数据传输。UART 通过使…

网络安全 DVWA通关指南 DVWA Weak Session IDs(弱会话)

DVWA Weak Session IDs(弱会话) 文章目录 DVWA Weak Session IDs(弱会话)Low LevelMedium LevelHigh LevelImpossible Level 参考文献 WEB 安全靶场通关指南 相关阅读 Brute Force (爆破) Command Injection(命令注入…

Kafka学习笔记(一)Kafka基准测试、幂等性和事务、Java编程操作Kafka

文章目录 前言4 Kafka基准测试4.1 基于1个分区1个副本的基准测试4.2 基于3个分区1个副本的基准测试4.3 基于1个分区3个副本的基准测试5 Java编程操作Kafka5.1 引入依赖5.2 向Kafka发送消息5.3 从Kafka消费消息5.4 异步使用带有回调函数的生产消息6 幂等性6.1 幂等性介绍6.2 Kaf…

【linux】linux中如何通过Logstash处理、结合logrotate分割日志

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

盘点:App 移动自动化测试工具

App移动端测试工具非常多,首先 区分 Android 和 iOS,以及 harmonyos 平台,每个平台下都有自己的自动化测试工具。自动化工具又区分 调试工具、monkey 工具、UI自动化工具。 本文就来盘点以下,当下主流的app自动化测试工具。 Andr…

文档信息提取系统源码分享

文档信息提取检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

客户服务升级指南:如何以细节赢得客户忠诚

在当今这个竞争激烈的市场环境中,客户忠诚度已成为企业生存与发展的关键所在。而要想赢得并维持客户的忠诚,仅凭优质的产品或服务已远远不够,更需要企业在客户服务上下足功夫,从每一个细节入手,打造超越客户期待的服务…

C++简单缓冲区类设计

目录 1.引言 2.静态缓冲区 3.动态缓冲区 4.数据引用类 5.自动数据引用类 6.几种缓冲区的类关系图 7.注意事项 8.完整代码 1.引言 在C中,设计静态和动态缓冲区类时,需要考虑的主要差异在于内存管理的方式。静态缓冲区类通常使用固定大小的内存区域…

【机器学习案列】基于随机森林和xgboost的二手车价格回归预测

一、项目分析 1.1 项目任务 kaggle二手车价格回归预测项目,目的根据各种属性预测二手车的价格。 1.2 评估准则 评估的标准是均方根误差: 1.3 数据介绍 数据连接https://www.kaggle.com/competitions/playground-series-s4e9/data?selecttrain.csv 其…

基于 Java Swing 实现的超级玛丽游戏

一、项目概述 > 这是一个基于 Java Swing 的游戏项目,旨在实现一个支持自定义地图的超级玛丽游戏。 > 游戏画面精美,包含多种功能和亮点,如地图编辑器、不同状态的马里奥、多种怪物和道具等。 二、项目演示 > 地图编辑器 > …

Mac写入U盘文件如何跨平台使用 Mac电脑怎么把U盘文件传送到电脑 mac怎么用u盘拷贝文件

不知道你在使用Mac电脑拷贝文件的时候有没有遇到过无法写入U盘的问题,这通常是由于Mac和Windows之间的兼容问题引起的。下面我将为大家详细介绍Mac写入U盘文件如何跨平台使用以及Mac如何将U盘文件复制到电脑。 一、Mac写入U盘文件如何跨平台使用 在Mac电脑上将文件…