- 一定要看官网
英文 https://redis.io/documentation
中文 http://www.redis.cn/documentation.html - 单机、单实例有什么问题 ?
- 单点故障
- 容量有限
- 并发有限
redis 主从
- 读写分离
- 备份策略 AOF/RDB
- CAP理论:一致性、可用性、分区容错性
一致性问题? 主从阻塞备份 超时? 丢包?(影响可用性?)
redis sentinel (哨兵)
- sentinel集群功能 capabilities
1. 监控 monitoring master/replica
2. 通知 notification
3. 自动故障转移 automatic failover
4. 配置服务 configuration provider - 为什么过半机制? 防止脑裂现象出现不一致
- 为什么总数是奇数? 要过半的话,6台允许2台挂掉,5台允许2台挂掉,所以
用5不用6 - redis sentinel集群本身没有主从?? 无主 gossip
Redis Sentinel的信息同步
redis cluster (集群)
- redis cluster node 作用
- 存储数据
- 集群状态(包括哈希槽分配)
- 自动发现、检测故障节点、故障迁移(从升主)
- redis cluster设计的目标
- linear scalability
- 线性扩展:资源量以与数据库吞吐量以相同的比例增加
- 写安全 write safe
- 高可用 availability
- Node timeout
- replicas migration 副本迁移 (slave节点多的分配给少的)
- 性能 performance
- redirect
- persistent connections
- linear scalability
Very high performance and scalability while preserving weak but reasonable forms of data safety and availability is the main goal of Redis Cluster.
容量有限 分片策略?-> 哈希、一致性哈希、redis代理
- 16384 哈希槽位
- 无主模型
- 数据分治 -> 数据聚合不方便实现
解决方案:人为把数据放到同一个redis实例{oo}k1 (redis自己不做处理,复杂度交给客户)
redis代理
- predixy
- twemproxy
- codis
proxy层解耦客户端和服务端
其他
- reids
- 由于网络分区造成的redis脑裂无法避免
redis 脑裂等极端情况分析
redis集群怎么防止脑裂 其实是redis脑裂的情况下怎样减少数据不一致