高性能高并发网站架构,教你搭建Redis5缓存集群

作者&投稿:蒙利 (若有异议请与网页底部的电邮联系)
一、Redis集群介绍

Redis真的是一个优秀的技术,它是一种key-value形式的NoSQL内存数据库,由ANSI C编写,遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。 Redis最大的特性是它会将所有数据都放在内存中,所以读写速度性能非常好。Redis是基于内存进行操作的,性能较高,可以很好的在一定程度上解决网站一瞬间的并发量,例如商品抢购秒杀等活动。

网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,需要快速响应,前端发送请求、后端和mysql数据库交互,进行sql查询操作,读写比较慢,这时候引入Redis ,把从mysql 的数据缓存到Redis 中,下次读取时候性能就会提高;当然,它也支持将内存中的数据以快照和日志的形式持久化到硬盘,这样即使在断电、机器故障等异常情况发生时数据也不会丢失,Redis能从硬盘中恢复快照数据到内存中。

Redis 发布了稳定版本的 5.0 版本,放弃 Ruby的集群方式,改用 C语言编写的 redis-cli的方式,是集群的构建方式复杂度大大降低。Redis-Cluster集群采用无中心结构,每个节点保存数据和整个集群状态,每个节点都和其他所有节点连接。

为了保证数据的高可用性,加入了主从模式,一个主节点对应一个或多个从节点,主节点提供数据存取,从节点则是从主节点拉取数据备份,当这个主节点挂掉后,就会有这个从节点选取一个来充当主节点,从而保证集群不会挂掉。

redis-cluster投票:容错,投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超过(cluster-node-timeout),认为当前master节点挂掉。

集群中至少应该有奇数个节点,所以至少有三个节点,每个节点至少有一个备份节点,所以下面使用6节点(主节点、备份节点由redis-cluster集群确定)。6个节点分布在一台机器上,采用三主三从的模式。实际应用中,最好用多台机器,比如说6个节点分布到3台机器上,redis在建立集群时为自动的将主从节点进行不同机器的分配。

二、单机redis模式

下载源码redis5.0并解压编译

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar xzf redis-5.0.0.tar.gz

cd redis-5.0.0

make

redis前端启动需要改成后台启动.

修改redis.conf文件,将daemonize no -> daemonize yes

vim redis.conf

启动redis

/www/server/redis/src/redis-server /www/server/redis/redis.conf

查看redis是否在运行

ps aux|grep redis

现在是单机redis模式完成。

三、redis集群模式:

1.创建6个Redis配置文件

cd /usr/local/

mkdir redis_cluster //创建集群目录

cd redis_cluster

mkdir 7000 7001 7002 7003 7004 7005//分别代表6个节点

其对应端口 7000 7001 7002 70037004 7005

2.复制配置文件到各个目录

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7000/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7001/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7002/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7003/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7004/

cp /www/server/redis/redis.conf /usr/local/redis_cluster/7005/ 

3.分别修改配置文件

vim /usr/local/redis_cluster/7000/redis.conf

vim /usr/local/redis_cluster/7001/redis.conf

vim /usr/local/redis_cluster/7002/redis.conf

vim /usr/local/redis_cluster/7003/redis.conf

vim /usr/local/redis_cluster/7004/redis.conf

vim /usr/local/redis_cluster/7005/redis.conf

如下

port 7000 #端口

cluster-enabled yes #启用集群模式

cluster-config-file nodes_7000.conf #集群的配置 配置文件首次启动自动生成

cluster-node-timeout 5000 #超时时间 5秒

appendonly yes #aof日志开启 它会每次写操作都记录一条日志

daemonize yes #后台运行

protected-mode no #非保护模式

pidfile /var/run/redis_7000.pid

//下面可以不写

#若设置密码,master和slave需同时配置下面两个参数:

masterauth "jijiji" #连接master的密码

requirepass "jijiji" #自己的密码 

cluster-config-file,port,pidfile对应数字

4.启动节点

cd /www/server/redis/src/

./redis-server /usr/local/redis_cluster/7000/redis.conf

./redis-server /usr/local/redis_cluster/7001/redis.conf

./redis-server /usr/local/redis_cluster/7002/redis.conf

./redis-server /usr/local/redis_cluster/7003/redis.conf

./redis-server /usr/local/redis_cluster/7004/redis.conf

./redis-server /usr/local/redis_cluster/7005/redis.conf

查看redis运行

ps aux|grep redis

5.启动集群

/www/server/redis/src/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1

这里使用的命令是create,因为我们要创建一个新的集群。 该选项--cluster-replicas 1意味着我们希望每个创建的主服务器都有一个从服。

输入yes

至此,Reids5 集群搭建完成。

6.检查Reids5集群状态

可以执行redis-cli --cluster check host:port检查集群状态slots详细分配。

redis-cli --cluster info 127.0.0.1:7000

7.停止Reids5集群

(1).因为Redis可以妥善处理SIGTERM信号,所以直接kill -9也是可以的,可以同时kill多个,然后再依次启动。

kill -9 PID PID PID

(2).redis5 提供了关闭集群的工具,修改文件: /www/server/redis/utils/create-cluster/create-cluster

端口PROT设置为6999,NODES为6,工具会生成 7000-7005 六个节点 用于操作。

修改后,执行如下命令关闭集群:

/www/server/redis/utils/create-cluster/create-cluster stop

重新启动集群:

/www/server/redis/utils/create-cluster/create-cluster start 

8.帮助信息

执行redis-cli --cluster help,查看更多帮助信息

redis-cli --cluster help

吉海波

~

【超详细】Apache Durid从入门到安装详细教程
答:Apache Druid,这款强大的分析平台,融合了时间序列分析、数据仓库和全文检索,专为实时性能和高并发查询而生。它以云原生、流式处理、易集成、超速性能和灵活部署等特点,广泛适用于各种复杂场景。1. 高性能实时分析Druid的核心优势在于其专为高效查询和实时数据摄入设计的架构,强大的用户界面和并发处理能力...

美团面试题:如何设计负载均衡架构支撑千万级用户的高并发访问?
答:如果集群系统的真实服务器具有相近的系统性能,采用"最小连接"调度算法可以较好地均衡负载。 d) 加权最少链接(Weighted Least Connections) Wlc 在集群系统中的服务器性能差异较大的情况下,调度器采用"加权最少链接"调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真...

用PHP 编写支持高并发的网站,需要做什么处理
答:一般来说,解决WEB高并发的有效手段都是采用可线性扩展的多层分布式架构,我生产项目的架构是这样的,就在这里抛砖引玉一下。Webserver (Nginx) :这一层是可以轻松分布式部署的,结合智能DNS解析可以简易地防止单点故障、实现区域访问加速,结合LVS很容易实现负载均衡。这一层主要是负责处理静态请求和转发...

如何对门户网站进行架构??
答:所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。大型网站架构,比如门户网站的架构。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据...

如何对门户网站进行架构??
答:所采用的技术更是涉及面非常广,从硬件到软件、编程语言、数据库、WebServer、防火墙等各个领域都有了很高的要求,已经不是原来简单的html静态网站所能比拟的。大型网站架构,比如门户网站的架构。在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节:使用高性能的服务器、高性能的数据...

华为技术架构师分享:高并发场景下缓存处理的一些思路
答:2.在并发场景发生前,先手动触发请求,将缓存都存储起来,以减少后期请求对database的第一次查询的压力。数据过期时间设置尽量分散开来,不要让数据出现同一时间段出现缓存过期的情况。3.从缓存可用性的角度来思考,避免缓存出现单点故障的问题,可以结合使用 主从+哨兵的模式来搭建缓存架构,但是这种模式...

如何处理大量数据高并发大流量并发操作方案
答:镜像是大型网站常采用的提高性能和数据安全性的方式,镜像的技术可以解决不同网络接入商和地域带来的用户访问速度差异,比如ChinaNet和EduNet之间的差异就促使了很多网站在教育网内搭建镜像站点,数据进行定时更新或者实时更新。在镜像的细节技术方面,这里不阐述太深,有很多专业的现成的解决架构和产品可选。...

Serverless架构微服务架构分布式架构单体架构四种软件架构详解_百度...
答:该架构相对于单体架构来说,这种架构提供了负载均衡的能力,大大提高了系统负载能力,解决了网站高并发的...目前,例如登陆鉴权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发...到目前为止微服务的技术相对于二三年前已经比较成熟,第四种架构将是未来发展的一种趋势。如果你喜欢我...

海量高并发处理网站的负载均衡如何设计
答:因此,当我们抛开网络的传输质量、带宽拥塞程度等外界因素来看的话,又不得不正视一个问题--影响网站访问效果的最大瓶颈还是在于源数据节点自身的处理性能。以电子商务网站这种典型的大型高并发访问量的线上业务为例,其性能瓶颈最容易出现在联机事务处理(OLTP)...

Serverless架构微服务架构分布式架构单体架构四种软件架构详解_百度...
答:该架构相对于单体架构来说,这种架构提供了负载均衡的能力,大大提高了系统负载能力,解决了网站高并发的...目前,例如登陆鉴权服务,云数据库服务等第三方服务在安全性、可用性、性能方面都进行了大量优化,开发...到目前为止微服务的技术相对于二三年前已经比较成熟,第四种架构将是未来发展的一种趋势。如果你喜欢我...