Redis单机集群,2024年Java大厂面试

1、哨兵为什么要对所有服务器监控

因为哨兵要知道哪些服务器挂掉,如果主服务器挂掉,就需要进行选举,选出一台从服务器替代主服务器(自动切换主从),如果从服务器挂掉,选举时就不会考虑该从服务器,也就是主要执行的工作是状态检测和故障切换,不需要进行人工切换主从服务器

2、如果哨兵挂掉怎么办

可以多建几个哨兵,实现高可用性,但要注意的是,客户端访问的时候,只会访问一个哨兵。

3、哨兵的局限性

  • 哨兵只是单纯解决了切换主从服务器的问题,可以进行自动切换,不需要进行手动切换,仍然没有根本性解决并发量高的问题

  • 会有访问瞬断的问题(切换主从服务器需要时间,虽然短暂,但这段时间仍然会停止服务)

高可用集群

Redis使用的集群模式就是高可用集群

还是先上图

在这里插入图片描述

介绍图中的几个对象

  • Redis-Cluster:接受客户端的请求,并且进行负载均衡,将请求按照负载均衡规则分配给各个Master(每一个小集群)

  • Master与其slave:一个小集群,与上面哨兵模式提到的集群类似

1、为什么叫高可用集群?哪里高可用了?

高可用这个概念是相对来说的,并不能真正百分百实现,当小集群的Master挂掉时,小集群内部会进行选举切换,但在这个瞬断期间,Redis并不会停止服务,只是不会将请求分给挂断的集群去处理,会分发给其他集群进行处理,高可用性比哨兵模式会好很多。

但是仍然会有请求失败,比如一个请求刚好请求给其中一个Master,Master还没执行完就挂掉了,这也会造成请求丢失,所以没有百分百的高可用。

2、优点是什么?

优点就是前面所说的高可用性提高了,减少了停止服务时间。

3、内部通信原理是什么?

比如现在有一个添加键值对对象的请求是给到了集群A去实现,那么假如现在有一个访问刚添加的键值对对象的请求,不是给到了集群A而是给到了集群B,那么此时就会进行转换集群,也就是从集群B中转换到了集群A,然后再进行读取(因为集群B并没有那个键值对信息,只有集群A有)

搭建单机集群


这里使用虚拟机,系统为Centos7。

由于我已经安装好了Redis,这里就不进行介绍Redis的安装,自行百度吧。

这里我要创建3个小集群,每个小集群一个主服务器,一个从服务器,也就是三主三从架构

主要步骤如下

  • 创建文件夹

  • 复制配置文件,并修改

  • 命令运行

创建文件夹

这里我是在Redis安装目录进行的

#创建集群文件夹

mkdir redis-cluster

#进入到集群目录

cd redis-cluster

#创建各个小集群的文件夹

mkdir 8001

mkdir 8002

mkdir 8003

mkdir 8004

mkdir 8005

mkdir 8006

复制默认配置文件,并修改一些选项

需要需改的选项

  • daemonize yes 开启后台启动

  • port 800x 对应各个端口号(由于是单机集群,所以只能使用端口号替代不同服务)

  • bind xxxx(这里必须要绑定ip地址,不能使用localhost,也就是127.0.0.1)

  • dir /usr/local/redis-cluster/800x/(绑定数据文件存放的位置,否则会出现混乱,这里绑定的文件夹就是上面创建的文件夹的位置)

  • cluster-enabled yes(开启集群)

  • cluster-config-file nodes-800x.conf (这个是集群节点信息文件,这里的800x和port要进行对应)

  • cluster-node-timeout 15000(小集群超过多长时间不响应就会被退出集群,单位为毫秒)

  • appendonly yes(开启AOF持久化操作)

这里是每个小集群都要去复制执行喔

**复制命令

cp redis.conf …/800x

**使用vim进行搜索

/搜索内容 + 回车

**使用vim进行统一修改

:%s/要修改的内容/修改成什么内容/g + 回车

**比如,将所有的8001修改成8002

:%s/8001/8002/g

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

开启所有服务器

**使用redis的redis-server脚本进行开启

**注意这里要将8001,8002,8003,8004,8005,8006都开启

/usr/local/redis/bin/redis-server /usr/local/redis-cluster/800x/redis.conf

开启完毕后,我们可以看后台进程

ps -ef|grep redis

在这里插入图片描述

可以看到,已经全部启动起来了,而且后面还标有cluster,但是到现在这一步,并没有完成搭建,还需使用Ruby命令

使用Ruby命令开启集群

这里先下载Ruby

yum install ruby

yum install rubygems

gem install redis --version 3.0.0 (这里要用3.0以上的版本,因为Redis3.0才开启集群支持)

接下来我们查找一下redis-cli在哪里

find / -name redis-cli

在这里插入图片描述

**进入到该目录

cd /usr/local/redis/bin

**执行该命令

./redis-cli --cluster create 192.168.3.31:8001 192.168.3.31:8002 192.168.3.31:8003 192.168.3.31:8004 192.168.3.31:8005 192.168.3.31:8006 --cluster-replicas 1 -a 0110x3

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
img

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

面试了阿里,滴滴,网易,蚂蚁,最终有幸去了网易【面试题分享】

助,可以添加V获取:vip1024b (备注Java)**
[外链图片转存中…(img-v8Q5vRx8-1712104847753)]

总结

无论是哪家公司,都很重视高并发高可用的技术,重视基础,重视JVM。面试是一个双向选择的过程,不要抱着畏惧的心态去面试,不利于自己的发挥。同时看中的应该不止薪资,还要看你是不是真的喜欢这家公司,是不是能真的得到锻炼。其实我写了这么多,只是我自己的总结,并不一定适用于所有人,相信经过一些面试,大家都会有这些感触。

最后我整理了一些面试真题资料,技术知识点剖析教程,还有和广大同仁一起交流学习共同进步,还有一些职业经验的分享。

[外链图片转存中…(img-eUiQKKk5-1712104847753)]

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis可以以不同的模式运行,包括单机模式、主从模式、哨兵模式和集群模式。在单机模式下,Redis只有一个实例,所有的数据都存储在这个实例中。主从模式中,有一个主节点和多个从节点,主节点负责写入数据,从节点负责复制主节点的数据。哨兵模式是在主从模式的基础上引入了哨兵节点,哨兵节点负责监控整个Redis集群的状态,并在主节点出现故障时自动将一个从节点升级为新的主节点。集群模式是在主从模式的基础上引入了分片,将数据分散存储在多个节点上,提高了存储和访问的能力。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* [redis单机、主从、哨兵、集群模式](https://blog.csdn.net/weixin_43989347/article/details/125293740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [一文读懂Redis的四种模式,单机、主从、哨兵、集群(*)](https://blog.csdn.net/weixin_42408447/article/details/120995478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值