分布式系统相关问题一
2020-05-10 本文已影响0人
Teemo_fca4
分布式系统的幂等性问题
这个应该是没有特定答案的,因情况而异,总得来说要么就是数据库层面加上唯一键,要么就是使用redis来实现幂等性
分布式系统接口调用保证顺序性
image.pngimage.png
如果实在要求100%强顺序性,采用分布式锁方案,请求需要另外加上序号,但是这个方案会降低并发量
image.png
zk做分布式协调
image.pngzk做分布式锁
image.pngzk做源数据和配置管理
image.pngzk做HA高可用性
image.pngredis做分布式锁的简单场景
image.pngimage.png
RedLock
image.png规避单个redis宕机导致锁(用的比较少,很少验证。这个很麻烦)
集群部署的redis,使用分布式锁时有可能redis锁出现错误
redis 主从复制是异步进行的,那么就有可能在加锁的时候(master加锁成功,此时客户端会认为加锁成功,但是redis异步复制还没开始时master就已经宕机了,这个时候slave升级为master角色,但是新master并没有数据,所以下一个请求过来 又可以加锁成功了,这就形成了冲突)。要解决这个问题 的方案是加锁时,要确保主从都加锁了 客户端才认为加锁成功才行。
二者做分布式锁的对比
image.png分布式会话session
就是使用redis呗