当前位置: 首页 > news >正文

Redis—01—分布式系统

  一、Redis初识

Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。                 

                                                                                                                      ——>摘自Redis中文网

相较于MySql,Redis的最大特点就是更快                               Redis - The Real-time Data Platform                                            

在之前的学习中,定义变量是通过变量存储的方式,而Redis是在内存中存储数据

在分布式系统中,Redis更具优势

Redis基于网络,将自己内存中的数据给别的进程(主机)使用      (进程的隔离性)

二、分布式系统

1.单机架构

应用程序+数据库服务器

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

应用程序:是程序员写的各种代码(服务器程序)

Mysql:是一个客户端服务器结构的程序,本体是Mysql服务器(存储和处理数据的部分)

2.数据库和应用分离

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

应用服务:里面可能会包含很多业务逻辑,可能会很吃CPU和内存

数据库服务器:需要更大的硬盘空间,更快的访问速度

3.引入负载均衡

通过负载均衡,把请求比较均匀得分发给集群中的每个应用服务器

负载均衡器可以控制着多个应用服务器

用户的请求,先到达负载均衡的/网关服务器,在按照算法分发给具体的应用服务器

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

一个数据库节点作为主节点,其他N个数据库节点作为从节点

主节点负责写数据,从节点负责读数据

(主节点需要把修改过的数据同步给从节点)

主服务器一般是一个,从服务器可以是多个

同时从数据库通过负载均衡的方式,让应用服务器进行访问

5.引入缓存,冷热数据分离

进一步提升了服务器针对请求的处理能力

数据库天然有个问题,响应速度较慢

把数据区分“冷热”,热点数据放到缓存里,缓存的访问速度往往比数据库要快得多

此时,存储数据库存储的仍然是完整的数据

6.引入分库分表

引入分布式系统,不仅要应对高请求量(并发量),同时也要应对更大的数据量

如果一台主机存储不下,就需要多台主机来存储  ——>     针对数据库进一步拆分(分库分表)

可以引入多个数据库服务器,每个数据库服务器存储一个或一部分数据库(也可以继续拆分表)

7.引入微服务

从业务功能的角度,把应用服务器,拆分成更多的功能更单一,更简单,更小的服务器

为了方便维护,可以把一个复杂的服务器,拆分成更多的,功能单一的,更小的服务器

三、总结

这里对一些比较重要的概念在进行再介绍:

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

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

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

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

3)分布式(Distributed)

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

4)集群(Cluster)

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

5)主(Master)/ 从(Slave)

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

6)中间件(Middleware)

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

1. 数据库

2. 缓存

3. 消息队列

...

7)可用性(Availability)

考察单位时间段内,系统可以正常提供服务的概率/期望

平时只是⽤⾼可⽤(High Availability HA)这个非量化⽬标简要表达我们系统的追求

8)响应时⻓(Response Time)
用户完成输入到系统给出用户反应的时长
9) 吞吐(Throughput)vs 并发(Concurrent)
吞吐考察单位时间段内,系统成功处理的请求的数量。并发指系统同⼀时刻⽀持的请求最高量
平时⽤高并发(Hight Concurrnet)这个非量化目标简要表达系统的追求

相关文章:

  • 使用 Docker 部署 RabbitMQ 并实现数据持久化
  • Kubernetes 的正式安装
  • 【数分】Numpy入门及进阶(四)
  • 数据集路径出错.yaml‘ images not found , missing path
  • 【Java线程基础操作详解】
  • SpringBoot3—场景整合:AOT
  • [LeetCode]day34 347.前k个高频元素
  • 使用开源OPUS-MT模型进行文本翻译(python)
  • android中activity1和activity2中接收定时消息
  • (C/S)架构、(B/S)架构
  • 粉尘环境下的智能生产革命 ——助力矿山行业实现高效自动化作业
  • 第九篇《行军篇》
  • 设计模式-单例模式
  • 【Javascript】计算器(Calculator)网页设计案例
  • NVIDIA Jetson Nano的国产替代,基于算能BM1684X+FPGA+AI算力盒子,支持deepseek边缘部署
  • 【Python项目】基于深度学习的电影评论情感分析系统
  • 机械臂路径规划方法综述(一)
  • 机器学习中的线性代数:奇异值分解 SVD
  • 汇编点亮LED
  • python文本处理openpyxl库安装与使用
  • 中国首颗地质行业小卫星“浙地一号”成功发射
  • 茅台总经理到访五粮液:面对白酒行业周期性调整,需要团结一心的合力
  • 爬坡难下坡险,居民出行难题如何解?
  • 俄乌谈判开始
  • 上海国际碳中和博览会下月举办,首次打造民营经济专区
  • “16+8”“生酮饮食”,网红减肥法究竟靠谱吗?