
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
【广州IT培训】:缓存数据一致性的问题,本质上是:主Cache、备Cache、DB三者对外提供的数据一致性。所以有以下特点: 1) master中的脏数据,slave必须要有,否则切换会回档; 2)master中与DB一致的干净数据,slave可以缺少;
广州web前端培训班小编这样slave在升级为master的时候,不存在的数据会从DB拉取,所以就以DB为准,这样一来数据一致性可以保证。
不过,slave如果只同步master的脏数据,很可能切换的瞬间,由于缓存命中率低,导致压力瞬间透传给后端DB,造成瞬间服务不可用。所以从可用性的角度讲,建议也把主机的热数据也同步过去。
所以,我们的存储缓存Cube采用了分级同步的方式处理,优先保证数据一致性,其次是数据可用性:
广州IT培训的老师给大家讲解关于web的一些优点和缺点:
1.分级同步,把危险期降到最低。脏数据同步完,slave就已经可以保证数据一致了-广州达内web培训,此时就具备最基本的切换能力。脏数据通常占比不高,从我们线上的业务看,峰值占总内存量的1/10,所以脏数据的同步最重要,耗时也较短;
2.热数据可以选择性的同步。热点数据较多的业务,可以设置同步的量大一些,甚至是把主机的所有数据都同步过去,实现主备数据完全一致。这个过程耗时较长,不过即使同步过程中主机挂掉,也不影响数据一致性,所以热点数据的同步速度可以相对慢一些。
缺点:
master和slave之间必须采用row-based binlog方式同步,不可以使用statement-based binlog。
这里再简单介绍下这两种binlog格式的差别:statement-based binlog就是一条操作语句,描述的是执行过程,例如:把某个数据记录中的字段A执行+1操作。row-based binlog描述的是操作执行的结果,例如:字段A执行+1操作之后的结果是什么。
因为slave中的数据量会比master要少,所以statement-based binlog如果在一个不存在的结果上执行,结果肯定是错误的。但是如果是row-based binlog,slave接收到的是执行后的结果,所以就可以直接存储下来。
三 空查询问题
【广州IT培训】:什么是空查询?空查询简单理解就是:到缓存中查询连DB都不存在的数据的请求。
可以不夸张的说:空查询绝对是缓存的天敌。为什么?因为缓存不命中的时候,缓存侧以为是自己没有cache到这个数据,所以把请求透传到后端DB,而DB中也么有这个数据,所以最后缓存中也没被填充上,下次类似的请求过来的时候,同样会走一遍相同流程,很容易导致DB直接过载!
【广州达内培训】:有人可能会问,能不能把不命中的请求也缓存下来,这样下次相同的请求过来,缓存侧就知道这个数据不存在,从而避免再到DB侧拉取数据了呢?答案是不可以!因为空查询的情况可能千差万别。
学web前端开发工程师、学html5游戏开发就来吧!这里的课程15年的经验基础,值得信赖!
想学或者了解更多网络营销技术,学一门专业的Java编程技术,欢迎来广州达内培训机构 、UI培训 、java培训、达内机构进行更多的咨询和了解。
有专门的老师对接,可以从网站中进行咨询,欢迎大家来了解和咨询更多的你想知道的技术和课程知识;
免费试听课程活动 正式启动,点击文末“报名链接”直接抢,限额试听,先报先得。
每个月都有达内学员成功走向岗位
每个月都有新学员加入
梦想的接力棒在新老学员手中不断传递,相信通过4个月努力学习
他们都会找到心仪工作,拿到理想薪资!
达内免费试听课活动正式开启,限额报名,先报先得!
最接地气的官方咨询方式,像朋友一样,给你最贴心的建议!
扫描二维码,立即咨询: