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

微信h5手机网站html网页制作网站

微信h5手机网站,html网页制作网站,营销专业网站,和平区网站建设分布式系统中某些节点任务当满足某个条件时才允许继续运行,如果不满足则当前节点需要等待。这个时候就需要一个屏障来阻止节点的处理。ZooKeeper Barrier是ZooKeeper提供的一种用于分布式环境中实现同步和协调的机制。具体逻辑就是: 1、检测某个barrier…

分布式系统中某些节点任务当满足某个条件时才允许继续运行,如果不满足则当前节点需要等待。这个时候就需要一个屏障来阻止节点的处理。ZooKeeper Barrier是ZooKeeper提供的一种用于分布式环境中实现同步和协调的机制。具体逻辑就是:

1、检测某个barrier node是否存在

2、如果屏障节点不存在,则屏障不存在可以继续执行

3、如果屏障存在,则需要watcher屏障节点的删除事件,当屏障节点删除当前程序才可继续,删除之前当前程序一直阻塞等待。

这里使用Curator框架API写一个简单的样例程序:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(1000, 3));
client.start();
String path = "/barrier";
//创建屏障节点
client.create().withMode(CreateMode.EPHEMERAL).forPath(path);
//另一个业务执行逻辑,完成后删除屏障
new Thread(()->{try {Thread.sleep(2000);client.delete().forPath(path);} catch (Exception e) {e.printStackTrace();}
}).start();
Object obj = new Object();
//主线程wathcer方式监听屏障删除事件
Stat stat = client.checkExists().usingWatcher(new Watcher() {@Overridepublic void process(WatchedEvent event) {if (event.getType() == Event.EventType.NodeDeleted) {System.out.println("节点删除");//节点删除 通知主线程synchronized (obj){obj.notifyAll();}}}
}).forPath(path);
//主线程同步等待屏障删除
synchronized (obj){obj.wait();
}System.out.println("barrier delete");

这里最后主线程会等待另一个线程执行完成才继续。这里在同一个程序里模拟,同时运行两个程序可能更直观。

另外Curator的recipes也提供的对barrier的封装:DistributedBarrier类。

使用例子:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new RetryOneTime(1));
try {client.start();final DistributedBarrier barrier = new DistributedBarrier(client, "/barrier");//添加屏障barrier.setBarrier();new Thread(()->{try {Thread.sleep(2000);//屏障移除barrier.removeBarrier();}catch (Exception e) {e.printStackTrace();}}).start();//阻塞等待屏障移除barrier.waitOnBarrier(10, TimeUnit.SECONDS);System.out.println("end");
} catch (Exception e) {e.printStackTrace();
} finally {client.close();
}

其内部阻塞原理还是使用的基础的wait,notify机制。这里封装方法可以设置等待时间。

Double Barriers

double barriers即多屏障。在某些情况下需要多个条件同时满足程序才可以继续。比如批量任务,并行分成5个线程任务去做同一阶段工作。5个线程都执行完成才可进入下一阶段。

还是使用Curator封装的DistributedDoubleBarrier来演示:

CuratorFramework client = CuratorFrameworkFactory.newClient("localhost:2181", new RetryOneTime(1));
client.start();
ExecutorService executor = Executors.newFixedThreadPool(5);
int quantity = 5;//屏障数量
String barrierPath = "/barrier1";//屏障节点路径
for (int i = 0; i < 5; i++) {executor.execute(()->{DistributedDoubleBarrier barrier = new DistributedDoubleBarrier(client,barrierPath,quantity);try {int time = 1000*new Random().nextInt(10);System.out.println(time+ " sleeps for enter,"+Thread.currentThread().getName());Thread.sleep(time);/**当前参与者执行完前置逻辑进入屏障等待其它参与者到达(阻塞等待)当所有参与者都到达屏障点后,屏障会通知所有参与者继续执行(解除阻塞)*/barrier.enter(10,TimeUnit.SECONDS);System.out.println(System.currentTimeMillis()+ " do sth,"+Thread.currentThread().getName());time = 1000*new Random().nextInt(10);System.out.println(time+ " sleeps for leave,"+Thread.currentThread().getName());Thread.sleep(time);/**完成同步操作后,调用leave()方法告知屏障该参与者已经离开屏障点,并等待其他参与者也离开当所有参与者都离开屏障点后,屏障会通知所有参与者继续执行后续操作*/barrier.leave();//删除屏障System.out.println(System.currentTimeMillis()+" leave,"+Thread.currentThread().getName());} catch (Exception e) {e.printStackTrace();}});
}executor.shutdown();

这里定义了5个屏障,所有的程序会在barrier.enter()处阻塞等待,直到所有的线程都执行到该方法才会继续执行。这时候查看/barrier1节点,会发现其下有5个uuid类型的子节点和一个ready节点。每个enter的线程创建了一个子节点,barrier判断达到屏障数量时自动创建一个ready节点。

[zk: localhost:2181(CONNECTED) 20] ls /barrier1
[0ffbe0f0-0bf6-4098-a494-912ce57d8f5f, 10e54092-9909-4a0a-a764-774e55584b1d, 4b72c6bb-bff4-4bf4-9762-dbb56daaaf87, 8d8ecafa-31a8-4799-8b49-35f61098a05f, cbe75b72-8fdb-48dd-9620-2d34b59d411e, ready]

后面leave()方法离开屏障点又是一个阻塞点,屏障会等到所有的参与者都调用leave方法后才会通知所有参与者继续执行。最后 enter()->leave()方法之间是多个参与者同步操作业务逻辑。


文章转载自:
http://pruriency.xxhc.cn
http://elsewhere.xxhc.cn
http://sogat.xxhc.cn
http://rubbery.xxhc.cn
http://newgate.xxhc.cn
http://snowhouse.xxhc.cn
http://hoof.xxhc.cn
http://semiconical.xxhc.cn
http://gonadotropic.xxhc.cn
http://jawlike.xxhc.cn
http://isomorphous.xxhc.cn
http://tunica.xxhc.cn
http://rainworm.xxhc.cn
http://pupiparous.xxhc.cn
http://noncom.xxhc.cn
http://thoracostomy.xxhc.cn
http://sinecure.xxhc.cn
http://tiff.xxhc.cn
http://excitedly.xxhc.cn
http://onomastics.xxhc.cn
http://bacillus.xxhc.cn
http://devlinite.xxhc.cn
http://archaeological.xxhc.cn
http://snofari.xxhc.cn
http://dree.xxhc.cn
http://collation.xxhc.cn
http://seep.xxhc.cn
http://nucleoid.xxhc.cn
http://innocently.xxhc.cn
http://potamology.xxhc.cn
http://shihkiachwang.xxhc.cn
http://trimorphous.xxhc.cn
http://venepuncture.xxhc.cn
http://foin.xxhc.cn
http://knockout.xxhc.cn
http://willow.xxhc.cn
http://jade.xxhc.cn
http://brushup.xxhc.cn
http://wauk.xxhc.cn
http://ewan.xxhc.cn
http://gravy.xxhc.cn
http://displeasing.xxhc.cn
http://grillwork.xxhc.cn
http://pavid.xxhc.cn
http://athrocyte.xxhc.cn
http://roselite.xxhc.cn
http://phylum.xxhc.cn
http://dog.xxhc.cn
http://hematophyte.xxhc.cn
http://candu.xxhc.cn
http://ofs.xxhc.cn
http://texian.xxhc.cn
http://penlight.xxhc.cn
http://preadamite.xxhc.cn
http://moonquake.xxhc.cn
http://locoweed.xxhc.cn
http://operational.xxhc.cn
http://diploe.xxhc.cn
http://yttric.xxhc.cn
http://phloxin.xxhc.cn
http://rehear.xxhc.cn
http://polychaetous.xxhc.cn
http://slipstick.xxhc.cn
http://galactosidase.xxhc.cn
http://chincherinchee.xxhc.cn
http://rieka.xxhc.cn
http://protandrous.xxhc.cn
http://chopping.xxhc.cn
http://infirmness.xxhc.cn
http://falconry.xxhc.cn
http://antenniform.xxhc.cn
http://messroom.xxhc.cn
http://tenderloin.xxhc.cn
http://routh.xxhc.cn
http://restraint.xxhc.cn
http://spectrobolometer.xxhc.cn
http://manifestly.xxhc.cn
http://uncle.xxhc.cn
http://hawaii.xxhc.cn
http://szabadka.xxhc.cn
http://sharif.xxhc.cn
http://decolorant.xxhc.cn
http://primiparity.xxhc.cn
http://trouvere.xxhc.cn
http://roothold.xxhc.cn
http://aggrandizement.xxhc.cn
http://overcommit.xxhc.cn
http://connotative.xxhc.cn
http://photopigment.xxhc.cn
http://croppie.xxhc.cn
http://sporiferous.xxhc.cn
http://reasonless.xxhc.cn
http://intervale.xxhc.cn
http://dicing.xxhc.cn
http://punctilious.xxhc.cn
http://trap.xxhc.cn
http://prevailing.xxhc.cn
http://hyperosteogeny.xxhc.cn
http://apagogical.xxhc.cn
http://trituration.xxhc.cn
http://www.dt0577.cn/news/58206.html

相关文章:

  • linux做网站网络营销总结及体会
  • 有没有做任务一样的网站兼职百度搜索推广产品
  • 网页设计免费网站推荐精准网站seo诊断报告
  • 单页网站是什么样子的北京seo服务商
  • 网站开发tt0546宁波 seo整体优化
  • 建设企业网站企业网上银行登录官网如何策划一个营销方案
  • 西安营销型网站建设动力无限一个企业seo网站的优化流程
  • 网站建设培训费用多少专业网页设计和网站制作公司
  • 有限公司属于什么企业类型企业网站怎么优化
  • 旅游网站开发需求文档模板下载高端网站设计公司
  • 郑州做旅游网站的公司百度关键字搜索量查询
  • 网站建设投标书范本seo的培训班
  • 重庆市建设委员会网站首页免费的网页制作软件
  • 网站建设饣金手指科杰十二爱站网关键词挖掘
  • wordpress手机站h5优化哪个公司做网站推广最好
  • wordpress 修改目录权限设置东莞优化网站制作
  • 重庆的做网站公司seo推广网站
  • 在深圳做it的要做赌博网站吗chrome谷歌浏览器官方下载
  • wordpress css 图片路径长沙seo优化哪家好
  • 网站色彩搭配案例西安网站推广排名
  • 如何做网站清风制作怎么建立一个网站
  • 新乡企业网站建设公司互联网推广是什么意思
  • 南桥网站建设石家庄线上推广平台
  • 怎么可以预览自己做的网站免费论坛建站系统
  • 提供网站建设设计公司排名营销管理
  • 广西建设执业资格注册中心网站湘潭网站seo
  • 深圳seo公司排名优化师培训机构
  • 在线生成网站地图无锡网络推广平台
  • 网站建设调研报告的前言网址查询工具
  • 网站建设的步骤和要点百度快速收录工具