zookeeper集群

一、zookeeper的工作机制

前提是你 提交于 2019-11-28 14:08:30
zookeeper的工作机制 Zookeeper是分布式服务架构,是apache hadoop的一个子项目,主要是用来解决分布式应用中遇到的一下数据管理问题,如 集群管理,统一命名服务,分布式配置管理,分布式消息队列,分布式锁,分布式通知协调等 Zookeeper 没有具体的功能,他在大数据中的作用是协调大数据框架的,提供的是协调服务 Zookeeper的工作机制: Zookeeper从设计角度来看,是一个基于观察者模式设计的分布式服务器管理框架,他负责存储和管理数据,然后接受观察者的注册,一旦这些数据状态发生改变,zookeeper就将负责通知已经在zookeeper上注册的那些观察者,做出相应的反应。 总而言之,zookeeper只需要做两件事。 第一件事:存数据 第二件事: 通知 理解: 就是在学生和讲师之间需要班主任沟通,约好的课程,但是因为讲师有事来不了,这时候需要班主任进行协调,并告知同学们,班主任的作用就是zookeeper的作用, 在实际中的应用: Server1 server2 server3 Client1 client2 client3 三台server,是一个集群, 没有zookeeper的时候,三个client会直接连接三个server,中间没有任何东西,就是直连,但是当serverA 挂了之后,client1是不知道的

二、Zookeeper集群特点和数据结构

丶灬走出姿态 提交于 2019-11-28 14:08:21
Zookeeper集群特点: Zookeeper集群特点: 1、zookeeper的主机叫leader,从机叫follwer(一个领导者,多个跟随者) 2、zookeeper集群的服务器不用全部工作,半数以上服务器存活,zk就能正常运行(所以建议zk集群为奇数个), 3、zk所有节点存的数据是全部一致的 4、更新请求顺序进行,来自同一个client的请求按其发送顺序一次执行 理解: 以下是zookeeper集群的服务器, server1 server2 server3 有两条写数据(1,2代替)进入到server1,server1 是先写1,后写2,因为他的数据是全局保持一致的,所以zookeeper集群里边的每台server都要写这两条数据,但是由于网络原因,当数据到达server3的时候,是数据2先到达的,数据1后到达的,但是还是能实现先写数据1,后写数据2,一直按照原来的顺序来,不会变 5、数据更新的原子性,一次数据要么成功要么失败, 理解: 就是当client向zk集群发送一条数据的时候,集群里所有的机器都会执行,要么都执行成功,要么都执行失败,当返回结果成功的时候,说明集群所有的server都更新了 6、能实时获取zk里的数据 Zookeeper的数据结构: Zookeeper的数据结构模型与linux文件系统类似,整体上可以看成一棵树,每个节点成为一个znode

三、zookeeper集群的应用场景

走远了吗. 提交于 2019-11-28 14:08:03
场景一:统一命名服务 我们给服务或应用起名字,然后下边有对应的ip地址,这个比较容易理解,类似于DNS解析 场景二: 就是我们把配置文件写到/configuration文件里边然后三个client对 /configuration 节点进行监听,当节点内容发生变化了以后,client会被告知,然后client会把新的配置信息拉取下来,进行更改 场景三: 统一集群管理就是实时获取节点的信息,这点在集群中是很重要的,client每启动一个,就会在zk集群进行注册并监听,当server发生变化的了之后,就会做出相应的改变 场景四: 就是server会把集群里的服务器状态信息写入到zk集群中,当服务器2发生变化的时候,zk的数据会发生变化,从而会告知client,那么cilent就不会在去连接server2 这台服务器了 场景五: 在zk集群中存储,存储nginx集群服务的节点信息和访问数量,zk会根据节点的访问数量来分配最新的请求。 来源: 51CTO 作者: heypon 链接: https://blog.51cto.com/13930997/2454364

四、zookeeper集群的搭建

江枫思渺然 提交于 2019-11-28 14:07:44
Zookeeper安装: 下载安装包: https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/ 用3.5版本的服务起不来,不知道为啥 一、将包传入服务器内,解压 tar xvf apache-zookeeper-3.5.6.tar.gz -C /usr/ cd /usr && mv apache-zookeeper-3.5.6/ zookeeper #改名 cd /usr/zookeeper/conf cp zoo_sample.cfg zoo.cfg 好这样一个zookeeper节点就安装完了 二、集群的配置: tickTime=2000 #tick就是心跳,每2秒钟检测一次心跳 initLimit=10 最多十个tick,也就是20s,tick就是单位,leader和follower刚开始通信时的最大时间,超过20s就认为连不上了 syncLimit=5 同步最长的时间 5个tick,10s,集群启动之后的通信时间 以上三个不用改 dataDir =/usr/zookeeper/zkData #存储数据的目录 clientPort =2181 客户端端口,可改可不改 以下是需要添加的配置:集群有哪些机器 Server.**2**=server_ip:2888:3888 **

五、zookeeper集群的选举机制,监听原理,写数据流程 和 节点类型,

五迷三道 提交于 2019-11-28 14:05:27
zk集群的选举机制: 半数机制 :zk集群中的有半数以上的节点存活,zk就能正常运行,所以zk集群节点最好是奇数个。Zk集群中只有一个leader,其他都是follower 选举机制 :会经过投票,票数大于半数以上的第一台服务器,当选leader Server1 server2 server3 server4 server5 (id大的不给id小的投票,id小的会给id大的投票,server1-5,id依次增大) 5台机器:server1开始投票,server1投自己,因为server1 id最小,所以server1只有一票 Server2:server2会投自己,server1也会投server2一票,server2 两票 Server3:server3会投自己,server1和server2各自投server3一票,那么server3就三票,三票在半数以上(一共五台机器),所以就选server3当leader, 后边的server4(4票)和server5(5票)虽然来都比server3票数多,但是server3是第一个票数大于半数以上的,所以就选择server3当leader Zokeeper的监听的原理:(重点) 1)首先要有一个main()线程 2)在main()线程中创建zookeeper的客户端,这时就会创建两个线程,一个负责网络连接通信(connect)

环境搭建-Linux、ZooKeeper、Hadoop

人走茶凉 提交于 2019-11-28 13:56:50
Linux版本:Ubuntu 16.04 Server LTS 1. 安装Linux,初始用户名设置为hadoop,host依次是: Lead1,Lead2,Register1,Register2,Register3,Follower1,,Follower2,Follower3,Follower4,Follower5 Lead1,Lead2用于安置Namenode和Resourcemanager的HA Register1,Register2,Register3用来运行ZooKeeper集群和qjournal服务 Follower1,,Follower2,Follower3,Follower4,Follower5用来运行Datanode和Nodemanager 2. 安装软件:openjdk 1.8,openssh-server,vim 3. 配置ssh免密登录: a. ssh -keygen -t rsa b. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys c. scp ~/.ssh/authorized_keys xxx(hostname):~/.ssh/authorized_keys 直到所有主机的authorized_keys文件中都含有所有主机的id_rsa.pub 4. 利用ifconfig查看ip地址,依次修改所有主机的

helm安装kafka集群并测试其高可用性

故事扮演 提交于 2019-11-28 13:15:10
介绍 Kafka 是由 Apache软件基金会 开发的一个开源流处理平台,由 Scala 和 Java 编写。Kafka是一种高吞吐量的 分布式 发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像 Hadoop 一样的 日志 数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过 Hadoop 的并行加载机制来统一线上和离线的消息处理,也是为了通过 集群 来提供实时的消息。 一、KAFKA 体系结构图: Producer : 生产者,也就是发送消息的一方。生产者负责创建消息, 通过 zookeeper 找到 broker , 然后将其投递到 Kafka 中。 Consumer : 消费者,也就是接收消息的一方。 通过 zookeeper 找对应的 broker 进行消费 , 进而进行相应的业务逻辑处理。 Broker : 服务代理节点。对于 Kafka 而言, Broker 可以简单地看作一个独立的 Kafka 服务节点或 Kafka 服务实例。大多数情况下也可以将 Broker 看作一台 Kafka 服务器,前提是这台服务器上只部署了一个 Kafka 实例。一个或多个

Zookeeper

浪子不回头ぞ 提交于 2019-11-28 12:37:50
概述 Zookeeper字面上理解就是动物管理员,是大数据框架Hadoop生态圈中的一个服务中间件,Hadoop生态圈中很多开源项目使用动物命名,那么需要一个管理员来管理这些“动物”。他负责分布式应用程序协调的工作。 Hadoop框架 Zookeeper主要提供以下四点功能: 统一命名服务、配置管理、集群管理、共享锁和队列管理 ,用于高效的管理集群的运行。 Zookeeper通过心跳机制可以检测挂掉的机器并将挂掉机器的ip和服务对应关系从列表中删除。 Zookeeper 部署有三种方式,单机模式、集群模式、伪集群模式,以下采用Docker 的方式部署 注意: 集群为大于等于3个奇数,如 3、5、7,不宜太多,集群机器多了选举和数据同步耗时长,不稳定。 zk安装 docker-compose-yml version: '3.1' services: zoo1: image: zookeeper restart: always hostname: zoo1 ports: - 2181:2181 environment: ZOO_MY_ID: 1 ZOO_SERVERS: server.1=zoo1:2888:3888 配置说明 2181:客户端连接 Zookeeper 集群使用的监听端口号 3888:选举 leader 使用 2888:集群内机器通讯使用(Leader 和

dubbo+zookeeper集群配置

淺唱寂寞╮ 提交于 2019-11-28 12:01:43
集群服务注册到多台zookeeper配置: <dubbo:registry protocol="zookeeper" address="10.20.153.10:2181,10.20.153.11:2181,10.20.153.12:2181" /> 分成多组注册中心: <dubbo:registry id="chinaRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="china" /> <dubbo:registry id="intlRegistry" protocol="zookeeper" address="10.20.153.10:2181" group="intl" /> dubbo admin 配置连接集群   #注意一个地址加多个backup,任何一个节点如果存活着,那么总体服务不回出现问题   dubbo.registry.address=zookeeper://127.0.0.1:2181?backup=127.0.0.1:2182,127.0.0.1:2183   dubbo.admin.root.password=root   dubbo.admin.guest.password=guest 注意:此处不能采用 10.20.153.10:2181,10.20.153.11

Dubble 01 架构模型&start project

余生长醉 提交于 2019-11-28 11:59:46
Dubbo 01 架构模型 传统架构 All in One 测试麻烦,微小修改 全都得重新测 单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难 聚合项目划分 单项目容易 因为某个功能导致整体oom 拆分完 咋实现 SOA 架构: Service-Oriented Architecture 面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。 在没有实施SOA的年代,从我们研发的角度来看,只能在代码级别复用,即Ctrl +V。SOA出现,我们开始走向了模块、业务线的复用。 SOA年代的典型实现: SOAP协议,CXF框架,XML传输 xsd,数据校验 SOA架构伴随着软件研发行业20年的发展,在最初的时候,大型it公司内部系统规模越来越大,IT系统越来越复杂,All in One单体架构的思想导致公司内项目业务和数据相互隔离,形成了孤岛。 最初,我们使用数据库作为项目之间数据交互和中转的平台