2015-12-01 刘太华
再次看redis的分布式锁 话说以前我们也有用到这种需求, 在一个noSql数据库中,利用key的expire功能实现的一个锁,那时候因为memcache支持不是太好, 还是略有些问题,不能在很严苛的环境中使用。 主要是一个解锁时候的问题: 当clientA获得锁之后,进行后续逻辑block在某个地方,如果这个时间足够长,长过锁的有效时间(即set在memcache中的expires时间), 当clientA完成操作,解锁的时候,如果直接使用del操作, 很有可能就会把clientB刚刚完成的锁操作(set key)给删除掉。 解决的方法是在unlock前检查一下clientA自己之前的锁是否还有效, 然后再决定是否执行del 继续阅读 »
2017-02-21 Borg
Sharding & Data Distribution shard key 用于决定文档存于哪个 shard, 分为 range based 和 hash based。以 range based 为例,一个[min, max]范围形成一个chunk,取一个中间的数字将原来的区块分为两个(splite),再把新分出来的区块发送(migration)给其它shard。 继续阅读 »