《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
另外,slave 在关机并重新启动后,能够在 RDB 文件中存储所需信息,以便于 master 进行重同步。这在升级的情况下很有用。当需要时,最好使用 SHUTDOWN 命令来执行 slave 的保存和退出操作。
2 主从数据不一致
=========
主从网络延时:
主多从少
====
部分重同步。可以通过命令 PSYNC master_run_id offset 执行。
主少从多
====
全量复制,覆盖。这种情况是因为从节点读写模式导致的,关闭从节点读写模式,或者删除从节点数据,重新从主节点全量复制。
3 数据延迟
======
编写外部程序监听主从节点的复制偏移量,延迟较大时发出报警或通知客户端,切换到主节点或其他节点。
设置从节点slave-serve-stale-data为no,除INFO和SLAVOF命令之外的任何请求都会返回一个错误“SYNC with master in progress”。
当副本失去与mater的连接时或仍在进行复制时,副本可以如下方式起作用:
-
若 replica-serve-stale-data 设为“是”(默认值),则副本仍会回复客户端请求,可能带有过期数据,或者,如果这是第一次同步,则数据集可能只是空的
-
若将replica-serve-stale-data设为no,则该副本将对除以下信息以外的所有命令返回错误“SYNC with master in progress”:INFO,REPLICAOF,AUTH,PING,SHUTDOWN,REPLCONF,ROLE,CONFIG ,SUBSCRIBE,UNSUBSCRIBE,PSUBSCRIBE,PUNSUBSCRIBE,PUBLISH,PUBSUB,COMMAND,POST,HOST和LATENCY
4 脏数据
=====
4.1 脏数据产因
=========
4.1.1 Redis 删除策略
================
是因为读到了过期数据。
读到过期数据是 Redis 删除策略导致:
惰性删除
====
master 每次读取命令时都会检查K是否超时,若超时则执行 del 命令删除键对象,之后异步把 del 命令 slave 节点,这样可以保证数据复制的一致性,slave 永远不会主动去删除超时数据。
定时删除
====
Redis 的 master 节点在内部定时任务,会循环采样一定数量的键,当发现采样的键过期时,会执行 del 命令,之后再同步个 slave 节点。
主动删除
====
当前已用内存超过 maxMemory 限定时,触发主动清理策略。主动设置的前提是设置了 maxMemory 的值 注:如果数据大量超时,master 节点采样速度跟不上过期的速度,而且 master 节点没有读取过期键的操作,那 slave 节点是无法收到 del 命令的,这时从节点上读取的数据已经是超时的了。
4.1.2 从节点可写
===========
如果从节点(默认读模式)是读写模式,可能误写入从节点的数据,后期就会成为脏数据。
4.2 解决方案
========
忽略
==
比如 12306 查余票、双十一秒杀的库存,你会发现经常就是前后不一致的数据。因为你查询时得到的数据,就是需要允许写错误。
选择性强制读主
=======
但是真正下单扣库存时,你就必须确保数据的正确性 选择强制读 master,slave间接变为备份服务器(某个业务)。
最后
为什么我不完全主张自学?
①平台上的大牛基本上都有很多年的工作经验了,你有没有想过之前行业的门槛是什么样的,现在行业门槛是什么样的?以前企业对于程序员能力要求没有这么高,甚至十多年前你只要会写个“Hello World”,你都可以入门这个行业,所以以前要入门是完全可以入门的。
②现在也有一些优秀的年轻大牛,他们或许也是自学成才,但是他们一定是具备优秀的学习能力,优秀的自我管理能力(时间管理,静心坚持等方面)以及善于发现问题并总结问题。
如果说你认为你的目标十分明确,能做到第②点所说的几个点,以目前的市场来看,你才真正的适合去自学。
除此之外,对于绝大部分人来说,报班一定是最好的一种快速成长的方式。但是有个问题,现在市场上的培训机构质量参差不齐,如果你没有找准一个好的培训班,完全是浪费精力,时间以及金钱,这个需要自己去甄别选择。
我个人建议线上比线下的性价比更高,线下培训价格基本上没2W是下不来的,线上教育现在比较成熟了,此次疫情期间,学生基本上都感受过线上的学习模式。相比线下而言,线上的优势以我的了解主要是以下几个方面:
①价格:线上的价格基本上是线下的一半;
②老师:相对而言线上教育的师资力量比线下更强大也更加丰富,资源更好协调;
③时间:学习时间相对而言更自由,不用裸辞学习,适合边学边工作,降低生活压力;
④课程:从课程内容来说,确实要比线下讲的更加深入。
应该学哪些技术才能达到企业的要求?(下图总结)
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!
LKtwL1SM-1714649851566)]
[外链图片转存中…(img-gn6NLEaq-1714649851567)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门,即可获取!