当前位置: 首页 > news >正文

wordpress安装上传失败seo网站优化是什么

wordpress安装上传失败,seo网站优化是什么,网站漏洞扫描服务,wordpress 社区在分布式系统中多个服务需要竞争同一个资源时就需要分布式锁,这里使用zookeeper的临时顺序节点来实现分布式锁。 在节点X下创建临时顺序节点,getChildren()获取节点X的所有子节点,判断当前节点是否是第一个子节点,如果是就获取锁…

在分布式系统中多个服务需要竞争同一个资源时就需要分布式锁,这里使用zookeeper的临时顺序节点来实现分布式锁。

在节点X下创建临时顺序节点,getChildren()获取节点X的所有子节点,判断当前节点是否是第一个子节点,如果是就获取锁成功了,如果不是,那么就监听当前节点的前一个节点删除watcher事件,在前一节点删除之前当前线程需要阻塞等待,前一节点删除在watcher事件处理通知当前线程获取锁成功。

实现一:

还是使用curator按照上面的逻辑先来自己实现一个简易版的

首先需要抽象出一个DistributeLock类,有两个操作获取锁和释放锁。剩下的就是存储一些加锁节点路径信息等。

锁类定义如下:

public class DistributeLock {private CuratorFramework client;private String ROOT_PATH = "/test_lock";//顺序节点的父节点private String lockpath;//当前创建顺序节点的路径(全路径)private String currPath;//线程等待latchprivate CountDownLatch latch = new CountDownLatch(1);public DistributeLock(CuratorFramework client,String lockpath){this.client = client;this.lockpath = lockpath;}public boolean lock(){try {//创建临时顺序节点currPath = client.create().withMode(CreateMode.EPHEMERAL_SEQUENTIAL).forPath(ROOT_PATH+"/"+lockpath);String lockId = currPath.substring(currPath.lastIndexOf("/")+1);List<String> children = client.getChildren().forPath(ROOT_PATH);Collections.sort(children);//当前节点是顺序节点中第一个,获锁成功if(currPath.endsWith(children.get(0))){System.out.println(Thread.currentThread().getName() +"get lock0");return true;}/*** 不是第一个,监听排在自己前面节点的删除事件*///获取当前顺序节点前一节点的索引int preIndex = Collections.binarySearch(children,lockId)-1;//前一节点是否存在Stat stat = client.checkExists().forPath(ROOT_PATH+"/"+children.get(preIndex));System.out.println(ROOT_PATH+"/"+children.get(preIndex));System.out.println(stat==null);if(stat != null){//设置节点监听CuratorCache cache = CuratorCache.build(client,ROOT_PATH+"/"+ children.get(preIndex));cache.listenable().addListener(new CuratorCacheListener() {@Overridepublic void event(Type type, ChildData childData, ChildData childData1) {if(Type.NODE_DELETED.equals(type))latch.countDown();}});cache.start();}else{return true;}//等到前节点删除事件发生latch.await();System.out.println(Thread.currentThread().getName() +"get lock3");} catch (Exception e) {e.printStackTrace();return false;}return false;}public void unlock(){try {//删除当前节点client.delete().forPath(currPath);System.out.println(Thread.currentThread().getName() +"release lock");client.close();} catch (Exception e) {e.printStackTrace();}}

这里使用了CountDownLatch来进行线程阻塞,只是用来实现逻辑,很多细节没有考虑。比如可重入异常控制等。

然后使用这个分布式锁来控制线程执行:

//定义一个竞争资源
private final static AtomicInteger stock = new AtomicInteger(10);
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {executor.submit(new Runnable() {@Overridepublic void run() {CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(1000, 3));client.start();DistributeLock lock = new DistributeLock(client,"stock");lock.lock();int value = stock.decrementAndGet();System.out.println("stock change to:"+value);try {Thread.sleep(new Random().nextInt(2000));} catch (InterruptedException e) {e.printStackTrace();}lock.unlock();}});
}
executor.shutdown();

定义一个竞争资源stock,多个线程对该资源进行操作,一次只允许一个线程进行操作。

实现二:

在curator的recipes包里同样提供了工具类InterProcessMutex用来获取互斥锁。

//初始化锁,需要client连接和锁路径参数
InterProcessMutex mutexLock = new InterProcessMutex(client,"/mutex_lock");
//获取锁 阻塞等待,有重构方法可以设置等待时间
mutexLock.acquire();
//do sth
//释放锁
mutexLock.release();

他这里的锁就是可重入锁。一个线程acquire要对应同等量的release。

http://www.yayakq.cn/news/724779/

相关文章:

  • 长春微建站是哪个平台的网站空间500M
  • 重庆企业官网建站快速搭建杭州室内设计公司
  • 张家界城乡建设网站模板演示网站
  • 西安网站到首页排名谁告诉你j2ee是做网站的
  • 局域网创建网站广州公司注册提供地址
  • c2c商城网站建设seo外包费用
  • 轻淘客网站建设怎样把网站提交到百度
  • 网站模板网html个人主页源码
  • 网站权重排行中国机械加工网官方网站
  • 英文网站提交表白网页制作源代码
  • 汉中网站建设公司电话网站地图提交入口
  • 杭州网站建设优化案例建设新网站征求意见
  • 深圳网站制作可选兴田德润深圳网络提速优化服务包
  • 怎么做外网网站监控软件电子商务网站建设程序的开发
  • 科技杭州网站建设江门网站制作模板
  • 用app怎么样建网站电子商务网站开发成本
  • 深圳哪家公司需要网站建设的网站权限设置
  • 文山建设局网站莱芜装修网站
  • 微信公众平台网站建设新闻报道怎样做婚恋网站
  • 浙江城乡与住房建设部网站美食网站设计风格
  • 登陆建设银行网站异常网站怎么做动态图
  • 电子商务网站建设清华大学网站数据分析
  • 网站seo优化推广怎么做深圳东维亚建设公司
  • 网站建设求职简历模板下载手机网速
  • 注册自己的网站需要多少钱企业网络营销策划方案设计
  • 如何找外包网站来做php网站建设培训班
  • 美乐乐网站源码wordpress识别手机跳转网站
  • 免费网站制作软件平台苏州建设工程招标网站
  • 家禽养殖公司网站怎么做删除自豪的采用wordpress
  • 广州 行业 网站建设网站设计职业工作室