![](https://img-blog.csdnimg.cn/20210602213245150.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
大型分布式系统缓存架构
文章平均质量分 82
缓存服务中间件,分布式缓存选型
穿城大饼
离离原上草,一岁一枯荣。
野火烧不尽,春风吹又生。
远芳侵古道,晴翠接荒城。
又送王孙去,萋萋满别情。
展开
-
Redis-高可用问题3:哨兵模式(针对某一模块,数据量有限)
Redis:哨兵模式关键词主从,没有实现高可用主从+哨兵:可以实现主从切换,实现高可用哨兵:监视 主服务器 进入下线状态;从服务器升级为主服务器继续提供服务哨兵执行流程:启动并初始化Sentinel,获取主从服务器信息,向主服务器和从服务器发送消息(以订阅的方式),接收来自主服务器和从服务器的频道信息,检测主观下线状态,检查客观下线状态;选举Leader Sentinel,故障转移,主服务器的选择一、哨兵模式哨兵(sentinel)是Redis的高可用性 (High Availabili原创 2021-11-08 21:46:58 · 197 阅读 · 0 评论 -
Redis-并发问题2:主从配置
Redis:主从配置关键词一、 主从配置主Redis配置无需特殊配置从Redis配置修改从服务器上的 redis.conf 文件:# slaveof <masterip> <masterport># 表示当前【从服务器】对应的【主服务器】的IP是192.168.10.135,端口是6379。replicaof 127.0.0.1 6379作用读写分离一主多从,主从同步主负责写,从负责读提升Redis的性能和吞吐量主从的数据一致性问题数据容原创 2021-11-08 21:22:00 · 2533 阅读 · 0 评论 -
Redis:Redisson分布式锁的使用(推荐使用)
Redis:Redisson分布式锁的使用(生产环境下)(推荐使用)关键词基于NIO的Netty框架,生产环境使用分布式锁redisson加锁:lua脚本加锁(其他客户端自旋)自动延时机制:启动watch dog,后台线程,每隔10秒检查一下客户端1还持有锁key,会不断的延长锁key的生存时间可重入锁机制:第二个if判断 ,myLock :{“8743c9c0-0795-4907-87fd-6c719a6b4586:1”:2 }释放锁:无锁直接返回;有锁不是我加的,返回;有锁是我加的,执原创 2021-11-08 17:12:17 · 33316 阅读 · 5 评论 -
Redis:分布式锁setnx(只 实现了 互斥性和容错性)
Redis:分布式锁setnx关键词获取锁:原子性操作 set方法(推荐),谁set成功谁获取到锁(过期时间,避免死锁)释放锁:redis+lua脚本实现问题1:主从架构,主机宕机,重复获得锁问题(可以使用红锁解决99%,降低重复获取概率,redis在分布式环境下是ap模型)红锁:三个节点,往两个节点上set成功,才能获取锁问题2:无法续租问题(使用Redisson的看门狗进行续租)一、实现原理共享资源 互斥共享资源 串行化分布式应用中使用锁:(多进程多线程)分布式锁是控制原创 2021-11-08 16:19:42 · 4635 阅读 · 0 评论 -
Redis:分布式锁Watch
Redis:分布式锁Watch关键词锁的续租(延长使用时间)一、利用Watch实现Redis乐观锁乐观锁基于CAS(Compare And Swap)思想(比较并替换),是不具有互斥性(乐观),不会产生锁等待而消耗资源,但是需要反复的重试,但也是因为重试的机制,能比较快的响应。因此我们可以利用redis来实现乐观锁。具体思路如下:1、利用redis的watch功能,监控这个redisKey的状态值2、获取redisKey的值3、创建redis事务4、给这个key的值+15、然后去执原创 2021-11-08 15:51:48 · 629 阅读 · 0 评论 -
Redis:Big Key问题
Redis:Big Key问题关键词发现:(预估,redis-cli --bigkeys命令,rdbtools分析rdb生成csv文)处理:(string减少字符串长度 [MongoDB或缓存到CDN] ;list、hash、set、zset等减少成员数;多线程删除unlink)一、常见场景和大key的影响大key指的是存储的值(Value)非常大,常见场景:热门话题下的讨论大V的粉丝列表序列化后的图片没有及时处理的垃圾数据…大key的影响:大key会大量占用内存,在集群中原创 2021-11-08 15:20:20 · 1581 阅读 · 0 评论 -
Redis:Hot Key问题
Redis:Hot Key问题关键词发现:(预估,客户端统计,redis自带命令,大数据流式计算)处理:(本地缓存,add节点负载,限流熔断保护)一、Redis:Hot Key问题当有大量的请求(几十万)访问某个Redis某个key时,由于流量集中达到网络上限,从而导致这个redis的服务器宕机。造成缓存击穿,接下来对这个key的访问将直接访问数据库造成数据库崩溃,或者访问数据库回填Redis再访问Redis,继续崩溃。二、如何发现热key1、预估热key,比如秒杀的商品、火爆的新闻等原创 2021-11-08 14:55:26 · 644 阅读 · 0 评论 -
Redis:数据并发竞争顺序性
Redis:数据并发竞争顺序性关键词第一种方案:分布式锁(串行)+时间戳(保存一个时间戳判断set顺序)第二种方案:利用消息队列(并行读写进行串行化)一、数据并发竞争这里的并发指的是多个redis的client同时set 同一个key引起的并发问题。多客户端(Jedis)同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4,最后是4,但是顺序变成了4,3,2,最后变成了2。二、第一种方案:分布式锁+时间戳主要是准备一个分布式锁,大家去抢锁,抢到锁就做set操作。加锁原创 2021-11-08 14:33:57 · 729 阅读 · 0 评论 -
Redis:缓存问题之数据不一致(更新数据库时 主动更新)
Redis:缓存问题之数据不一致关键词数据源不一样(缓存和db操作非原子性)延时双删 —> 2. TTL —> 3. 缓存删除失败记录到日志中,利用脚本提取失败记录再次删除一、不一致问题缓存和DB的数据不一致的根源 : 数据源不一样二、不一致分析2.1 分析强一致性很难,追求最终一致性(时间)互联网业务数据处理的特点高吞吐量低延迟数据敏感性低于金融业时序控制是否可行?先更新数据库再更新缓存或者先更新缓存再更新数据库本质上不是一个原子原创 2021-11-05 18:10:59 · 871 阅读 · 0 评论 -
Redis数据丢失问题1:持久化
Redis持久化一、RDB触发快照的方式RDB执行流程(原理)RDB文件结构RDB的优缺点二、 AOFAOF持久化实现AOF原理AOF重写、触发方式、混合持久化AOF文件的载入与数据还原三、 RDB与AOF对比四、 应用场景...原创 2021-11-05 17:46:31 · 423 阅读 · 0 评论 -
Redis-海量存储高并发问题4:RedisCluster搭建和扩容(伪集群:4主4从)
RedisCluster的安装、部署、扩容和Java客户端调用(伪集群)如图:功能:(1)搭建Redis5.0集群,要求三主三从(2)能够添加一主一从(Master4和Slaver4)(3)能够通过JedisCluster向RedisCluster添加数据和取出数据一、搭建1.1 配置 并启动config 节点集群节点名称配置文件Master1 :192.168.80.77:155555配置文件:config-15555.confMaster2 :192.16原创 2020-10-23 11:50:04 · 1082 阅读 · 0 评论 -
实战:MongoDB 分片集群Shard Cluster 搭建(1台路由节点,3台配置节点,9台分片节点)
MongoDB 分片集群搭建一、搭建要求一台路由节点IP地址:192.168.80.110端口:11111三套复制集(每个分片节点中的复制集 都需要有仲裁节点)IP地址: 192.168.80.55 , 端口:15555/15556/15557IP地址: 192.168.80.56 , 端口:15555/15556/15557IP地址: 192.168.80.57 , 端口:15555/15556/15557一原创 2020-09-25 18:49:15 · 3632 阅读 · 2 评论 -
分布式文档存储独角兽MongoDB——MongoDB常见命令(2)
分布式文档存储独角兽MongoDB二、MongoDB常见命令1.1 MongoDB的基本操作1.2 MongoDB集合数据操作(CURD)1.3 MongoDB 聚合操作原创 2020-09-17 21:16:15 · 239 阅读 · 0 评论 -
分布式文档存储独角兽MongoDB——系统结构(1)
分布式文档存储独角兽MongoDB一、MongoDB系统结构1.1 NoSQL 和 MongoDBNoSQL=Not Only SQL,支持类似SQL的功能, 与Relational Database相辅相成。其性能较高,不使用SQL意味着没有结构化的存储要求(SQL为结构化的查询语句),没有约束之后架构更加灵活。NoSQL数据库四大家族 列存储 Hbase,键值(Key-Value)存储 Redis,图像存储 Neo4j,文档存储MongoDBMongoDB 是一个基于分布式文件存储的原创 2020-09-16 17:47:12 · 223 阅读 · 0 评论