一、初识Redis与分布式系统

news2024/11/20 7:28:58

目录

一、Redis应用

二、实现方式

三、Redis应用

四、分布式系统

五、分布式系统实现

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

2、引入负载均衡,应用服务器集群(解决高并发)

3、引入读写分离,数据库主从结构(解决高并发)

4、引入缓存,冷热数据分离(解决高并发)

5、分库分表(解决高数据量)

6、引入微服务架构(从业务上进一步拆分应用服务器)

六、总结


一、Redis应用

Redis是在内存中存储数据,主要应用于分布式系统,如果只是单机程序,直接通过变量存储数据的方式是比Redis更优的选择

二、实现方式

由于进程间隔离性,进程间的通信基于网络。Redis就是基于网络,可以把自己内存中的变量给别的进程,甚至别的主机的进程进行使用。

三、Redis应用

1、数据库(database)

MySQL最大的问题在于访问速度比较慢,因为数据存储在硬盘上。Redis数据存储在内存上,速度快了很多。但是Redis和MySQL的业务场景不一样,没办法定量的衡量到底快多少。Redis最大的劣势是存储空间是有限的。

2、缓存(cache)

将Redis和MySQL结合起来,又打又快。Redis充当缓存的角色,劣势是系统的复杂度大大提升了,而且如果数据发生修改。还涉及到Redis与MySQL之间的数据同步问题。

3、streaming engine

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

四、分布式系统

1、单机架构

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

2、分布式

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

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

解决以上问题,有下面两种方法:

(1)节流

软件上优化,通过性能测试。找到是哪个环节出现了瓶颈,再去对症下药。

(2)开源(简单粗暴)

增加更多的硬件资源,但是一个主机上面能增加的硬件资源也是有限的,取决于主板的扩展能力,也是有上限的。当一台主机扩展到上限了,就只能引入多台主机了,并且要在软件上做出相应的调整和适配。一旦引入多个主机了,咱们的系统就可以被称为“分布式系统”

五、分布式系统实现

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

2、引入负载均衡,应用服务器集群(解决高并发)

引入更多的服务器节点(请求量和数据量进一步增加)

对于负载均衡器来说,有很多的负载均衡具体的算法,需要结合具体的业务场景。

3、引入读写分离,数据库主从结构(解决高并发)

一个数据库节点作为主节点,其他N个数据库节点作为从节点。主节点负责写数据,从节点负责读数据。主节点需要把修改过的数据同步给从节点。

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

4、引入缓存,冷热数据分离(解决高并发)

数据库天然有个问题:相应速度很慢。把数据区分“冷热”,热点数据放到缓存中。

5、分库分表(解决高数据量)

引入分布式系统,不光要能够去应对更高的请求量(并发量),同时也要能应对更大的数据量。当数据量很大时,就需要多台主机来存储。

6、引入微服务架构(从业务上进一步拆分应用服务器)

引入微服务,解决了管理人的问题,但是系统性能会下降。因为是网络间通信,比进程间通信速度大大降低。要想保证性能不下降的太多,只能引入更多的机器,更多的硬件资源。并且系统复杂度更高,可用性收到影响,出现问题的概率就更大了。

微服务的优势:

解决了人的问题;

使用微服务,可以更方便的完成功能的复用;

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

六、总结

一些概念:

1、应用(Application)/ 系统(System)

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

2、模块(Module)/ 组件(Component)

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

3、分布式(Distributed)

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

4、集群(Cluster)

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

5、主(Master)/ 从(Slave)

多个服务器节点,其中一个是主,另外的是从。从节点的数据要从主节点这里同步过来。

6、中间件(Middleware)

和业务无关的服务(功能更通用的服务)

例如:

数据库

缓存

消息队列

.......

7、可用性(Availability)

系统整体可用时间  /  总的时间   是一个系统的第一要务

8、 响应时长(衡量服务器的性能)

9、吞吐(衡量系统处理请求的能力)

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

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

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

相关文章

如何在iPhone设备中查看崩溃日志

​ 目录 如何在iPhone设备中查看崩溃日志 摘要 引言 导致iPhone设备崩溃的主要原因是什么? 使用克魔助手查看iPhone设备中的崩溃日志 奔溃日志分析 总结 摘要 本文介绍了如何在iPhone设备中查看崩溃日志,以便调查崩溃的原因。我们将展示三种不同的…

流媒体学习之路(WebRTC)——GCC分析(4)

流媒体学习之路(WebRTC)——GCC分析(4) —— 我正在的github给大家开发一个用于做实验的项目 —— github.com/qw225967/Bifrost目标:可以让大家熟悉各类Qos能力、带宽估计能力,提供每个环节关键参数调节接口并实现一个json全配置…

【Java并发】深入浅出 synchronized关键词原理-上

一个问题的思考 建设我们有两个线程,一个进行5000次的相加操作,另一个进行5000次的减操作。那么最终结果是多少 package com.jia.syn;import java.util.concurrent.TimeUnit;/*** author qxlx* date 2024/1/2 10:08 PM*/ public class SynTest {privat…

使用Vue3开发学生管理系统模板1

环境搭建 通过解压之前《Vue3开发后台管理系统模板》的代码&#xff0c;我们能够得到用户增删改查的页面&#xff0c;我们基于用户增删改查的页面做进一步的优化。 创建学生增删改查页面 第一步&#xff1a;复制用户增删改查页面&#xff0c;重命名为StudentCRUD.vue <…

新闻稿发布:媒体重要还是价格重要

在当今信息爆炸的数字时代&#xff0c;企业推广与品牌塑造不可或缺的一环就是新闻稿发布。新闻稿是一种通过媒体渠道传递企业信息、宣传品牌、事件或产品新闻的文本形式。发布新闻稿的过程旨在将企业的声音传递给更广泛的受众&#xff0c;借助媒体平台实现品牌故事的广泛传播。…

exec、execFile、fork、spawn的区别与使用场景

在Node.js中&#xff0c;通过子进程可以实现并行执行任务&#xff0c;处理复杂的操作&#xff0c;以及与外部命令或文件进行交互。Node.js提供了多种子进程创建方法&#xff0c;包括exec、execFile、fork和spawn。本文将对这些方法进行比较&#xff0c;并介绍它们的适用场景和示…

【深度学习-基础学习】Transformer 笔记

本篇文章学习总结 李宏毅 2021 Spring 课程中关于 Transformer 相关的内容。课程链接以及PPT&#xff1a;李宏毅Spring2021ML这篇Blog需要Self-Attention为前置知识。 Transfomer 简介 Transfomer 架构主要是用来解决 Seq2Seq 问题的&#xff0c;也就是 Sequence to Sequence…

大数据StarRocks(一) StarRocks概述

1 StarRocks介绍 StarRocks是新一代极速全场景MPP(Massively Parallel Processing)数据库&#xff0c;它充分吸收关系型OLAP数据库和分布式存储系统在大数据时代的优秀研究成果&#xff0c;在业界实践的基础上&#xff0c;进一步改进优化、升级架构&#xff0c;并增添了众多全…

NSSCTF 1zjs

开启环境: 搞就完事了,别玩魔法! 源码打开 点击访问:./dist/index.umd.js" 搜索php,找到23条相关的,注意到有一个特别的信息: PERFORMANCE OF THIS SOFTWARE.Your gift just take it : /fk3f1ag.php 访问: node4.anna.nssctf.cn:28325/fk3f1ag.php 得到这样: ([![]…

【hyperledger-fabric】部署和安装

简介 对hyperledger-fabric进行安装&#xff0c;话不多说&#xff0c;直接开干。但是需要申明一点&#xff0c;也就是本文章全程是开着加速器进行的资源操作&#xff0c;所以对于没有开加速器的情况可能会由于网络原因导致下载资源失败。 资料提供 1.官方部署文档在此&#…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法&#xff0c;每种方法都给出了具体实例&#xff0c;前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例&#xff0c;本文介绍 D-Bus…

mysql 条件位运算实现多值存储

一、多值存储 mysql 条件位运算位运算实现多值存储&#xff0c;方法适合数据范围有限&#xff0c;且不会变更在业务上往往会出现多选的情况&#xff0c;例&#xff1a;选择 周一 至 周日 随意组合&#xff1b; 数据在设计时就会如何去储存&#xff1f; 一种是一般是在储存是以…

ASP.NET Core AOT

Native AOT 最初在 .NET 7 中引入&#xff0c;在即将发布的 .NET 8 版本中可以与 ASP.NET Core 一起使用。在这篇文章中&#xff0c;我们从总体角度审视其优点和缺点&#xff0c;并进行测量以量化不同平台上的改进。 源代码&#xff1a;https://download.csdn.net/download/he…

MATLAB中xcorr函数用法

目录 语法 说明 示例 两个向量的互相关 向量的自相关 归一化的互相关 xcorr函数的功能是返回互相关关系。 语法 r xcorr(x,y) r xcorr(x) r xcorr(___,maxlag) r xcorr(___,scaleopt) [r,lags] xcorr(___) 说明 r xcorr(x,y) 返回两个离散时间序列的互相关。互相…

SpringBoot整合ElasticSearch实现CRUD操作

本文来说下SpringBoot整合ES实现CRUD操作 文章目录 概述项目搭建 概述 SpringBoot支持两种技术和es交互。一种的jest&#xff0c;还有一种就是SpringData-ElasticSearch。根据引入的依赖不同而选择不同的技术。反正作为spring全家桶&#xff0c;目前是以springdata为主流使用技…

uniapp中uview组件丰富的Code 验证码输入框的使用方法

目录 基本使用 #自定义提示语 #保持倒计时 API #Props #Methods #Event 基本使用 通过ref获取组件对象&#xff0c;再执行后面的操作&#xff0c;见下方示例。 通过seconds设置需要倒计的秒数(默认60)通过ref调用组件内部的start方法&#xff0c;开始倒计时通过监听cha…

在 Oracle 数据库表中加载多个数据文件

在本文中&#xff0c;我将展示 SQL 加载器 Unix 脚本实用程序的强大功能&#xff0c;其中 SQL 加载器可以使用自动 shell 脚本加载多个数据文件。这在处理大量数据以及需要将数据从一个系统移动到另一个系统时非常有用。 它适合涉及大量历史数据的迁移项目。那么就不可能为每…

跟着cherno手搓游戏引擎【2】:日志系统spdlog和premake的使用

配置&#xff1a; 日志库文件github&#xff1a; GitHub - gabime/spdlog: Fast C logging library. 新建vendor文件夹 将下载好的spdlog放入 配置YOTOEngine的附加包含目录&#xff1a; 配置Sandbox的附加包含目录&#xff1a; 包装spdlog&#xff1a; 在YOTO文件夹下创建…

ORACLE Primavera P6, Unifier v23.12 系统分享

引言 根据上周的计划&#xff0c;我近日简单制作了一个基于ORACLE Primavera P6 EPPM 以及Unifier 最新版23.12的虚拟机演示环境&#xff0c;里面包括了p6 和 unifier的全套系统服务 此虚拟系统环境仅用于演示、培训和测试目的。如要在生产环境中使用此虚拟机&#xff0c;请您…

计算机毕业设计 SpringBoot的停车场管理系统 Javaweb项目 Java实战项目 前后端分离 文档报告 代码讲解 安装调试

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…