lotus

贵有恒何必三更眠五更起 最无益只怕一日曝十日寒

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2021年5月14日

摘要: Redission 1、原理 2、源码中加锁lua代码 if (redis.call('exists', KEYS[1]) == 0) then redis.call('hset', KEYS[1], ARGV[2], 1); redis.call('pexpire', KEYS[1], ARGV[ 阅读全文
posted @ 2021-05-14 18:15 白露~ 阅读(1409) 评论(0) 推荐(0) 编辑

摘要: 普通实现 说道Redis分布式锁大部分人都会想到:setnx+lua,或者知道set key value px milliseconds nx。后一种方式的核心实现命令如下: - 获取锁(unique_value可以是UUID等) SET resource_name unique_value NX 阅读全文
posted @ 2021-05-14 18:08 白露~ 阅读(900) 评论(0) 推荐(0) 编辑

摘要: 为什么需要分布式锁 引入经典的秒杀情景,100件商品供客户抢。如果是单机版的话,我们使用synchronized 或者 lock 都可以实现线程安全。但是如果多个服务器的话,synchronized 和 lock 就不管用了(废话,怎么可能管用,都不在同一段代码了)。 分布式锁就是被设计出来实现多个 阅读全文
posted @ 2021-05-14 13:42 白露~ 阅读(136) 评论(0) 推荐(0) 编辑

摘要: 1. 本地锁 常用的即 synchronize 或 Lock 等 JDK 自带的锁,只能锁住当前进程,仅适用于单体架构服务。 而在分布式多服务实例场景下必须使用分布式锁 哦哟!才知道,原来大厂的Redis分布式锁都这么设计 2 分布式锁 2.1 分布式锁的原理 厕所占坑理论 可同时去一个地方“占坑” 阅读全文
posted @ 2021-05-14 13:41 白露~ 阅读(304) 评论(0) 推荐(0) 编辑

摘要: 什么是分布式锁 说到Redis,我们第一想到的功能就是可以缓存数据,除此之外,Redis因为单进程、性能高的特点,它还经常被用于做分布式锁。 锁我们都知道,在程序中的作用就是同步工具,保证共享资源在同一时刻只能被一个线程访问,Java中的锁我们都很熟悉了,像synchronized 、Lock都是我 阅读全文
posted @ 2021-05-14 13:40 白露~ 阅读(435) 评论(0) 推荐(0) 编辑

摘要: Databus和canal都能够提供实时从数据库获取变更,并提供给下游的实时消费流的功能。 本文针对两个系统实现和应用上的不同点,做了一个简单的对比: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 阅读全文
posted @ 2021-05-14 11:38 白露~ 阅读(986) 评论(1) 推荐(0) 编辑

摘要: 写在前面 数据同步 是一个脏活,而且是个高风险的活 大多数情况下,应用架构设计不好,引入什么新存储,引入什么DDD,治标不治本,都是扯淡。 但万一灵验呢?这就是数据同步的需求基础。且看下面需求场景。 应用场景 业务数据发展到一定水平,需要将大部分冷热数据从熟悉的DB迁移到其他存储进行复杂查询和分析 阅读全文
posted @ 2021-05-14 11:34 白露~ 阅读(208) 评论(0) 推荐(0) 编辑

摘要: 社区wiki主页:https://github.com/linkedin/Databus/wiki 背景 一个大型分布式系统往往存在多种的存储系统,mysql,tair,redis,memcache,hbase等等。一些重要的或者需要事务支持的数据操作,通常都会放到mysql处理。但是,为了满足高性 阅读全文
posted @ 2021-05-14 11:23 白露~ 阅读(376) 评论(0) 推荐(0) 编辑