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

惠州市+网站开发公司wordpress登陆密码错误

惠州市+网站开发公司,wordpress登陆密码错误,网站开发后台php技术,wordpress站内跳转有段时间没写博客了#xff0c;在整理之前写过的一套自定义框架#xff0c;并且整理好上传值github上了#xff0c;也有一些新功能还在开发#xff0c;欢迎大家使用#xff1a;一个好用的Http接口请求工具组件 可能今天这篇文章跟之前的比有些跳跃性#xff0c;一下子就…有段时间没写博客了在整理之前写过的一套自定义框架并且整理好上传值github上了也有一些新功能还在开发欢迎大家使用一个好用的Http接口请求工具组件 可能今天这篇文章跟之前的比有些跳跃性一下子就谈到了Zookeeper了不过也没关系啦先谈谈最常用然后在慢慢看Zooeeper的其他知识。 简单介绍 ZooKeeper致力于提供一个高性能、高可用且具备严格的顺序访问控制能力的分布式协调服务是雅虎公司创建是Google的Chubby一个开源的实现也是Hadoop和Hbase的重要组件。它的数据以树形结构类似于文件系统储存在内存当中由于数储存在内存当中并且每个节点都必须要有数据所以拿取数据效率特别快。 分布式锁功能与之前并发编程中的Lock功能一致主要是为了解决共享资源被竞争所导致的并发问题。由于并发编程当中锁是在当前的JVM当中而对于分布式的服务来说单纯的JVM的锁已经不起作用了不过实现功能还是一致。 监听机制 既然是锁那么就存在线程等待以及线程被唤醒功能所以就需要有一个监听机制当ZooKeeper上的锁被释放之后需监听到并且通知服务去获取锁资源正好在ZooKeeper当中存在一种监听机制为事件监听器Watcher 事件监听器客户端可以在节点上注册监听器当特定的事件发生后ZooKeeper会通知到感兴趣的客户端被监听的事件有NodeCreated节点创建、NodeDeleted节点删除、NodeDataChanged节点数据被改变、NodeChildrenChange子节点被修改 Node类型 基于ZooKeeper分布式锁必然基于节点在ZooKeeper创建节点共有四点类型 1、持久化节点PERSISENT 同一个节点路径只能创建一个节点并且连接创建节点后断开连接后节点仍然存在并且关闭服务会保存至磁盘上。 2、持久化顺序节点PERSISENT_SEQUENTIAL同一个节点路径可以创建多个节点并且ZooKeeper会自动分配一个按顺序的节点号断开连接后节点仍然会保存至磁盘。 3、临时节点EPHEMERAL在一个连接中同一路径下只能创建一个节点当创建节点的连接关闭后该节点会被删除如果非正常关闭连接则过一段时间后节点会被删除。 4、临时顺序节点EPHEMERAL_SEQUENTIAL同一路径下可以创建多个节点但是节点名称ZooKeeper会自动分配一个按顺序的节点号当连接关闭后这些节点会被删除。 实现方式 先引入一下zkClient的坐标 dependencygroupIdcom.101tec/groupIdartifactIdzkclient/artifactIdversion0.10/version /dependency 既然是锁那么必定是同一个节点而且要先去尝试获取到锁如果没有获取到那么就进入等待并且监听同一个节点是否被删除或者修改如果删除则唤醒等待的线程并且再次去获取ZooKeeper上的锁节点那么整体的流程如下 //锁节点 public static final String PATH /lock; //尝试获取锁 public abstract boolean tryLock(); //等待锁释放 public abstract void waitLock(); //释放锁 public abstract void unLock(); //获取锁 void getLock(){if(tryLock()) {//获取到锁后进行业务操作System.out.println(Thread.currentThread().getName() get Lock);}else {//没有获取则进入等待并且监听锁节点是否被释放waitLock();//再次获取锁getLock();} } 我这里是采用ZkClient进行操作ZooKeeper的先创建一个ZkClient连接 CountDownLatch latch null;private static final String CONNECTION 127.0.0.1:2181;ZkClient zkClient new ZkClient(CONNECTION,3000);先来看看尝试获取锁可以怎样实现 Override public boolean tryLock() {try {//创建临时节点也可以创建持久化节点到时候释放节点的时候删除就好了zkClient.createEphemeral(PATH, 1.getBytes());return true;} catch (Exception e) {//如果创建失败则获取节点锁失败则进入等待return false;} } 进入等待并且监听锁节点是否删除或者修改 Override public void waitLock() {//创建监听事件IZkDataListener listen new IZkDataListener() {public void handleDataChange(String dataPath, Object data) throws Exception {//当前方法为监听节点修改如果节点进行修改那么就会执行当前方法}public void handleDataDeleted(String dataPath) throws Exception {//我这里是释放锁为删除节点删除会执行当前方法latch.countDown();}};//注册监听器zkClient.subscribeDataChanges(PATH, listen);//如果ZooKeeper上存在锁节点那么进入等待if(zkClient.exists(PATH)) {//采用CountDownLatch等待latch new CountDownLatch(1);try {//进入等待latch.await();} catch (InterruptedException e) {e.printStackTrace();}}//删除监听器zkClient.unsubscribeDataChanges(PATH, listen); }然后就是释放节点了 Override public void unLock() {if(zkClient ! null) {System.out.println(Thread.currentThread().getName() unlock.. );//删除节点zkClient.delete(PATH);//关闭当前连接zkClient.close();} } 这么一套流程下来分布式锁的功能就完成了当这种实现的功能类似JVM锁中的非公平锁即没有先后顺序所言如果想要达到公平锁那么就必须得使用顺序节点进行操作了。 那么分布式公平锁监听的节点就不是同一个节点了而是监听当前节点的上一个节点 private String lockSeq null;private String before null;Override public boolean tryLock() {if(!zkClient.exists(PATH)) {try {zkClient.createPersistent(PATH, true);} catch (Throwable t) {//已经创建完毕并发问题抛异常处理}}if(lockSeq null) {lockSeq zkClient.createEphemeralSequential(PATH /, 1.getBytes());}ListString children zkClient.getChildren(PATH);if(lockSeq.equals(PATH / children.get(0))) {return true;}else {for(String str : children) {if(lockSeq.contains(str)) {break;}before PATH / str;}System.out.println(Thread.currentThread().getName() before node: before);return false;} }Override public void waitLock() {IZkDataListener listen new IZkDataListener() {public void handleDataChange(String dataPath, Object data) throws Exception {}public void handleDataDeleted(String dataPath) throws Exception {latch.countDown();}};zkClient.subscribeDataChanges(before, listen);if(zkClient.exists(before)) {latch new CountDownLatch(1);try {latch.await();} catch (InterruptedException e) {e.printStackTrace();}}zkClient.unsubscribeDataChanges(before, listen);}Override public void unLock() {if(zkClient ! null) {System.out.println(Thread.currentThread().getName() unlock.. );System.out.println(this node: lockSeq last node: before);zkClient.delete(lockSeq);} }实现的代码如上一个简单的实现方式存在单应用并发问题可以使用记录线程的方式解决并发问题大家可以各位去试一下个人觉得非公平锁的效率相比公平锁来说效率要高一点点不过对应大量的分布式服务去竞争锁资源的话个人建议还是使用公平锁避免阻塞时间过长导致服务业务长期停滞问题。 还会存在一个问题就是临时顺序节点在关闭服务的时候ZooKeeper上会等待几秒钟才会删除临时节点所以建议在程序中加上Hook钩子方法进行删除。 static {Runtime.getRuntime().addShutdownHook(new Thread(ZkClientLock::run));}private static void run() {System.out.println(关闭服务...);//删除所有临时顺序节点避免影响其他服务zkClient.delete(lockSeq);zkClient.close();}
http://www.pierceye.com/news/162807/

相关文章:

  • 大连网站建设哪家专业图片识别搜索引擎
  • 营销网站制作企业邓州市建设局网站
  • 如何从客户网站开发客户请解释网站开发的主要流程.
  • 做网站的价格 外贸最好科技广州网站建设
  • 烟台开发区网站做网站诊断步骤
  • 成都网站建设哪家技术好关于做网站的搞笑段子
  • 网站的设计制作流程计算机网站开发要考什么证
  • 个人域名 公司网站百度推广和网站建设
  • 哪里有做网站服务抖音开放平台是什么
  • 公司网站上传不了图片建设网站条件
  • 精美公司网站源码婚礼策划网站设计
  • 线上设计师网站网络维护是什么意思
  • 培训网站建设阿里云如何建设网站
  • 手机网站列表模板做一钓鱼网站吗
  • 太原网站建设方案策划请问有重庆有做网站吗
  • 网站备案购买语音网站怎么做
  • ftp上传文件到网站深圳成品网站超市
  • 网站开发时app打开很慢建设网站还要云服务器吗
  • 网站设计方案应该怎么做网站自适应开发
  • 徐州手机网站设计青龙县建设局网站
  • 罗湖网站建设费用帮忙做文档的网站
  • 如何在720云网站做全景视频域名注册网站查询工具
  • 网站定制开发流程和功能wordpress怎么看访问
  • 浙江省互联网建设网站python开发手机网站开发
  • 做网站需要多少钱一年动漫制作技术是学什么
  • 刘洋网站建设 够完美保卫处网站建设
  • 个人怎么申请营业执照北京朝阳区优化
  • 免费的舆情网站不用下载直接打开江西城乡建设网站
  • 那些网站是做金融行业网站主目录权限配置
  • 本地网站做不大wordpress 安全设置