ZooKeeper 基本概念并介绍RPC中Netty和Zookeeper的使用
前言
ZooKeeper 是一个分布式协调服务,可用于服务发现,分布式锁,分布式领导选举,配置管理等。Zookeeper提供一个类似Linux文件系统的属性结构,每个节点可存储少量的内存文件,并提供每个节点的监控与通知机制。本文介绍一下Zookeeper基本概念以及介绍一下通过Netty 结合 Zookeeper 的来体验一下Zookeeper 的使用流程。
1. ZooKeeper 基本概念
Session:
表示某个系统和ZooKeeper 之间的连接会话,连接后,此系统需要周期的向 ZooKeeper 发送心跳信息。如果 ZooKeeper 在特定时间内收不到心跳,就会认为这个系统已经死掉了, Session 就会结束。
会话延续能力,方便在断开时间不长的时候找回原来的会话。
znode:
树形结构中的每个节点叫做znode, 按是否可永久保存可以分为永久的znode(除非主动删除,否则一直存在),临时的znode(Session结束就会删除)
按是否唯一可以分为唯一节点和顺序znode。唯一节点再多个客户端同时创建时,只有一个可创建成功,其他均失败,创建的节点名称是和自己创建时指定的名称完全一样。顺序节点创建出的节点名在指定的名称之后带有10位10进制数的序号。多个客户端创建同一名称的节点时,都能创建成功,只是序号不同。
Watch:
某个客户系统(例如Batch Job)可以监控znode, znode节点的变化(删除,修改数据等)都可以通知Batch Job, 这样Batch Job可以采取相应的动作,例如争抢着去创建节点。
这个Watch是一次性的,即只能使用一次。也就是说,zookeeper通知过进程B之后,Watch就被用掉了,以后就不会再通知了。
如果进程B还需要被通知怎么办?很简单,那就在foo节点上再放一个新的Watch即可。如此这般下去,就可以保证一直被通知了。
2. 使用 Netty 将服务端提供的服务存根注册到 ZooKeeper 上
首先思考一下需要做那些事情:
- 服务端定义存根,开启Netty服务并基于Netty将存根注册到Zookeeper 上的临时节点上。 并和Zookeeper 保持Session 心跳
- 客户端watch Zookeeper 上的服务器列表,在服务端新增 删除服务时 进行获取服务端的可服务列表,进行访问。
- 客户端访问服务端地址,服务端Netty接收,通过反射获取结果返回给客户端。
项目案例:
ZooKeeper 基本概念并介绍RPC中Netty和Zookeeper的使用的更多相关文章
- 1、ZooKeeper 基本概念、使用方法、实践场景
ZooKeeper 基本概念 ZooKeeper 是面向分布式应用的协调服务,其实现了树形结构的数据模型(与文件系统类似),并且提供了简洁的编程原语.ZooKeeper 能够作为基础,用于构建更高层级 ...
- ZooKeeper 分布式协调服务介绍
0. 说明 从自己的独立博客迁移,该部分为 Zookeeper分布式协调服务介绍 原文链接 ZooKeeper 指南 1. ZooKeeper 简介 [官方介绍] ZooKeeper 是一种集中式服 ...
- 通过 Netty、ZooKeeper 手撸一个 RPC 服务
说明 项目链接 微服务框架都包括什么? 如何实现 RPC 远程调用? 开源 RPC 框架 限定语言 跨语言 RPC 框架 本地 Docker 搭建 ZooKeeper 下载镜像 启动容器 查看容器日志 ...
- 横趟!面试中遇到的 ZooKeeper 问题
本文作者:HelloGitHub-老荀 本文是 HelloZooKeeper 系列的最后一篇文章,接下来主要聊聊面试中如果被问到 ZooKeeper 的问题如何回答,也可以当作学完本系列的测试. 准备 ...
- RabbitMQ基础概念详细介绍
http://blog.csdn.net/column/details/rabbitmq.html 转至:http://www.ostest.cn/archives/497 引言 你是否遇到过两个(多 ...
- 柯南君:看大数据时代下的IT架构(2)消息队列之RabbitMQ-基础概念详细介绍
一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...
- 基于ZooKeeper和Thrift构建动态RPC调用
一.基本功能 实现服务端向ZooKeeper集群注册自己提供的服务,并且把自己的IP地址和服务端口创建到具体的服务目录下.客户端向ZooKeeper集群监听自己关注的RPC服务(例如:sayHello ...
- zookeeper基本概念及原理
zookeeper是一个分布式的,开源的分布式应用程序,该程序主要用于管理其他分布式应用程序.其他分布式应用程序可以基于zookeeper实现数据同步,配置维护和命名服务等等.zookeeper是Ha ...
- RabbitMQ学习总结(1)——基础概念详细介绍
一.基础概念详细介绍 1.引言 你是否遇到过两个(多个)系统间需要通过定时任务来同步某些数据?你是否在为异构系统的不同进程间相互调用.通讯的问题而苦恼.挣扎?如果是,那么恭喜你,消息服务让你可以很轻松 ...
随机推荐
- [Golang]-1 Slice与数组的区别
目录 数组 1.创建数组: 2.数组是值拷贝传递: 切片(slice) 1.首先看看slice的源码结构: 2.slice的创建: 3.slice使用make创建 4.切片作为参数传递 5.Golan ...
- Win10永久禁用驱动程序强制签名
在win10下用一个命令就可以禁用驱动程序强制签名 1.禁止强制签名,以管理员的身份运行cmd 执行以下命令 bcdedit.exe /set nointegritychecks on 恢复默认验证, ...
- Media Queries语法总结
Media Queries的语法如下所示: @media [media_query] media_type and media_feature 使用Media Queries样式模块时都必须以&quo ...
- MOOC学习成果认证及对高等教育变革路径的影响
MOOC是网络开放教育创新发展的产物,也是备受人们欢迎的网络学习途径.当前制约MOOC能否可持续深入发展的问题聚焦于MOOC学习成果能否得到合理的认证.MOOC学习成果认证分为非学分认证和学分认证.M ...
- Docker in Action All In One
Docker in Action All In One Docker https://www.docker.com/play-with-docker https://hub.docker.com/ $ ...
- web & js & touch & gesture
web & js & touch & gesture 触摸 & 手势 https://caniuse.com/#feat=touch js https://develo ...
- Flutter 学习路径
Flutter 学习路径 docs https://flutter.dev/docs https://flutter.dev/community/china https://flutter-io.cn ...
- qt char与code的相互转换
QString str = "A"; QChar c = str.at(0); // int v_latin = c.toLatin1(); // 不能转中文 int v_lati ...
- Dart 中断Future
更多 中断future 方法1) import 'package:async/async.dart'; void main() { var get = CancelableOperation.from ...
- SharedPreferences 数据传输中遇到的一些问题总结
原构想:MainActivity 设置两个按钮,btn1--跳转Main2Activity通过复选框组选择并提交,btn2--跳转Main3Activity通过RecycleView显示选择结果. 主 ...