栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

zookeeper分布式技术基本概念(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zookeeper分布式技术基本概念(一)

zookeeper分布式技术基本概念(一)

问题背景zookeeper概述内部原理心得Lyric:我向前去追

问题背景

现在大部分公司所做的项目基本都是分布式的,简单介绍一下zookeeper分布式框架

zookeeper概述

1 通俗介绍

zookeeper就像美团和饿了么平台一样,商家在平台上注册,用户挑选商家购买,商家是否当日开,zookeeper会做出通知zookeeper是一个开源的分布式(多台服务器干一件事)的,为分布式应用提供协调服务的Apache项目

2 工作机制

Zookeeper是一个基于观察者模式设计的分布式服务管理框架负责存储和管理需要的数据

接受观察者的注册,当数据发生变化,zookeeper通知已经注册的观察者做出相应的反应实现类似集群的master/slave管理模式

Zookeeper = 文件系统 + 通知机制

3 分布式和集群的区别

分布式:负责的工作不一样集群:负责的工作一样

4 zookeeper的特点

是一个leader和多个follower来组成的集群集群中只要有半数以上的节点存活,Zookeeper就能正常工作(5台服务器挂2台,没问题;4台服务器挂2台,就停止),所以单数比较好全局数据一致性,每台服务器都保存一份相同的数据副本,无论client连接哪台server,数据都是一致的数据更新原子性,一次数据要么成功,要么失败实时性,在一定时间范围内,client能读取到最新数据更新的请求按照顺序执行,会按照发送过来的顺序,逐一执行(发来123,执行123,而不是321或者别的)

5 数据结构

ZooKeeper数据模型的结构与linux文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode(ZookeeperNode)每一个ZNode默认能够存储1MB的数据(元数据),每个ZNode的路径都是唯一的元数据(metadata),又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、
资源查找、文件记录等功能

6 应用场景

提供的服务:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等

6.1 统一命名服务

在分布式环境下,通常需要对应用或服务进行统一的命名,便于识别。例如:服务器的IP地址不容易记,但域名很容易记住

6.2 统一配置管理

将配置管理交给Zookeeper将配置信息写入到Zookeeper的某个节点上每个客户端应用都监听这个节点一旦节点中的数据文件被修改,Zookeeper就会通知每台客户端服务器

6.3 服务器节点动态上下线

客户端能实时获取服务器上下线的变化在美团APP上实时可以看到商家是否正在营业或打样

6.4 软负载均衡

Zookeeper会记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户请求 内部原理

1 选举机制

半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器虽然在配置文件中并没有指定Master和Slave。但是,Zookeeper工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的
Server1先投票,投给自己,自己为1票,没有超过半数,根本无法成为leader,顺水推舟将票数投给了id比自己大的Server2Server2也把自己的票数投给了自己,再加上Server1给的票数,总票数为2票,没有超过半数,也无法成为leader,也学习Server1,顺水推舟,将自己所有的票数给了id比自己大的Server3Server3得到了Server1和Server2的两票,再加上自己投给自己的一票。3票超过半数,顺利成为leaderServer4和Server5都投给自己,但是无法改变Server3的票数,只好听天由命,承认Server3是leader

2 节点类型,序号是相当于i++,和数据库中的自增长类似

持久型(persistent):

持久化目录节点(persistent)客户端应用与zookeeper断开连接后,该节点依旧存在持久化顺序编号目录节点(persistent_sequential)客户端与zookeeper断开连接后,该节
点依旧存在,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调
递增的计数器,由父节点维护,例如:Znode001,Znode002…

短暂型(ephemeral):

临时目录节点(ephemeral)客户端应用和zookeeper断开连接后,创建的节点自动删除临时顺序编号目录节点(ephemeral_sequential)客户端与zookeeper断开连接后,该节点
被删除,创建znode时设置顺序标识,znode名称后会附加一个值,顺序号是一个单调递增
的计数器,由父节点维护,例如:Znode001,Znode002…

3 监听器原理

在main方法中创建Zookeeper客户端的同时就会创建两个线程,一个负责网络连接通信,一个负责监听监听事件就会通过网络通信发送给zookeeperzookeeper获得注册的监听事件后,立刻将监听事件添加到监听列表里zookeeper监听到 数据变化 或 路径变化,就会将这个消息发送给监听线程监听线程就会在内部调用process方法(需要实现process方法)

4 写数据流程

Client 想向 ZooKeeper 的 Server1 上写数据,必须的先发送一个写的请求如果Server1不是Leader,那么Server1 会把接收到的请求进一步转发给Leader。这个Leader 会将写请求广播给各个Server,各个Server写成功后就会通知Leader。当Leader收到半数以上的 Server 数据写成功了,那么就说明数据写成功了。随后,Leader会告诉Server1数据写成功了。Server1会反馈通知 Client 数据写成功了,整个流程结束 心得

了解zookeeper基本原理,下个篇章讲一下zookeeper的简单项目使用加深理解




作为程序员第 85 篇文章,每次写一句歌词记录一下,看看人生有几首歌的时间,wahahaha …

Lyric:我向前去追
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/781454.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号