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

网站做违法的事情投诉把做的网站发布打万维网上

网站做违法的事情投诉,把做的网站发布打万维网上,手机网站怎么做才适合优化,买个域名多少钱一年zookeeper 的 watcher 机制,可以分为四个过程: 客户端注册 watcher。服务端处理 watcher。服务端触发 watcher 事件。客户端回调 watcher。 其中客户端注册 watcher 有三种方式,调用客户端 API 可以分别通过 getData、exists、getChildren …

zookeeper 的 watcher 机制,可以分为四个过程:

  • 客户端注册 watcher。
  • 服务端处理 watcher。
  • 服务端触发 watcher 事件。
  • 客户端回调 watcher。

其中客户端注册 watcher 有三种方式,调用客户端 API 可以分别通过 getData、exists、getChildren 实现,利用前面章节创建的 maven 工程,新建 WatcherDemo 类,以 exists 方法举例说明其原理。

// 导入 ZooKeeper 相关的类
import org.apache.zookeeper.WatchedEvent;
import org.apache.zookeeper.Watcher;
import org.apache.zookeeper.ZooKeeper;
import org.apache.zookeeper.KeeperException;
import org.apache.zookeeper.data.Stat;// 定义 WatcherDemo 类,实现 Watcher 接口
public class WatcherDemo implements Watcher {// 静态 ZooKeeper 客户端static ZooKeeper zooKeeper;// 静态代码块,初始化 ZooKeeper 客户端static {try {// 创建 ZooKeeper 客户端实例,连接到 ZooKeeper 服务器zooKeeper = new ZooKeeper("192.168.3.39:2181", 4000, new WatcherDemo());} catch (IOException e) {e.printStackTrace();}}// 重写 Watcher 接口的 process 方法,处理 ZooKeeper 事件@Overridepublic void process(WatchedEvent event) {// 打印事件类型System.out.println("eventType:" + event.getType());// 判断事件类型if (event.getType() == Event.EventType.NodeDataChanged) {// 节点数据改变事件try {// 重新注册对节点的监视zooKeeper.exists(event.getPath(), true);} catch (KeeperException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}}// main 方法,程序入口public static void main(String[] args) throws IOException, KeeperException, InterruptedException {// 定义节点路径String path = "/watcher";// 判断节点是否存在if (zooKeeper.exists(path, false) == null) {// 创建节点,并设置初始数据zooKeeper.create(path, "0".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);}// 睡眠 1 秒Thread.sleep(1000);// 打印分割线System.out.println("-----------");// 重新注册对节点的监视,并设置 WatcherStat stat = zooKeeper.exists(path, true);// 等待用户输入System.in.read();}
}

运行完程序,控制台显示:

此时启动 zookeeper 命令行终端,查看并且删除 watcher 节点:

IDE 控制台输出,触发了节点删除事件:

客户端发送请求给服务端是通过 TCP 长连接建立网络通道,底层默认是通过 java 的 NIO 方式,也可以配置 netty 实现方式。

注册 watcher 监听事件流程图:

1、客户端发送事件通知请求

在 Zookeeper 类调用 exists 方法时候,把创建事件监听封装到 request 对象中,watch 属性设置为 true,待服务端返回 response 后把监听事件封装到客户端的 ZKWatchManager 类中。

2、服务端处理 watcher 事件的请求

服务端 NIOServerCnxn 类用来处理客户端发送过来的请求,最终调用到 FinalRequestProcessor,其中有一段源码添加客户端发送过来的 watcher 事件:

然后进入 statNode 方法,在 DataTree 类方法中添加 watcher 事件,并保存至 WatchManager 的 watchTable 与 watchTable 中。

3、服务端触发 watcher 事件流程:

若服务端某个被监听的节点发生事务请求,服务端处理请求过程中调用 FinalRequestProcessor 类 processRequest 方法中的代码如下所示:

删除调用链最终到 DataTree 类中删除节点分支的触发代码段:

进入 WatchManager 类的 triggerWatch 方法:

继续跟踪进入 NIOServerCnxn,构建了一个 xid 为 -1,zxid 为 -1 的 ReplyHeader 对象,然后再调用 sendResonpe 方法。

4、客户端回调 watcher 事件

客户端 SendThread 类 readResponse 方法接收服务端触发的事件通知,进入 xid 为 -1 流程,处理 Event 事件。

希望你也学会了,更多编程源码模板请来二当家的素材网:https://www.erdangjiade.com

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

相关文章:

  • 现在做网站用什么软件微信小程序开发工具怎么用
  • 广东网站建设哪家专业天台县低价网站建设
  • 旅游网站开发需求文档模板网页设计网站网站建设课程设计
  • 阳西哪里有做网站拉新工作室在哪里接项目
  • 网站做几级等保设计公司灰白色调网站
  • 做cpa用什么网站邯郸做移动网站找谁
  • 上海比较好的网站建设公司全部免费网站软件
  • 长沙营销型网站建设网站建设如何存数据
  • 律师网站建设方案广州自助网站推广制作
  • 瑞安专业网站建设阿里邮箱企业版app下载
  • 网站建设服资讯网站做app
  • 门户网站兴化建设局 金宁波网站建设最好
  • 浙江住房和城乡建设网站铜陵电子商务网站建设
  • 一般网站服务器配置网站上传的图片不显示
  • 深圳医疗网站建设码制作二维码官网
  • 网站开发的形式是郑州网站推广优化外包公司
  • 临沂的各类网站建设河南省新闻出版学校怎么样
  • 浙江省建设厅干部学校门户网站鄞州区建设局网站
  • 网站半年了 没有流量个人主页设计模板图片
  • 郑州网站设计费用非凡网站建设平台网页
  • 阿里巴巴网站网络营销的平台如何利用社交网站做招聘
  • 天津品牌网站建设做视频网站的方法
  • wordpress网站变灰seo推广主要做什么
  • 平台和自建网站服务提供者wordpress用多大主机
  • 网站设计编程网站分享到朋友圈代码
  • 烟台环保网站建设哪个素材网站做美工最好
  • 公司网站后台管理教程微信开放平台怎么注册
  • 长沙企业网站制作移动深圳网站
  • 怎么用ai做企业网站框架公司推广做哪个网站吗
  • 百度收录排名好的网站上海公司网站建设以子