redis 集群高可用调研方案

redis 集群部署

    redis集群和原理 redis sentinel 实现集群 Sentinel实现Redis集群的高可用 Redis-sentinel哨兵模式集群方案配置 Reidis Keepalived 全面剖析Redis Cluster原理和应用

java -redis 集成

    java代码中操作Redis:单机redis、集群redis(spring+redis集成) Spring Boot+Spring Data Redis访问redis cluster (redis 集群中间件) redis集群主流架构方案分析

jedis client调研

lettuce 调研 (netty 多线程客户端)

jedistemplate (spring-data-redis) jedistemplate 是对 jedisconnection 的一个抽象封装, 1.8+的版本使用 luttuce 进行 jedis 连接封装

redisson (alibaba 等很多大公司再用)

    (升级版)

Redisson - distributed Java objects and services (Set, Multimap, SortedSet, Map, List, Queue, BlockingQueue, Deque, BlockingDeque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Executor service, Tomcat Session Manager, Scheduler service, JCache API) on top of Redis server. State of the Art Redis client

redis 集群测试

    redis 负载均衡 集群配置 +部署脚本 redis及集群性能测试+运维 推荐指数 5星 redis4.0、codis、阿里云redis 3种redis集群对比分析

可能遇到的问题

    在现有 redis 不关的情况下,的数据迁移和数据集群分片问题 现有 javar-redis 连接池的改造 pool template 多节点的配置问题 (动态添加节点的java热更新问题,)

说明

    redis cluster 至少需要6台redis ,redis 一台master 至少有一台对应的 slave redis 集群方案有 sentinel +主从 或者是 cluster 分片, cluster 自动维护集群状态,故障处理,掉线主机上线等 sentinel 可以和 cluster 同时存在管理主机 ps -ef | grep redis | awk {print $2} | xargs kill -9 关闭一台服务器上的所有 redis

redis 集群主流架构方案

    nginx+redis master+work client+proxy+redis cluster jedistemplate jedispool

mset/mget 解决方案

商用redis 集群架构

    360bada 有道 redis cluster 使用经验 AliRedis单机180w QPS, 8台服务器构建1000w QPS Cache集群 codis 豆瓣 Reborndb Redis Enterprise

优化方案

    有道 800+ 节点 redis 官方文档
    Redis Enterprise

监控

    芒果 tv 最近更新时间15年

中间件对比

    codis 豌豆荚开发的 redis 中间件 go 语言,使用脚本部署, github 仍然在维护 predixy:一款高性能redis集群代理

性能测试

    . Redis压力测试报告

集群搭建和调研过程中遇到的问题

    redis-trib.rb 在创建集群的过程中如果不使用 create --replication 1 而是 直接使用 create 那么都是主节点,也就是说集群可以没有从节点 redisson 会根据 cluster nodes 的返回结果,使用 map 设置 cluster node redission 分为 clusterserver, replicationserver,mastersalveserver 模式.不同的模式对应不同的 redis 集群架构 redission 中的 map-reduce 在 redisson 3.9.0 版本中存在线程 await 的状况 redission 在进行编译官方 github 的 源代码的时候,出现在-- realase help 1 的错误的解决方案是 将 build 中将 release 标签注释掉 redisson 默认使用 json 设置字符串格式,但是可以通过 codsec 进行更改 decode 和 encode 格式 redisson 中使用 batch 命令进行, mset 的操作. redis-trib.rb 在搭建集群的过程中,即使在同一台机器上也要使用 ip 地址+port 不是使用 127.0.0.1,这样子方便器群迁移 redis 可以在运行中设置 config set protect no 开启 允许远程连接 vim 在 mac 上在 user 目录下没有 .vimrc 这个文件 vim 在 mac 上默认是 readonly io.netty.util.internal.logging.InternalLoggerFactory - Using SLF4J as the default logging framework netty 默认的日志框架是 slf4j ,只有在 pom 文件中引入 slf4j 的包才能在控制台打印日志 redisson 和 lettuce 默认都使用了 pool, 默认建立5个连接 redisson 和 lettuce 都是使用 cluster nodes 进行集群探活的
经验分享 程序员 微信小程序 职场和发展