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

相关推荐
会飞的Anthony1 分钟前
数据库优化实战分享:高频场景下的性能调优技巧与案例解析
数据库
潘yi.21 分钟前
Redis哨兵模式
数据库·redis·缓存
行止643 分钟前
MySQL主从复制与读写分离
linux·数据库·mysql
瀚海澜生1 小时前
redis系列(1)——redis高效的本质:基础键值对的组织和基础数据结构
redis
努力学习的小廉1 小时前
我爱学算法之—— 前缀和(中)
开发语言·redis·算法
Htht1111 小时前
【Qt】之【Get√】【Bug】通过值捕获(或 const 引用捕获)传进 lambda,会默认复制成 const
数据库·bug
一棵树长得超出它自己2 小时前
数据库系统学习
数据库
小袁搬码2 小时前
PLSQLDeveloper配置OracleInstantClient连接Oracle数据库
数据库·oracle·pl/sqldeveloper
多多*2 小时前
基于rpc框架Dubbo实现的微服务转发实战
java·开发语言·前端·redis·职场和发展·蓝桥杯·safari