当前位置:首页 > 技术分析 > 正文内容

一文简单了解并部署 Zookeeper 集群

ruisui882周前 (06-02)技术分析8

#头条创作挑战赛#一文简单了解并部署 Zookeeper 集群

Zookeeper 概述

简单来说,ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。

Zookeeper功能包括

  1. 配置维护
  2. 域名服务
  3. 分布式同步
  4. 组服务等。

Zookeeper 架构图

从设计模式角度来说,Zookeeper是一个基于观察者模式设计的分布式服务管理框架。

zookeeper中的数据是存储在内存当中的,因此它的效率十分高效。

它的内存数据结果如下图:

zookeeper提供的主要功能包括:

  1. 配置管理
  2. 分布式锁
  3. 集群管理

ZooKeeper的好处

  • 简单的分布式协调过程
  • 同步
  • 有序的消息
  • 序列化
  • 可靠性
  • 原子性

部署 Zookeeper 集群

Zookeeper下载地址
https://zookeeper.apache.org/releases.html#download

Zookeeper安装步骤

前置条件:服务器必须安装jdk,可以采用yum方式进行安装:

[root@localhost ~]# yum install -y java-1.8.2-jdk.x86_64

1、进入 /usr/local/ 目录

[root@localhost ~]# cd /usr/local/

2、下载好的 “zookeeper-3.4.5.tar.gz” 文件传入服务器目录,并解压:

[root@localhost localhost]# tar zxvf zookeeper-3.5.5.tar.gz

3、修改解压后的文件名为 “zookeeper”:

[root@localhost localhost]# mv zookeeper-3.5.5 zookeeper

4、修改zookeeper环境变量:

[root@localhost local]# vi /etc/profile

#在上方添加以下内容

export ZOOKEEPER_HOME=/usr/local/zookeeper

export PATH=$PATH:$ZOOKEEPER_HOME/bin

5、使用source重新编译 “/etc/profile”,并生效

[root@localhost zookeeper]# source /etc/profile

6、切换到conf 目录下

[root@localhost zookeeper]# cd conf/

7、将 “zoo_sample.cfg” 拷贝生成 “zoo.cfg” 文件作为 zookeeper 的配置文件:

[root@localhost conf]# cp zoo_sample.cfg zoo.cfg

8、修改 “zoo.cfg” 文件:

配置文件中主要配置数据存放路径和日志路径。

注意:zookeeper 默认的数据存放路径:"dataDir=/tmp/zookeeper",这个文件夹会过期,因为它是一个临时文件。

# 将配置文件中的dataDir替换为此路径

dataDir=/usr/local/zookeeper/data

dataLogDir=/usr/local/zookeeper/log

安装过程中,也可以指定数据存放的路径,存放在 自定义的路径下,也可以根据需要建立单独路径进行存放。

# ip三台机器

server.1=172.158.1.111:2888:3888

server.2=172.158.1.112:2888:3888

server.3=172.158.1.113:2888:3888

9、切换到”zookeeper“目录下,为创建配置文件赋予权限:

[root@localhost conf]# cd ..

[root@localhost zookeeper]# mkdir -m 755 data

[root@localhost zookeeper]# mkdir -m 755 log

10、切换到 “data/” 路径下

[root@localhost zookeeper]# cd data/

创建 myid 文件,并给相应值 1:

[root@localhost data]# vi myid

[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.12:/usr/local/

[root@localhost data]# scp -r /usr/local/zookeeper root@192.168.1.13:/usr/local/

11、修改 myid 值为 2 和 3 后,集群部署好了。

12、到 01 机器的 zookeeper 目录下,使用bin/zkServer.sh start启动 zookeeper:

[root@localhost zookeeper]# bin/zkServer.sh start

[root@localhost zookeeper]# bin/zkServer.sh status

Error contacting service. It is probably not running.

#此时zookeper集群没有启动,因为目前只有一个节点开启

13、在第二台启动以后,集群节点超过一半,第二台机器就会成为 leader

[root@localhost zookeeper]# bin/zkServer.sh start

[root@localhost zookeeper]# bin/zkServer.sh status

14、那第一台就变成 follower

[root@localhost zookeeper]# bin/zkServer.sh status

15、第三台zookeeper启动后,第二台机器已经是 leader 了,除非机器宕机会触发重新分配

16、关于 zookeeper 的操作可以通过启动启动客户端:

[root@localhost zookeeper]# bin/zkCli.sh

更多 zookeeper 操作可以参照 zookeeper 官方文档。

Zookeeper的设计目标

1、简单的数据模型

2、可构建集群

3、顺序访问

4、高性能

Zookeeper是高性能的,在读多于写的应用程序中尤其的高性能,因为写会导致所有服务器同步状态。

Zookeeper节点数据操作流程

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/4381.html

分享给朋友:

“一文简单了解并部署 Zookeeper 集群” 的相关文章

SpringBoot2.X+Vue+UniAPP,全栈开发医疗小程序

//xia仔のke:chaoxingit.com/208/全栈开发医疗小程序:利用Spring Boot 2.X、Vue和UniApp在当今数字化时代,医疗行业也在不断地迈向信息化和智能化的方向。开发一款医疗小程序,能够为用户提供便捷的医疗服务和信息查询,为医疗机构提供高效的管理和服务渠道。本文将介...

Ruoyi-vue第五十二章:Uniapp小程序配置tabbar底部导航栏

一、功能实现效果如下图底部的tabbar二、uniapp的tabBar如果应用是一个多 tab 应用,可以通过 tabBar 配置项指定一级导航栏,以及 tab 切换时显示的对应页。在 pages.json 中提供 tabBar 配置,不仅仅是为了方便快速开发导航,更重要的是在App和小程序端提升性...

vue父组件修改子组件的值(通过调用子组件的方法)

props只支持第一次加载这个组件的时候获取父组件的值,后续修改父组件的值得时候子组件并不会动态的更改。然而我们想要通过父组件修改子组件的值要怎么做呢?可以通过ref的方式调用子组件的方法改变子组件的值。子组件<template><div><span>{{data...

千智云低代码平台 v2.0.6发布「平台升级」

【平台简介】千智云低代码应用平台是一款低代码开发+低代码PaaS+SaaS应用中台为一体的应用平台。平台提供了多种应用场景功能及应用组件,满足各种应用的基本实现,可以使用低代码开发的方式,定制化的开发软件项目,并使用平台提供的各种功能,提供了大多数业务场景的支持。也可以将开发的应用发布到平台,成为S...

微信小程序发展越来越快,Flutter应用开发越来越低效?

目前的疑惑微信小程序发展的越来越快,目前小程序甚至取代了大部分 App 的生态位,公司的坑位不增反降,只能让原生应用开发兼顾或换岗进行小程序的开发。以我的实际情况来讲,公司应用采用的 Flutter 框架,同样的功能不可避免的就会存在 Flutter 应用开发和微信小程序开发兼顾的情况,这种重复造轮...

深入理解同步/异步与阻塞/非阻塞区别

编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文由「那谁」投稿。转载请注明来自高可用架构公众号「ArchNotes」。「那谁」,codedump.info 博主,多年从事互联网服务器后台开发工作。几年前曾写过一篇描写同步/异步以及阻塞/非阻塞的文章,最近再回头看,还存在一些理解和认知误...