第35周Zookkeeper+Dubbo Zookkeeper
第35周ZooKeeper+Dubbo ZooKeeper
一、周介绍
本周主要内容包括ZooKeeper、Dubbo以及面试三部分。
1.1 ZooKeeper
-
节点介绍
- ZooKeeper的数据结构核心是每个node节点。节点具有属性、特点和功能,其数据结构为树形结构,类似于多叉树,分隔符是一杠一杠的形式。
- 节点特点包括可以存储数据(但数据要简洁)、具有树形结构且有父子节点之分、有版本号概念用于防止误操作、可以在节点上设置监听器以感知变化。
- 节点类型包括持久节点和临时节点,以及顺序节点。顺序节点可以在节点后面加十位数字,保证在同一个父节点下顺序唯一。
-
节点常见命令
- 掌握ZooKeeper的常见命令是基础内容,包括增删改查操作以及与版本号相关的高级命令。
- 常用命令有:create(创建节点)、delete(删除节点)、get(获取节点信息)、set(修改节点内容)、ls(查看节点内容)等。
- 高级命令涉及版本号、顺序节点和临时节点等内容,例如使用版本号可以避免误删除,顺序节点可以在节点后面加数字表示顺序。
-
watch机制和acl权限控制
- watch机制 :watcher机制是ZooKeeper的重要特性,相当于一个监视器,能够感知节点内容的变化、删除以及子节点的操作,并及时进行通知。适合使用它的场景包括配置中心等,当配置数据发生变化时,可以通知到监听的客户端。
- acl权限控制 :acl权限控制机制包括create、read、write、delete以及admin五种权限。权限方案有Word权限(所有人均可操作)、OS权限(经过认证的用户可以使用)、OS+Digest权限(增加密码验证)、IP权限(仅特定IP可访问)等。
-
客户端开发
- 原生客户端 :使用ZooKeeper提供的Java原生客户端可以进行节点的创建、连接、删除等操作,还可以进行监听事件的处理。
- Curator客户端 :Curator客户端相比原生客户端具有优势,如断线重连功能。Curator提供了更便捷的操作方式,例如创建节点时可以指定临时或持久,设置节点值,进行增删改查操作,还可以实现永久监听。
1.2 Dubbo
-
RPC调用
- Dubbo是rpc领域的明星框架。在Dubbo下,各服务之间的关系以及如何进行rpc远程调用是重要的内容。Dubbo特别适合作为注册中心,可以整合Dubbo进行通信。
-
整合案例开发
- 通过整合Dubbo开发多模块项目,利用Dubbo进行通信,与Spring Cloud的通信方式不同,Dubbo通过RPC调用减少对HTTP接口的依赖。在开发中对比RPC和HTTP的优劣,了解它们的区别。
1.3 面试讲解
-
线程进阶面试题
- 对线程进阶的常见面试题进行系统性梳理,以问题和回答的形式演练如何回答这些问题,引导面试官。
-
分布式微服务面试题
- 系统性梳理分布式微服务的知识,介绍与Spring Cloud、ZooKeeper等内容相关的面试题,如“你如何理解ZooKeeper?”以及“它在什么场景下适用?”等问题。
二、ZooKeeper章节介绍
2.1 ZooKeeper概述
ZooKeeper是一个重要的概念,用于解决分布式系统中的协调问题。它的诞生源于雅虎研究院的研究小组,旨在解决单点问题,提供一个高可用、数据一致的分布式协调框架。
2.2 ZooKeeper特点和作用
-
特点
- 顺序一致性 :同一个客户端发送的请求会按照顺序生效。
- 原子性 :要么全部成功,要么全部失败,没有中间结果。对于ZooKeeper集群的操作,它会保证集群中所有应用的状态是一致的。
- 单一系统映像 :无论连接到哪一个服务器,其对外提供的数据都是一致的。
- 可靠性 :执行一个内容后,该内容会被一直保留,除非有其他人对该内容进行更改。
- 及时性 :对某一个服务器进行了数据操作,那么在一个特定的时间之内,所有的服务器都会看到该操作,并且应用成功。
-
作用
- 分布式锁 :利用节点的唯一性特性,在分布式情况下,必须有一个全局唯一的标记,获取此标记即获得锁。
- 配置中心 :利用ZooKeeper的监听能力(watcher),当某个节点的内容发生变化,所有监听过该节点的客户端都能收到通知。
- 服务注册与发现 :可以用于保存与服务相关的信息,当有新服务出现或旧服务发生变化时,这些信息可以稳定地对外提供。
- 分布式唯一ID :ZooKeeper能够对外提供统一一致的数据,可以用于生成唯一的ID,如在生成订单时确保每个订单号都是唯一的。
2.3 ZooKeeper安装配置
-
Linux下安装
- 下载ZooKeeper的最新版本,解压缩后进行配置。将
conf/zoo_sample.cfg
复制为zoo.cfg
,修改其中的配置项,如tickTime
和clientPort
。使用bin/zkServer.sh
脚本启动和关闭ZooKeeper服务。
- 下载ZooKeeper的最新版本,解压缩后进行配置。将
-
Windows下安装
- 在Windows系统中,下载相应的文件并解压缩。执行
.cmd
文件启动服务,若未提前复制配置文件,可能会遇到报错。若配置已完成,执行该文件即可启动。
- 在Windows系统中,下载相应的文件并解压缩。执行
-
Mac OS下安装
- 支持通过brew进行安装,使用
brew install
命令即可完成安装。
- 支持通过brew进行安装,使用
2.4 ZooKeeper重要概念
-
节点ZNode
- ZNode是ZooKeeper的基本数据单元,具有多种性质和特点。数据结构为树形结构,可以存储信息,但数据要尽量简洁。节点分为持久节点和临时节点,以及顺序节点。
-
ZooKeeper命令
- 掌握ZooKeeper的常用命令,包括增删改查操作以及高级命令。通过命令行对ZooKeeper进行实际操练,实现对节点的操作。
2.5 内容总结
ZooKeeper是一个分布式协调服务,用于解决分布式系统中的协调问题。它具有高可用、数据一致的特点,可以用于实现分布式锁、配置中心、服务注册与发现、分布式唯一ID等功能。安装配置过程相对简单,在Linux、Windows和Mac OS下都有相应的安装方法。通过命令行可以对ZooKeeper进行操作,完成节点的增删改查等操作。同时,ZooKeeper提供了watch机制和acl权限控制,用于监听节点的变化和控制权限。在客户端开发中,可以使用ZooKeeper的原生客户端和Curator客户端,Curator客户端具有断线重连等优势,操作更加方便。