
架构师实战之数据访问层
昨天与今天
JAVA
展开
-
数据同步方案
参考:https://github.com/alibaba/otterhttp://github.com/alibaba/canal原创 2020-01-14 17:45:13 · 303 阅读 · 0 评论 -
Redis的持久化
redis持久化包括两种方式:RDB快照方式RDB快照,是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。这样在下次恢复的时候可以直接从快照进行恢复,因此恢复速度相对较快。但RDB方式,因为是定期才快照,通常是每隔5分钟,或者更长时间生成一次,这个时候就得接受一旦Redis进程宕机...原创 2020-01-10 18:07:23 · 155 阅读 · 0 评论 -
分布式锁的设计
实现方案一、mysql实现二、redis三、zookeeper以下主要说一下redis的实现方式。需要实现的功能1、只有一个线程能获取到锁,获取不到锁的线程可以自旋一定的时间,如果仍获取不到,则返回获取不到锁。2、为了防止业务挂了,导致锁没有释放,需要给锁加上过期时间。3、只能解锁自己加的锁,可以通过加锁时传入请求标识实现4、实现锁的可重入问题1、如何保...原创 2020-01-07 22:34:37 · 312 阅读 · 0 评论 -
缓存与数据库的一致性
分布式场景下,缓存与数据库的一致性是必须要绕过去的一道坎。而强一致性同步成本太高,如果追求强一致,那么没必要用缓存了,直接用mysql即可。通常考虑的,都是最终一致性。我们要做的,就是把这个最终一致性的时间降到最低。从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果...原创 2020-01-10 17:24:12 · 461 阅读 · 0 评论 -
redis部署方案
方案一 单机版对缓存没有较高的要求,缓存挂了也不影响业务的场景,可以使用。方案二 主从复制主故障后,需要人工切换到从,应用程序也需要进行重连。方案三 哨兵主从复制的改进,可以自动监控各节点的状态,当主节点故障时,自动从从节点选择一个做为主节点。缺点:故障切换期间,将导致服务的不可用。方案四 集群真正的分布式存储缓存,一般使用多主多从,如3主3从,6主6从等缺点:...原创 2020-01-09 22:18:02 · 224 阅读 · 0 评论 -
缓存雪崩、穿透、击穿
一 缓存穿透概念key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有。若黑客利用此漏洞进行攻击可能压垮数据库,这就是漏洞。解决方案1)有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个...原创 2020-01-09 14:20:01 · 181 阅读 · 0 评论