一亩草坪需要多少克草籽?

小说:一亩草坪需要多少克草籽?作者:马安通更新时间:2019-04-24字数:30363

老杰克正色道:“我们每个人都有属于自己的武魂,到了六岁左右就要进行觉醒仪式。有了武魂,会对我们某方面的能力增强。哪怕是最普通的武魂,也会有所帮助。万一你要是拥有一个出色的武魂,可以进行修炼的话,那么,你甚至有可能成为魂师。觉醒仪式一年才有一次,我可不能让你错过了。是诺丁城武魂分殿的执事大人亲自来帮助我们村里的孩子觉醒呢。那位执事大人可是以为大魂师级别的魂师。”

高度55公分的海桐多少钱一棵?

“小欣,幸苦你了。”吴市长发怒后,看到唐欣还在身旁,用力的挤出了一丝微笑,说道。
雷光护法显圣真君乃是封神之劫时由当时还是天帝的太乙救苦天尊亲笔封圣的著名战将,哪里想得到自己竟会奈何不了一个劫狱的小贼?

可以说让她的实力在短时间内直线上升,夕日红最缺的是什么?那就是一个老师,有了刘皓的感悟已将让她潜龙出渊了,现在她的脑中就好像多出了历代夕日家族的族长作为她的老师。

先来说说什么是分布式锁,简单来说,分布式锁就是在分布式并发场景中,能够实现多节点的代码同步的一种机制。从实现角度来看,主要有两种方式:基于redis的方式和基于zookeeper的方式,下面分别简单介绍下这两种方式:

一、基于redis的分布式锁实现

1.获取锁 

redis是一种key-value形式的NOSQL数据库,常用于作服务器的缓存。从redis v2.6.12开始,set命令开始变成如下格式:

SET key value [EX seconds] [PX milliseconds] [NX|XX]

除key和value外,EX是超时时间,NX表示只有在key不存在的时候才会设置key的值,而XX表示在key存在的时间才会设置key的值。NX机制就是基于redis分布式锁的核心。能够解决以下问题:

1)节点1获取key,并且设置超时时间后,还没来得及释放就挂掉了——这里EX超时时间会发挥作用,超时后自动释放锁。

2)刚获取到锁,还没来得及设置超时时间就挂了——这里设置key和设置超时时间是原子操作,如果出现这种情况,会返回0,即获取不到锁。

2.释放锁

为了解决非原子操作带来的问题,常采用lua脚本实现。lua脚本的操作会被认为是原子性的,类似于事务。伪代码如下:

String luaScript =

"if redis.call("get", KEYS[1]) == ARGV[1] then return redis.call("del", KEYS[1]) else return 0 end";

redisClient.eval(luaScript , Collections.singletonList(key), Collections.singletonList(threadId)); 

二、基于zookeeper的分布式锁实现 

zookeeper是一种分布式协调服务,其中每个节点称为znode,并有自己独立的路径。 znode有四种类型:

  持久节点:默认的节点类型。创建节点的客户端与zookeeper断开连接后,该节点依旧存在 。
  持久节点顺序节点:所谓顺序节点,就是在创建节点时,Zookeeper根据创建的时间顺序给该节点名称进行编号:
  临时节点:和持久节点相反,当创建节点的客户端与zookeeper断开连接后,临时节点会被删除:
  临时顺序节点:结合和临时节点和顺序节点的特点:在创建节点时,Zookeeper根据创建的时间顺序给该节点名称进行编号;当创建节点的客户端与zookeeper断开连接后,临时节点会被删除。

下面看看是怎样基于上面的四类节点实现分布式锁的。

1.获取锁

1)在Zookeeper当中创建一个持久节,当第一个客户端Client1想要获得锁时,需要在这个节点下面创建一个临时顺序节点。
2)Client1查找持久节点下面所有的临时顺序节点并排序,判断自己所创建的节点是不是顺序最靠前的一个。如果是第一个节点,则成功获得锁。
3)如果再有一个客户端 Client2 前来获取锁,则在持久节点下面再创建一个临时顺序节点Lock2。
4)Client2查找持久节点下面所有的临时顺序节点并排序,判断自己所创建的节点Lock2是不是顺序最靠前的一个,结果发现节点Lock2并不是最小的。
于是,Client2向排序仅比它靠前的节点Lock1注册Watcher,用于监听Lock1节点是否存在。这意味着Client2抢锁失败,进入了等待状态。
5)如果又有一个客户端Client3前来获取锁,则在持久节点下载再创建一个临时顺序节点Lock3。
Client3查找持久节点下面所有的临时顺序节点并排序,判断自己所创建的节点Lock3是不是顺序最靠前的一个,结果同样发现节点Lock3并不是最小的。
于是,Client3向排序仅比它靠前的节点Lock2注册Watcher,用于监听Lock2节点是否存在。这意味着Client3同样抢锁失败,进入了等待状态。

2.释放锁 

释放锁就比较简单了,因为前面创建的临时顺序节点,所以在出现下面两种情况时,都会自动释放锁:

1)任务完成后,Client会释放锁。

2)任务没完成,Client就崩溃了,也会自动释放锁。 

编辑:王丁纯辛

发布:2019-04-24 01:36:24

当前文章:http://cnsdbtzg.com/xbbj3.html

400万棵丰花玫瑰苗开园出售,好货也低价,真买苗的来 1.2米高北海道黄杨今年什么价格? 庭院可以种植花叶玉簪吗? 木香小苗哪里产的最多? 丁香树价格哪里便宜? 紫藤花有哪些颜色? “黄山栾树”难道就真的是黄山的吗? 美人蕉大型集中产区,美人蕉报价风向标,

50105 30919 98167 60772 39431 68946 77083 44122 32162 86924 11226 58138 10530 29068 60913 27295 84406 93909 38250 11829

我要说两句: (0人参与)

发布