1.Zookeeper的数据模型

(1) Zookeeper的数据模型,类似于树形结构:

(2) Zookeeper的每一个节点成为称为Znode,主要用来存储数据。

  1. data : 存储数据信息。
  2. acl   : 记录Znode的访问权限。
  3. child : 当前节点的子节点引用。
  4. stat :包含Znode的各种元数据,事物Id,版本号等。

(3) Znode的引用方式是路径引用,例如:

/core/UserCoreService

2.Zookeeper的事件通知

Watch相当于注册在特定Znode上的触发器,当该Znode中执行写操作时,服务端会异步通知客户端。

具体的交互过程:

  • 客户端调用 getData() 方法,watch参数是true。服务器接收到请求,返回节点数据,并且在对应的哈希表里插入被 Watch的Znode路径,以及Watcher列表。
  • 当被Watch的Znode已删除,服务端会查找哈希表,找到该Znode对应的所有Watcher,异步通知客户端,并且删除哈希表中对应的key-value;

3.实现注册与发现

(1)注册

提供者将自身信息(ip,port,权重等)注册到zookeeper上。zookeeper为其创建一个Znode,该节点的data中保存提供者的信息。

(2)发现

消费者根据路径参数去zookeeper中getData()自己需要调用的提供者信息,将服务注册信息缓存到本地。

转载于:https://www.cnblogs.com/zhouzhile/p/11194439.html

Zookeeper实现注册与发现相关推荐

  1. SpringBoot系列:9. 分布式系统,Dubbo,Zookeeper服务注册与发现

    前言 本章主要对分布式系统,RPC的实现方式和Zookeeper实现做一个详细的概述并通过实战代码加深对他们的了解. 1. 分布式 什么是分布式系统? :"分布式系统是若干独立计算机的集合, ...

  2. 8、Zookeeper服务注册与发现原理浅析

    了解Zookeeper的我们都知道,Zookeeper是一种分布式协调服务,在分布式应用中,主要用来实现分布式服务的注册与发现以及分布式锁,本文我们简单介绍一下Zookeeper是如何实现服务的注册与 ...

  3. Zookeeper服务注册与发现

    Zookeeper作为服务注册与发现的解决方案,它有如下优点: 1. 它提供的简单API 2. 已有互联网公司(例如:Pinterest,Airbnb)使用它来进行服务注册与发现 3. 支持多语言的客 ...

  4. Zookeeper 服务注册与发现01——服务提供者

    <!-- SpringBoot整合zookeeper客户端 --><dependency><groupId>org.springframework.cloud< ...

  5. Zookeeper 服务注册与发现02——服务消费者

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  6. zookeeper查看注册服务器,zookeeper服务器注册

    Dubbo之旅-注册中心-Zookeeper initLimit:这个配置项是用来配置Zookeeper 接受客户端(这里所说的客户端不是用户连接 Zookeeper 服务器的客户端,而是 Zooke ...

  7. Web Api 基于Zookeeper的服务注册与发现

    差异 基于Nginx的服务提供和消费 基于zookeeper的服务注册和发现 zk的负载均衡是可以调控,nginx只是能调权重,其他需要可控的都需要自己写插件:但是nginx的吞吐量比zk大很多,可以 ...

  8. 基于Zookeeper实现简易版服务的注册与发现机制

    一.功能要求 基于Zookeeper实现简易版服务的注册与发现机制 启动2个服务端 将服务端IP和端口信息注册到Zookeeper上 启动1个客户端 从Zookeeper中获取2个服务端节点信息 客户 ...

  9. Eureka的初理解【服务注册与发现、高可用集群、自我保护机制、与Zookeeper的比较】

    Eureka的初理解 什么是Eureka? Eureka[读音要知道怎么读] Netflix 在设计 Eureka 时,遵循的就是AP原则(CAP文章下面有介绍). Eureka是Netflix的一个 ...

最新文章

  1. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构
  2. 微信小程序-canvas绘制文字实现自动换行
  3. PHP正则表达式的使用
  4. 腾讯企业邮箱API实现单点登录和获取企业未读邮件
  5. nginx 入门配置
  6. 电子元器件首饰!送给你喜欢的女孩!
  7. Enterprise Library 4.1 快速上手(图)
  8. python 保存图片代码_最简单的selenium+Python自动右键保存图片
  9. 字符串比较strcmp
  10. linux下日志文件的查找(tail和grep)
  11. keycloak mysql_keycloak搭配mysql
  12. 程序员面试金典——1.6像素翻转
  13. postman 配置统一的ip地址
  14. linux监测服务日志脚本,LINUX下的一个性能监测脚本
  15. 2016年最火的15款HTML5游戏引擎
  16. 一篇文章看明白 Android 从点击应用图标到界面显示的过程
  17. 七段数码显示管—设计报告,visio图,Multisim仿真
  18. 理解微分方程和线性代数的联系
  19. Opencv存图读图
  20. 四旋翼无人机学习第19节--allgero的板框导入,网表导入

热门文章

  1. NOIP模拟测试34「次芝麻·呵呵呵·长寿花」
  2. C#基础加强(8)之委托和事件
  3. RN 47 中的 JS 线程及 RunLoop
  4. 网卡驱动程序之编写虚拟网卡(二)
  5. 【IE6的疯狂之四】IE6文字溢出BUG
  6. beam search算法
  7. 卓金武——从数学建模到MATLAB
  8. java+解析占位符,如何告诉Spring使用Java映射来解析属性占位符?
  9. 6个步骤卸载wine
  10. php队列失败是指什么,队列是什么意思