文章内容输出来源:拉勾教育Java高薪训练营
学习心得
课程介绍
第五阶段 大型分布式系统缓存架构进阶
模块一 高性能分布式缓存Redis、分布式 Redis 解决方案Codis(Twemproxy替代方案)
模块对Redis的持久化方案、删除策略、IO多路复用模型、Redis集群模式、预热、雪崩、击穿、穿透等进行系统剖析。
作业内容
RedisCluster的安装、部署、扩容和Java客户端调用
如图:
搭建Redis5.0集群,要求三主三从
能够添加一主一从(Master4和Slaver4)
能够通过JedisCluster向RedisCluster添加数据和取出数据
作业提交要求:
(1)1、2提交环境操作手册
(2)3提交程序代码
(3)视频讲解安装手册及程序代码
课程目录及观看建议
2倍速模式
课程2小时
作业2小时
***
必看
**
建议看
*
可不看
- 任务一:缓存原理&设计
- 任务二:Redis底层数据结构
- 任务三:Redis通讯协议和事件处理机制
- 任务四:Redis持久化机制和扩展功能
- 任务五:Redis分布式高可用方案
- 主从复制之主从配置与作用(09:13)
- 主从复制之原理与实战(上)(14:18)
- 主从复制之原理与实战(下)(11:07)
- 哨兵模式之配置与实战(上)(10:01)
- 哨兵模式之配置与实战(中)(09:22)
- 哨兵模式之配置与实战(下)(13:31)
- 哨兵模式之执行流程剖析(16:56)
- 哨兵模式之哨兵leader选举(08:37)
- 哨兵模式之故障转移机制(05:04)
- 分区的意义与方式(15:30)
*
- Client端分区实战(上)(11:58)
- Client端分区实战(下)(16:17)
- 官方Cluster分区部署架构(上)(10:32)
**
- 官方Cluster分区部署架构(下)(12:28)
**
- 官方Cluster分区集群环境构建(21:16)
***
- 官方Cluster分区集群分片(上)(16:34)
***
- 官方Cluster分区集群分片(下)(18:51)
***
- 官方Cluster分区集群容灾(上)(11:35)
- 官方Cluster分区集群容灾(下)(09:09)
- Proxy端分区之codis集群架构(07:38)
- Proxy端分区之codis集群实战(上)(13:15)
- Proxy端分区之codis集群实战(中)(13:15)
- Proxy端分区之codis集群实战(下)(08:17)
- Proxy端分区之扩容&自动均衡(11:17)
- Proxy端分区之分片原理和槽位同步(06:37)
- Proxy端分区之优缺点(04:47)
- 任务六:企业实战和大厂面试
作业说明
软件版本
最好和课程内容版本保持一致,否则会遇到版本冲突问题
CentOS 7.7
Redis 5.0.5
JDK 11
Jedis 3.3.0
实现步骤
1. 搭建Redis5.0集群,要求三主三从
推荐使用一台虚拟机,然后各个节点通过端口号部署
安装Redis
- 安装环境类库(注意事项1)
yum -y install gcc gcc-c++ kernel-devel
- 配置Redis程序包(注意事项1)
make MALLOC=libc
配置集群环境
参照课程内容启动集群模式(注意事项2)
cd /usr/local/redis/redis-cluster/7001/bin
./redis-cli --cluster create 192.168.0.111:7001 192.168.0.111:7002 192.168.0.111:7003 192.168.0.111:7004 192.168.0.111:7005 192.168.0.111:7006 --cluster-replicas 1
2. 能够添加一主一从(Master4和Slaver4)
参看课程内容
3. 能够通过JedisCluster向RedisCluster添加数据和取出数据
程序代码课程讲义06中有,也可以从网上搜索。(注意事项2)
注意事项
-
安装环境
新装CentOS7.7环境下make redis时需要安装gcc,make install 前需要使用
make MALLOC=libc
加载相应类库。 -
ip问题
服务器端配置操作中涉及到的ip地址统一采用局域网ip或外网ip,否则程序访问时无法成功。比如不能使用127.0.0.1,因为外部访问虚拟机时使用的ip为局域网的192.168.0.111。推测JedisCluster创建连接池时读取了服务端nodes.conf中的ip配置信息。
序列化
使用java代码的JedisCluster保存的数据会被编码,生成的字符中会有额外字符,使用redis客户端看到的key会有变化。比如"name"的key,set之后redis中保存的是"\x123\x456\x789name"。所以只能使用JedisCluster的get取值。