1. zookeeper分布式协调者

zookeeper分布协调者

  • 一、zookeeper介绍
    • 1、软件设计架构
      • 1.1 单体架构
      • 1.2 SOA架构/分布式
      • 1.3 微服务架构
  • 二、zookeeper角色
    • 1、角色
    • 2、选举机制
    • 3、znode类型
  • 三、zookeeper集群部署
    • 1、环境规划
    • 2、安装jdk
    • 3、安装配置zookeeper
      • 3.1 安装zookeeper
      • 3.2 编辑配置文件
      • 3.3 创建myid文件
    • 4、启动zookeeper,验证状态

一、zookeeper介绍

作用:分布式系统中,用于协调者、集群管理、配置管理、命名服务, 解决分布式系统中一致性的问题
开源、Apache组件

1、软件设计架构

1.1 单体架构

所有的业务模块集成在一起的,不利于项目更新、维护、扩展

1.2 SOA架构/分布式

根据业务的功能模块将完整的项目划分成多个独立模块,便于扩展、更新
需要提供集中式的服务管理、配置管理、集群管理、数据一致性功能
拆分粒度粗

1.3 微服务架构

相对于SOA架构来,拆分粒度细

二、zookeeper角色

1、角色

  • leader
    主角色
    处理数据
    维持与follower的心跳,接收处理follower的消息
  • follower

在这里插入图片描述

2、选举机制

目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选择举过程如下:
服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking(选举状态)。
服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。
服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。
服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。
服务器5启动,后面的逻辑同服务器4成为小弟。

3、znode类型

zookeeper的节点统一叫做znode

根据节点的生命周期,znode可以分为4种类型,分别是持久节点(PERSISTENT)、持久顺序节点(PERSISTENT_SEQUENTIAL)、临时节点(EPHEMERAL)、临时顺序节点(EPHEMERAL_SEQUENTIAL)

三、zookeeper集群部署

1、环境规划

192.168.140.10 node01 jdk/zookeeper
192.168.140.11 node02 jdk/zookeeper
192.168.140.12 node03 jdk/zookeeper

2、安装jdk

[root@node01 ~]# tar xf jdk-8u91-linux-x64.tar.gz -C /usr/local/[root@node01 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export PATH=$PATH:$JAVA_HOME/bin[root@node01 ~]# source /etc/profile[root@node01 ~]# java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)

3、安装配置zookeeper

3.1 安装zookeeper

[root@node01 ~]# tar xf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/
[root@node01 ~]# mv /usr/local/apache-zookeeper-3.7.1-bin/ /usr/local/zookeeper37[root@node01 ~]# cp /usr/local/zookeeper37/conf/zoo_sample.cfg /usr/local/zookeeper37/conf/zoo.cfg

3.2 编辑配置文件

[root@node01 ~]# mkdir /usr/local/zookeeper37/data
[root@node01 ~]# mkdir /usr/local/zookeeper37/log[root@node01 ~]# vim /usr/local/zookeeper37/conf/zoo.cfg
dataDir=/usr/local/zookeeper37/data
dataLogDir=/usr/local/zookeeper37/logclientPort=2181server.1=192.168.140.10:2888:3888
server.2=192.168.140.11:2888:3888
server.3=192.168.140.12:2888:38882888: 心跳端口
3888:数据同步端口

3.3 创建myid文件

[root@node01 ~]# echo 1 > /usr/local/zookeeper37/data/myid

另外两台主机参考上述配置,注意修改myid文件

4、启动zookeeper,验证状态

第一台主机启动:

[root@node01 bin]# ./zkServer.sh start 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@node01 bin]# 
[root@node01 bin]# ./zkServer.sh status 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Error contacting service. It is probably not running.// 待第二台主机启动后,再次查看状态
[root@node01 bin]# ./zkServer.sh status 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

第二台主机启动:

[root@node02 ~]# cd /usr/local/zookeeper37/bin/
[root@node02 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED[root@node02 bin]# ./zkServer.sh status 
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: leader

第三台主机启动:

[root@node03 ~]# cd /usr/local/zookeeper37/bin/[root@node03 bin]# ./zkServer.sh start
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED[root@node03 bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /usr/local/zookeeper37/bin/../conf/zoo.cfg
Client port found: 2181. Client address: localhost. Client SSL: false.
Mode: follower

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/29335.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.NET C#基础:布尔表达式

介绍 本文讨论了 C# 编程中决策逻辑的基本方面,重点介绍了布尔表达式、运算符及其对处理客户数据和用户输入的 C# 应用程序开发人员的重要性。 学习目标: 使用运算符构造布尔表达式,以便进行比较和相等性测试。 采用内置的字符串类方法进行…

Navicat for MySQL 11软件下载及安装教程

软件简介: Navicat for SQL Server 是一套专为 SQL Server设计的全面的图形化数据库管理及开发工具,可进行创建、编辑和删除全部数据库对象,例如表、视图、函数、索引和触发器,或运行 SQL查询和脚本,查看或编辑 BLOBs…

彩色图像批处理实例

在数字图像处理过程中,经常需要对一批图像进行处理,下面以自然场景下花背景分割为例,给出其主要处理过程和处理结果。 处理的主要步骤:1. 六张彩色图像存放在flower文件夹中,图像文件名为1.jpg 2.jpg 3.jpg 4.jpg 5.j…

物联网技术-第4章物联网通信技术-4.1计算机网络

目录 1.1计算机网络拓扑与组成 (1)全连通式网络 (2)星型网 (3)环形网 (4)总线网 (5)不规则型网 1.2数据交换类型 (1)电路交换网 &…

supOS数据集成

为解决企业数据孤岛问题,supOS对外提供了天湖能力,APP应用集成到supOS后可以使用supOS的天湖,所有数据归集到天湖,利用supOS的ESB消息总线能力实现各个业务系统的服务注册,对外提供统一消息总线能力,从而解…

GD32调试篇:STLINK驱动下载安装

本文章基于兆易创新GD32 MCU所提供的2.2.4版本库函数开发 向上代码兼容GD32F450ZGT6中使用 后续项目主要在下面该专栏中发布: https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感兴趣的点个关注收藏一下吧! 电机驱动开发可以跳转…

LabVIEW在SpaceX的应用

结合真实的资料介绍LabVIEW在SpaceX的应用,涵盖自动化测试系统、数据采集与监控、可视化与分析、模块化设计与扩展,以及效率与可靠性的提高。 ​ 自动化测试系统 LabVIEW在SpaceX的自动化测试系统中发挥了关键作用。自动化测试是确保SpaceX火箭及其子系…

Flutter项目,Xcode15, 编译正常,但archive报错

错误提示 PhaseScriptExecution [CP]\ Embed\ Pods\ Frameworks /Users/目录/Developer/Xcode/DerivedData/Runner-brgnkruocugbipaswyuwsjsnqkzm/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner…

android system UI 基础的基础

Android 系统中的 SystemUI 是一种特殊的应用程序,它负责管理和显示设备的用户界面组件,例如状态栏、导航栏和最近任务列表等。SystemUI 是在 Android 启动过程中由 Zygote 进程启动的。以下是 SystemUI 启动过程的详细步骤: SystemUI 启动过程 1.启动 init 进程: Android…

目标检测数据集 - 手机屏幕表面表面缺陷检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:手机屏幕表面缺陷检测数据集,真实采集高质量手机屏幕表面含缺陷图片数据,数据集含多款不同型号和品牌的手机屏幕表面图片数据,包括苹果手机屏、三星手机屏、华为手机屏等数据。数据标注标签包括 Bubble 气泡/水滴、Scr…

js数组的常用操作1

在 中,数组是一种常见的数据结构,用于存储多个值。数组的操作非常丰富,以下是一些常见的数组操作及其具体解释和示例代码。 1. 创建数组 使用数组字面量 let arr [1, 2, 3, 4];使用 Array 构造函数 let arr new Array(1, 2, 3, 4);2. 访…

MetaGPT: Merging Large Language Models Using Model Exclusive Task Arithmetic

论文主题理解 这篇论文的核心是关于如何有效地结合多个预训练的大型语言模型(LLMs),以便它们能够在多个不同的任务上表现出色。这里的“任务”可以是翻译、文本摘要、问题回答等自然语言处理任务。作者们提出了一种新的方法,称为…

openGauss 6.0高可用测试,系统上线前很关键

作者:IT邦德 中国DBA联盟(ACDU)成员,10余年DBA工作经验, Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主,全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复, 安装迁移,性能优化、故障…

5-10位工程师如何共享工作站算力和软件

在当今数字化快速发展的时代,算力共享已经成为工程师们提高工作效率、优化资源配置的重要手段。 在数字化和信息化的推动下,共享工作站的算力和软件正逐渐成为机械工程师们提升工作效率、优化资源配置的重要途径。那么5-10位工程师如何共享工作站算力和…

等保一体机:多种防护机制,让等保合规简单高效!

自1994年国务院颁布《中华人民共和国计算机信息系统安全保护条例》规定计算机信息系统实行安全等级保护以来,等级保护工作经过了近25年的发展历程,成为了我国网络安全保护的重要举措之一。 2019年12月1日等保2.0正式开始实施,我国网络安全行业…

Jpush极光推送教程

1、引入jar包 <dependency><groupId>cn.jpush.api</groupId><artifactId>jpush-client</artifactId><version>3.4.6</version> </dependency>2、Jpush官网申请密钥 3、代码部分 public interface JPushService {Result pushD…

低压电器航空插座端子

低压电器航空插座的定义和功能 低压电器航空插座通常指在交流电压1200V或直流电压1500V以下工作的电器&#xff0c;其主要功能是连接或断开电路&#xff0c;以实现对电路或非电对象的切换、控制、保护、检测、变换和调节。航空插座具有多种芯数和配置&#xff0c;例如2芯、3芯…

Web前端教程PPT:深入浅出引领您掌握前端技术

Web前端教程PPT&#xff1a;深入浅出引领您掌握前端技术 在数字化时代&#xff0c;Web前端技术成为了构建精美网页和高效应用的基石。为了帮助初学者系统地掌握前端技术&#xff0c;本文将以PPT的形式&#xff0c;从四个方面、五个方面、六个方面和七个方面&#xff0c;为您呈…

面试又被HR压薪了?知道压薪的真实原因,才能拿到“高“薪!

​你面试被讨价还价过吗&#xff1f; 人事A&#xff1a; 您在这方面的经验还不是很丰富&#xff0c;您在之前的公司做的项目不是主要负责人&#xff0c;是辅助角色&#xff0c;所以工资方面我们准备给..(低于你的期望) 人事B&#xff1a; 您之前的岗位和我们需要的岗位不同&…

2288. 价格减免

题目 给定一个字符串列表 sentence&#xff0c;表示一个句子&#xff0c;其中每个单词可以包含数字、小写字母和美元符号 $。如果单词的形式为美元符号后跟着一个非负实数&#xff0c;那么这个单词就表示一个价格。我们需要在价格的基础上减免给定的 discount%&#xff0c;并更…