我是靠谱客的博主 忧虑秋天,最近开发中收集的这篇文章主要介绍1.如何管理百万长链接 - ZooKeeper Watcher机制一、业务背景二、ZooKeeper Watcher使用及原理三、ZK vs Redis选型,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、业务背景

公司经营自贩机售卖业务,技术框架使用Netty技术封装的网关实现服务端、自贩机客户端长连接。首先网关注册到ZooKeeper节点上,机器也注册到对应网关的节点下面。然后消息处理程序监听网关节点其对应的Topic,然后消息处理单元通过拉取上行消息Topic处理后,然后返回处理后的消息通过下行Topic处理。网关收到下行Topic消息后通过长连接下发给工控。技术关注:网关上下线的自动发现、工控长连接与ZK节点的相互绑定、网关节点如果被误删能自动恢复提升程序的安全、降低程序轮询节点的消耗。业务关注点:能准确的判断某台机器是否在线、机器总体在线情况统计准确。  这几点我们通过ZK Watcher解决。

二、ZooKeeper Watcher使用及原理

2.1、ZK Watcher解决什么问题?

ZK Watcher主要解决节点的变化并且通知的场景需求。比如:我们改变ZK节点配置如何能让所有的集群节点都收到通知并统一生效、在集群中我们某个程序挂掉如何将其踢出集群?ZK为了实现上述机制采用订阅通知的模式处理。当程序订阅某个ZK节点,这个节点发生节点删除、内容修改、节点创建、节点子节点变更都会通知订阅的程序。

2.2、如何使用ZK Watcher?

 

2.3、ZK Watcher特征

2.3.1、ZK Watcher事件注册

ZK Watcher需要注册才能生效,ZK有两类事件类型分别为节点事件类型注册、客户端事件注册。

事件注册方式注册事件类型
 zk.getData[获取数据注册]节点事件注册
zk.exists[节点是否存在注册]
zk.getChildren[获取子节点注册]
zk.ZooKeeper[zk创建连接注册]客户端事件注册

 

 

 

 

 

2.3.2、ZK Watcher事件类型

ZK Watcher分为节点事件类型通知、客户端状态类型通知两类。EventType主要处理节点创建、删除、节点内容变化、节点子节点变化等通知,KeeperState主要处理连接失败、连接成功、认证失败、只读连接创建、SASL身份验证、会话过期通知等。

事件类型事件类型事件类型事件类型描述
EventType[节点事件类型]
EventType.NodeCreated节点创建通知
EventType.NodeDeleted节点删除通知
EventType.NodeDataChanged节点data数据变化通知
EventType.NodeChildrenChanged一个节点的子节点数据变化通知
KeeperState[客户端状态事件类型]
KeeperState.Disconnected连接失败通知
KeeperState.NoSyncConnected过时,未同步连接 服务器不会产生此状态
KeeperState.SyncConnected连接成功通知
KeeperState.AuthFailed认证失败通知
KeeperState.ConnectedReadOnly只读连接创建通知
KeeperState.SaslAuthenticatedSASL身份验证通过通知
KeeperState.Expired会话过期通知

 

 

 

 

 

 

 

 

 

 

 

2.3.3、ZK Watcher事件特征

   ZK Watcher事件类型有3大特征分别为一次性、客户端串行执行、轻量。

  • 一次性

      

  • 串行执行

 

  • 轻量

 

2.4、ZK Watcher源码解读

 

2.5、ZK性能测试

 

三、ZK vs Redis选型

redis list、size结构

 

最后

以上就是忧虑秋天为你收集整理的1.如何管理百万长链接 - ZooKeeper Watcher机制一、业务背景二、ZooKeeper Watcher使用及原理三、ZK vs Redis选型的全部内容,希望文章能够帮你解决1.如何管理百万长链接 - ZooKeeper Watcher机制一、业务背景二、ZooKeeper Watcher使用及原理三、ZK vs Redis选型所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部