分布式
文章平均质量分 65
分布式部分学习记录
clear0217
这个作者很懒,什么都没留下…
展开
-
redis缓存的雪崩、击穿、穿透,淘汰策略,持久化
缓存不存在,数据库存在,高并发,大量的key原因:大量数据同时过期,Redis宕机解决方案:给缓存数据的过期时间上加上小的随机数,避免造成同时过期;互斥锁;服务降级;服务熔断;请求限流;Redis缓存主从集群:缓存不存在,数据库存在,高并发,少量的key原因:经常访问的热点数据过期解决方案:不给热点数据设置过期时间,一直保留:缓存不存在,数据库不存在,高并发,少量的key原因:要访问的数据既不在缓存也不在数据库解决方案:缓存空值或缺省值;原创 2022-11-21 17:07:25 · 886 阅读 · 1 评论 -
分布式架构下,session共享有什么方案?
实现session共享,可以水平扩展(增加Redis服务器),服务器重启session不丢失(不过也要注意session在Redis中的刷新/失效机制),不仅可以跨服务器session共享,甚至可以跨平台(例如网页端和APP端)进行共享。也就是每一次的接口访问,都不依赖于session、不依赖于每一次的接口访问,用jwt的token;3.session同步:对于服务器之间同步session,这样就可以保证每个服务器上都有全部的session信息,不过当服务器数量较多的时候,同步是会有延迟甚至同步失败的;原创 2022-11-19 17:30:56 · 396 阅读 · 0 评论 -
JWT和token是什么?如何利用token进行身份验证?
有没有一种不需要自己存放session信息就能实现身份验证的方式?使用token就可以!JWT就是这种方式实现的,通过这种方式服务器端就不需要保存session数据了,只要在客户端保存服务端返回给用户token就可以了,扩展性得到提升。这种方式会带来一些麻烦,比如需要我们保证保存session信息服务器的可用性、不适合移动端等。JWT本质上就是一段签名的JSON格式的数据。由于他是带有签名的,因此接受者便可以验证他的真实性。身份验证服务响应并返回了签名的jwt,上面包含了用户是谁的内容。原创 2022-11-19 16:25:20 · 666 阅读 · 0 评论 -
双写一致性问题如何解决
先读缓存,如果缓存中没有的情况下,才从数据库中读取1、先更新缓存,再更新数据库(不可取)2、先更新数据库,再更新缓存(不可取)3、先删除缓存,再更新数据库(不可取)4、先更新数据库,再删缓存(可取,有问题)原创 2022-11-18 17:52:46 · 427 阅读 · 0 评论 -
分布式事务
协调者挂了,会通过选举出一个新的协调者如果处于第二阶段,假设参与者都没有挂,新的协调者会向所有的参与者来确认他们自身的情况来判断下一步的操作,但是假说说个别参与者挂了,比如协调者发送回滚命令,此时第一个参与者收到了并执行了,但是该参与者和协调者挂掉了,此时其他的参与者都没有收到命令,选举出来新的协调者询问其他参与者都OK,但是他不知道这个挂了的参与者到底什么情况,如果第二阶段发送的是提交的请求,不断重试,因为有一些参与者的事务已经提交成功,所以进行不断重试,直到所有事务提交成功,直到最后,进行人工介入。原创 2022-11-13 16:21:25 · 368 阅读 · 0 评论 -
分布式ID生成方案
这主要依赖于Redis是单线程的,所以也可以用生成全局唯一的ID。这样虽然时间戳字段的值可能和之前的一样,但是回拨位的值不一样,生成的 ID 是不会重复的。2)在单机上是递增的,但是由于设计到分布式环境,每台机器上的时钟不可能完全同步,有时候会出现不是全局递增的情况(此缺点可以认为无所谓,一般分布式ID只要求趋势递增,并不会严格要求递增~90%的需求都只要求趋势递增)会对每条写命令进行持久化,即使Redis挂掉了也不会出现ID重复的情况,但由于incr命令的特殊性,会导致Redis重启恢复的数据时间过长。原创 2022-11-17 17:15:37 · 183 阅读 · 0 评论 -
分布式锁--redis和ZooKeeper
第二步:服务B为了得到多,向Redis发起同样的命令,但是由于Redis中存在同名的key,且并未过去,因此执行命令失败,服务B 未能获得锁,服务B进入循环请求的状态,比如每秒向Redis发起请求,直达成功获取到锁。第四步:服务A执行完毕,为了释放锁,服务A会主动向Redis发起删除key的命令,注意:删除key前,一定要判断服务A持有的value与redis内存存储的value是否一致。指的是当且仅当key在Redis中不存在的时候执行成功,否则失败,情况2:加锁后,程序没有执行释放锁,程序挂了。原创 2022-11-18 15:25:40 · 821 阅读 · 0 评论