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.rhkb.cn/news/355562.html

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

相关文章

基于深度学习视觉算法的多模型文件融合检测系统设计与实现及优化(工人姿态检测+安全帽佩戴检测系统)

1,融合pose.pt(姿态检测)+(安全帽佩戴检测)效果图 实时检测优化后FPS可达20+ 2,原理介绍 YOLOv5是目前应用广泛的目标检测算法之一,其主要结构分为两个部分:骨干网络和检测头。 输入(Input): YOLOv5的输入是一张RGB图像,它可以具有不同的分辨率,但通常为416x416或5…

《精通嵌入式Linux编程》——解锁嵌入式Linux开发的无限可能

文章目录 📑前言一、书籍概览与作者风采二、内容详解与特色亮点2.1 嵌入式Linux基础与入门2.2 系统编程与内核探索2.3 驱动开发与实战演练2.4 内存管理与性能优化2.5 系统调试与性能提升2.6 综合项目实践与案例分析 三、书籍价值与应用展望 📑前言 在当今…

基于java+springboot+vue实现的便利店信息管理系统(文末源码+Lw)239

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本华府便利店信息管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的…

WebSocket实现消息实时通知

参考文档:万字长文,一篇吃透WebSocket:概念、原理、易错常识、动手实践、WebSocket 教程 1 背景 有一个需求,需要实现实时通信的功能,如果有新消息,后端会主动发送请求告知前端有新消息,需要前…

Day 44 Ansible自动化运维

Ansible自动化运维 几种常用运维工具比较 ​ Puppet ​ —基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱ruby ​ SaltStack ​ —基于 Python 开发,采用 C/S 架构,相对 puppet 更轻量级,配置语法使用 YAML,使得配置脚本更简单 ​ Ansible ​ —基于 …

海康充电桩报文校验TCP校验和

1 TCP校验文档校验文档要求: 校验码描述 校验码计算范围包含包头标识、消息头和消息体,校验算法采用 TCP 和校验,具体规则如下。 将待校验的所有数据分为 16 位的字(大端序),如果总长度为奇数个字节&#…

测试的基础知识大全【测试概念、分类、模型、流程、测试用例书写、用例设计、Bug、基础功能测试实战】

测试基础笔记 Day01阶段⽬标⼀、测试介绍⼆、测试常⽤分类2.1 阶段划分单元测试集成测试系统测试验收测试 2.2 代码可⻅度划分⿊盒测试:主要针对功能(阶段划分->系统测试)灰盒测试:针对接⼝测试(阶段划分->集成测…

【CPP】选择排序:冒泡排序、快速排序

目录 1.冒泡排序简介代码分析 2.快速排序2.1霍尔版本简介代码分析 2.2挖坑版本2.3前后指针版本2.4非递归的快排思路代码 什么是交换排序? 基本思想:所谓 交换,就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0…

Photoshop揭秘:图像处理领域的领军软件

Photoshop 是一款由 Adobe 企业开发的图像处理软件,也被大家简称为 PS。在广告设计、摄影后期、数字绘画、网页设计等各个领域都得到了广泛的应用,是目前业界最受欢迎的图像处理软件之一。作为一款图像处理软件,Photoshop 为设计者提供了许多…

爆火的AI姓名头像号篇篇10w+, 流量主赚麻了...

最近二师兄在刷公众号时,看到一个非常有趣的账号。简单又“暴li”。 几乎篇篇10w。点击去一看,内容也是非常极简,利用姓氏生成头像。一个字都不多。 几乎每篇文末都有广告,一篇10w按照800来算, 一个月大概 ~~一七得七、…

华为手机怎么找回删除的照片?掌握3个方法,恢复不是梦

由于误删、设备故障、软件更新等原因,我们有时可能会不慎丢失这些宝贵的照片。当面对空空如也的相册时,那种失落感无法言喻。华为手机该怎么找回删除的照片呢?但是,请不要绝望!在科技的帮助下,我们可以采取…

threejs 光影投射-与场景进行交互(六)

效果 场景中有三个立方体,三种颜色.点击变成红色,再点恢复自身原有颜色 代码 import ./style.css import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js import { log } from three/examples/jsm/nodes/Nodes.js//…

NGINX_十二 nginx 地址重写 rewrite

十二 nginx 地址重写 rewrite 1 什么是Rewrite Rewrite对称URL Rewrite,即URL重写,就是把传入Web的请求重定向到其他URL的过程。URL Rewrite最常见的应用是URL伪静态化,是将动态页面显示为静态页面方式的一种技术。比如 http://www.123.com…

基于淘宝商城用户购物行为数据分析系统

摘 要 在电商行业高速发展的今天,用户购物行为数据量呈指数型增长,传统的数据处理架构已经无法满足于现如今的数据处理需求。针对于这样的需求本课题设计了一种基于淘宝的用户购物行为分析系统,旨在通过对大量数据进行分析处理进而深入研究用…

视频剪辑技巧大揭秘:轻松掌握为视频添加梦幻光晕效果的绝妙方法!

在这个视觉盛宴的时代,每一个画面都渴望被赋予独特的魅力与魔法。今天,我要为你揭秘一个神秘的视频剪辑技巧——给视频添加光晕效果,让你的作品瞬间脱颖而出,成为朋友圈的焦点 首先,你可以打开原视频进行查看。此时&am…

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07

【Kafka】Kafka生产者数据重复、数据有序、数据乱序-07 1. 数据重复1.1 数据传递语义1.2 幂等性1.2.1 如何开启幂等性1.2.2 同一个消息,多个分区都会存在吗? 1.3 事务1.3.1 Kafka 事务原理1.3.2 Kafka事务的作用和意义作用具体应用场景 2. 数据有序3. 数…

FP7195做大功率钓鱼灯应用方案,0.1%深度无极无频闪调光调色应用,调光曲线顺滑无突兀

文章目录 文章目录 方案背景 一、夜钓灯电路框架 二、FP7195芯片介绍 芯片参数 总结 方案背景 目前夜钓正在逐渐变得时尚起来,随着夜钓群体的年轻化,人们对于夜钓灯的审美要求也越来越高。夜钓灯作为夜间钓鱼的重点装备,不仅仅需要高质量的光…

足底筋膜炎的症状

足底筋膜炎是足底的肌腱或者筋膜发生无菌性炎症所致,其症状主要包括: 1、疼痛:这是足底筋膜炎最常见和突出的症状。疼痛通常出现在足跟或足底近足跟处,有时压痛较剧烈且持续存在。晨起时或长时间不活动后,疼痛感觉尤为…

重生奇迹MU整理装备注意事项

想成为奇迹MU的顶尖玩家,整理装备是必不可少的一项技能。在这篇文章中,我们将为您分享一些整理装备的注意事项与技巧,帮助您在游戏中更好地管理装备,提升你的实力。 整理装备,须知几点 整理装备是每位玩家必须完成的…

Scikit-Learn梯度提升决策树(GBDT)

Scikit-Learn梯度提升决策树 1、梯度提升决策树(GBDT)1.1、Boosting方法1.2、GBDT的原理1.3、GBDT回归的损失函数1.4、梯度下降与梯度提升1.5、随机森林与GBDT1.6、GBDT的优缺点2、Scikit-Learn梯度提升决策树(GBDT)2.1、Scikit-Learn GBDT回归2.1.1、Scikit-Learn GBDT回归…