初始Redis 分布式结构的发展演变

目录

Redis的特点和使用场景

分布式系统的引入

单机系统

分布式系统 

应用服务器的增多(处理更多的请求)

数据库读写分离(数据服务器的增多)

引入缓存

应对更大的数据量 

业务拆分:微服务


Redis的特点和使用场景

我们先来回顾下我们之前学过的MySQL

mysql的数据是存储到硬盘上的,他的读取速度比较慢,但是容量大

而Redis则是使用了内存,数据是在内存上,读取速度比较快,但是容量小。

这里补充一点:

我们一开始学习编程,所了解的变量是存储找内存中。那么既然都是存储到内存中,我们干嘛还要弄一个Redis呢?

是这样的——Redis主要是用在分布式系统上的,他可以实现各个进程间数据的通讯,共享,甚至不同主机上的进程间数据的互相访问 

分布式系统的引入

单机系统

下面是一个单机架构,只有一台服务器,这个服务器负责处理所有的事情

我们之前写的java--web类项目,属于是HTTP服务器(处理前端发来的请求)

对与数据来说

我们上面所说的web程序,springboot属于是HTTP服务器(属于Mysql的客户端), 向Mysql服务器发生请求(查询数据)

而MySQL是一个客户端服务器结构的程序,是作为数据的服务器,他的本体就是Mysql服务器(用来存储和组织数据)

分布式系统 

虽然对于现在的计算机硬件来说,哪怕只有一台主机,这一台主机也是可以支持非常高的并发 & 非常大的数据存储。

但是如果业务进一步增长,用户量和数据量继续增多,当一台主机难以应付的时候,就需要引入更多的主机,引入更多的硬件资源

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

上面就是一个最简单的分布式的结构——应用服务和数据库服务分离 

应用服务器的增多(处理更多的请求)

但是因为应用服务器可能会比较吃CPU和内存。

比如要同时要处理的应用请求过多,把CPU和内存给吃没了,就会出现相应的问题

这个时候,我们就需要引入更多的应用服务器,来解决上述问题

这里的应用服务器,可能是两个,也可能是多个。用户的请求先到达负载均衡器/网关服务器,将任务分配给下面的多个应用服务器

这里我们介绍下负载均衡器

负载均衡器的请求承受能力,大大高于应用服务器。(负载均衡服务器主要用于任务的分配,分配任务一般不会消耗太多的资源,任务的执行——也就是应用服务器消耗的资源会多一些)

当然如果系统的请求实在太多,负载均衡器的压力也过大的时候,我们这里可以引入更多的负载均衡服务器来承受这增多的访问量

这里需要注意的是,当我们的服务器增多了后,管理成本也会变高,系统也变得越来越复杂,出现问题的概率也随之提升 

数据库读写分离(数据服务器的增多)

这里面有一个主从结构

在实际应用场景中,读的频率是比写的频率要高的 

那么我们就可以有多个从服务器——一主多从

引入缓存

数据库天然有一个问题,相应速度是相对更慢的

为了解决这个问题,我们可以把数据区分 ”冷热“, 热点数据(使用频繁的数据)放到缓存中,缓存的访问速度往往要比数据库要快很多!!!

 

我们的redis主要就是应用在缓存中,虽然存的数据少,但速度快(存的也都是热点数据)

另外因为二八原则, 缓存服务器中的热点数据可以应对80%以上的请求。因此缓存服务器的使用,不仅提高了访问速度,还缓解了其他数据服务器的压力。

 虽然引入缓存这样的好处,但同时也会带来一些问题,比如数据一致性(数据同步)问题。

应对更大的数据量 

我们上面不管是引入更多的应用服务器,还是数据库读写分离、引入缓存,都是为了应对更高的请求量。但是对于一个完善的系统来说我们不光要能够去应对更高的请求量,也还要能够应对更大的数据量

业务拆分:微服务

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue重修之Vuex【下部】

文章目录 版权声明Vuex的模块化获取Vuex模块内state数据获取Vuex模块内getters数据获取Vuex模块内mutations方法获取模块内的actions方法总结 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利…

浮动面试题

浮动元素特点:

B-3:Web安全之综合渗透测试

B-3:Web安全之综合渗透测试 任务环境说明: 服务器场景:Server2104(关闭链接) 服务器场景用户名、密码:未知 1.通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为FLAG值提交; 通过访问IP/1,查看源代码发现flagishere,访问后发现什么也没…

Kafka - 异步/同步发送API

文章目录 异步发送普通异步发送异步发送流程Code 带回调函数的异步发送带回调函数的异步发送流程Code 同步发送API 异步发送 普通异步发送 需求&#xff1a;创建Kafka生产者&#xff0c;采用异步的方式发送到Kafka broker 异步发送流程 Code <!-- https://mvnrepository…

【STM32】HAL库ADC多通道精准测量(采用VREFINT内部参考电压)

【STM32】HAL库ADC多通道精准测量&#xff08;采用VREFINT内部参考电压&#xff09; 文章目录 多通道测量VREFINTADC采样周期多通道配置 附录&#xff1a;Cortex-M架构的SysTick系统定时器精准延时和MCU位带操作SysTick系统定时器精准延时延时函数阻塞延时非阻塞延时 位带操作…

热点不热!如何修复笔记本电脑未连接到移动热点的问题

当你远离常规Wi-Fi时,移动热点是让你的笔记本电脑上网的关键,但当它没有按计划运行时,你会怎么办?以下是Windows笔记本电脑无法连接到移动热点时的几种修复方法。 为什么我的笔记本电脑没有连接到我的热点 由于你的笔记本电脑正试图连接到另一个有限制和可能存在问题的设…

docker在java项目中打成tar包

docker在java项目中打成tar包 1、首先安装一个docker desktop 2、mvn install项目后&#xff0c;建立一个自己的dockerfile 这里我以我的代码举例&#xff0c;from 镜像&#xff0c;这里你也能打包好一个镜像的基础上&#xff0c;from打好的镜像&#xff0c;这里我们用openj…

黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman

文章目录 1、为什么要使用Postman&#xff1f;2、什么是Postman&#xff1f; 1、为什么要使用Postman&#xff1f; 目前我们开发项目大都是前后端分离项目&#xff0c;前端采用h5cssjsvue基于nodejs&#xff0c;后端采用java、SpringBoot、SSM&#xff0c;大型项目采用SpringC…

Fiddler抓包VSCode和探索

前言&#xff1a; 最近在使用 VSCode 调试 web 程序时&#xff0c;遇到一些问题&#xff0c;当时不知道如何是好。所以决定抓看来看一看&#xff0c;然后一顿操作猛如虎&#xff0c;成功安装了抓包软件 – Fiddler Classic。我并没有使用 Postman 这种重量级的 HTTP 测试软件&a…

JavaScript-2-菜鸟教程

字符串 可以使用 索引 位置访问字符串中的每个字符 可以使用内置属性 length 来计算字符串的长度 var txt "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; var sln txt.length;<script>var x "John"; // x是一个字符串// 使用 new 关键字将字符…

APP破解去广告

1.修改图标和名称 名称直接改 找到图标在进去把他替换掉 2.修改app包名实现分身 修改包名实现app分身_Tian翊的博客-CSDN博客 3.修改资源去广告 安卓逆向006之修改APK资源去广告_修改安装包去除app内广告-CSDN博客 打开模拟器后在cmd命令行输入adb devices连接上 在模拟器中…

【Java 进阶篇】Java Request 原理详解

在网络应用开发中&#xff0c;HTTP请求是一项常见而关键的任务。当我们使用Java编写网络应用时&#xff0c;了解HTTP请求的工作原理变得至关重要。本文将详细介绍Java中HTTP请求的原理&#xff0c;包括请求的结构、发送请求的方法以及处理请求的过程。 HTTP请求的基本结构 HT…

薛定谔的猫重出江湖?法国初创公司AliceBob研发猫态量子比特

总部位于巴黎的初创公司Alice&Bob使用超导芯片的两个相反的量子态&#xff08;他们称之为“猫态量子比特”芯片&#xff09;来帮助开发量子计算的不同自旋方式。&#xff08;图片来源&#xff1a;网络&#xff09; 有的人认为&#xff0c;构建量子计算机的模块模仿了著名的…

用友U8SMSProxy -SQL注入漏洞

0x01 漏洞介绍 用友GRP-U8 R10政务管理软件是由用友政务公司基于云技术所推出的第十代政务产品。这款产品继承了用友R9、R9i、U8等行政事业版产品的各项优点&#xff0c;并融合了全国广大用户的最佳实践应用。它旨在为政府财政部门、社保部门、卫生部门、教育部门、民政部门、党…

代码随想录打卡第五十天|198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

198.打家劫舍 题目&#xff1a; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 …

hibernate源码(1)--- schema创建

sessionFactory 配置项&#xff1a; hibernate的核心是sessionFactory&#xff0c;那我们看看如何构建session Factory。 参考官网&#xff1a; plugins {id("java") } group "com.atai.hibernatespy" version "1.0-SNAPSHOT" repositories…

如何在《阴阳师》游戏中使用单机单窗口软件工具进行防封技巧?

如何在《阴阳师》游戏中使用单机单窗口软件工具进行防封技巧&#xff1f; 首先&#xff0c;定义在《阴阳师》游戏中&#xff0c;使用单机单窗口软件工具进行防封技巧涉及到如何安装和配置软件&#xff0c;以及如何在游戏中应用这些技巧。 我曾经使用过在《阴阳师》游戏中防封…

threejs(6)-操控物体实现家居编辑器

// 导入threejs import * as THREE from "three"; // 导入轨道控制器 import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; // 导入lil.gui import { GUI } from "three/examples/jsm/libs/lil-gui.module.min.js";…

冲刺学习-MySQL-常见问题

MySQL索引的最左原则 联合索引的说明 建立三个字段的联合索引联合索引&#xff08;a&#xff0c;b&#xff0c;c&#xff09;相当于建立了索引&#xff1a;&#xff08;a&#xff09;&#xff0c;&#xff08;a&#xff0c;b&#xff09;&#xff0c;&#xff08;a&#xff0…

Win安装protobuf和IDEA使用protobuf插件

一、Win安装protobuf 1、下载编译器 protobuf下载地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 选择自己需要的版本下载&#xff0c;这里下载的是 protoc-3.19.1-win64.zip&#xff0c;下载之后进行解压即可。 2、配置环境变量 path 系统变量中添加…