Bootstrap

SpringCloud微服务详解:-Redis-高可用集群

make && make install

创建集群配置:

mkdir redis-cluster

创建集群文件夹,然后在该文件夹下创建6个文件,同redis.conf配置一致,7001.conf、7002.conf、7003.conf、7004.conf、7005.conf、7006.conf然后修改各个配置:

port 700x // 端口700X
bind 本机ip // 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize yes // redis后台运行
pidfile /var/run/redis_7001.pid // pidfile文件对应7001,7002
cluster-enabled yes // 开启集群 把注释#去掉
cluster-config-file nodes_7001.conf // 集群的配置 配置文件首次启动自动生成 7001,7002
cluster-node-timeout 15000 // 请求超时 默认15秒,可自行设置
appendonly yes // # AOF 持久化,按需要选择是否开启

启动服务:

redis-server …/redis-cluster/7001.conf
redis-server …/redis-cluster/7002.conf
redis-server …/redis-cluster/7003.conf
redis-server …/redis-cluster/7004.conf
redis-server …/redis-cluster/7005.conf
redis-server …/redis-cluster/7006.conf

创建集群:

–replicas参数指定集群中每个主节点配备几个从节点,这里设置为1。
redis-cli --cluster create 172.17.1.218:7001 172.17.1.218:7002 172.17.1.218:7003 172.17.1.218:7004 172.17.1.218:7005 172.17.1.218:7006 --cluster-replicas 1

查看集群:

redis-cli --cluster check 172.17.1.218:7001
172.17.1.218:7002 (406a1d6e…) -> 0 keys | 5461 slots | 1 slaves.
172.17.1.218:7003 (85df8dc9…) -> 0 keys | 5462 slots | 1 slaves.
172.17.1.218:7004 (54f13720…) -> 2 keys | 5461 slots | 1 slaves.
[OK] 2 keys in 3 masters.
0.00 keys per slot on average.

Performing Cluster Check (using node 172.17.1.218:7001)
S: 2d589d0077771ca9a7b2909b351e350aa69bea45 172.17.1.218:7001
slots: (0 slots) slave
replicates 54f13720da944d3dcc75351c4042fcaf3b2300e0
M: 406a1d6e9bcc760501c6b8f71f9151e020b247bd 172.17.1.218:7002
slots:[10923-16383] (5461 slots) master
1 additional replica(s)
S: e52eda05e4df779e15437f7f42522459a3e26b27 172.17.1.218:7005
slots: (0 slots) slave
replicates 85df8dc9b649e02740fa0f932aa1df135d44953e
M: 85df8dc9b649e02740fa0f932aa1df135d44953e 172.17.1.218:7003
slots:[5461-10922] (5462 slots) master
1 additional replica(s)
M: 54f13720da944d3dcc75351c4042fcaf3b2300e0 172.17.1.218:7004
slots:[0-5460] (5461 slots) master
1 additional replica(s)
S: 60f49255085936fbcf682bafc81319f9393150c9 172.17.1.218:7006
slots: (0 slots) slave
replicates 406a1d6e9bcc760501c6b8f71f9151e020b247bd
[OK] All nodes agree about slots configuration.
Check for open slots…
Check slots coverage…
[OK] All 16384 slots covered.

从集群信息,我们可以看出有三组主从关系:

  • 7004(主)-7001(从)

  • 7003(主)-7005(从)

  • 7002(主)-7006(从)

其实一开始7001是主,为了测试主从切换,把7001杀掉,由7004接管,然后重启7001变为从服务。

整合

pom.xml 引入:

org.springframework.boot spring-boot-starter-data-redis

配置文件 bootstrap.yml

spring:
redis:
timeout: 30000
password: 123456
cluster:
nodes:

  • 172.17.1.218:7001
  • 172.17.1.218:7002
  • 172.17.1.218:7003
  • 172.17.1.218:7004
  • 172.17.1.218:7005
  • 172.17.1.218:7006
    max-redirects: 3
    lettuce:
    max-active: 1000
    max-idle: 10
    max-wait: -1
    min-idle: 5

开发者可以对 RedisTemplate 进行一个简单的封装成 RedisUtil 

小结

这就是微服务版本的 Redis 高可用集群,是不是有点简单。不过,生产环境建议配置内网地址,开启防火墙,配置必要的鉴权访问机制,这玩意一旦被嗅探到可能会被老板扣工资的。还有一点,一定要搭建有效的监控预警系统,这样可以针对性的对其进行扩容、修复。

推荐阅读:

总结

我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的。

Mybatis源码解析

知识深度和广度是很有必要的。

Mybatis源码解析

[外链图片转存中…(img-9jlV0kai-1721156964540)]

[外链图片转存中…(img-LgsN9SFp-1721156964540)]

;