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)这个非量化目标简要表达系统的追求

相关推荐
冉冰学姐1 天前
SSM装修服务网站5ff59(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·ssm 框架·装修服务网站
库库8391 天前
Redis分布式锁、Redisson及Redis红锁知识点总结
数据库·redis·分布式
沧澜sincerely1 天前
Redis 缓存模式与注解缓存
数据库·redis·缓存
Elastic 中国社区官方博客1 天前
Elasticsearch 推理 API 增加了开放的可定制服务
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
nzxzn1 天前
MYSQL第二次作业
数据库·mysql
核桃杏仁粉1 天前
excel拼接数据库
数据库·oracle·excel
TiAmo zhang1 天前
SQL Server 2019实验 │ 设计数据库的完整性
数据库·sqlserver
NO.10241 天前
本地缓存怎么在分布式环境下保持一致性
分布式·缓存
冻咸鱼1 天前
MySQL的CRUD
数据库·mysql·oracle
Funny Valentine-js1 天前
团队作业——概要设计和数据库设计
数据库