zookeeper集群

zookeeper

China☆狼群 提交于 2020-03-03 09:12:47
功课: 事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。 Atomic(原子性) Consistency(一致性) Isolation(隔离性) Durability(持久性) CAP 原则又称CAP定理,指的是在一个分布式系统中, 一致性 (Consistency)、 可用性 (Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。 一致性(C):在 分布式系统 中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性(A):在集群中一部分节点故障后, 集群 整体是否还能响应 客户端 的读写请求。(对数据更新具备高可用性) 分区容忍性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。 ZooKeepre侧重强一致性,CP 简介: 它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等 zookeeper=文件系统+监听通知机制 ZooKeeper是一个分布式小文件系统,并且被设计为高可用性。通过选举算法和集群复制可以避免单点故障3

分布式锁专题

那年仲夏 提交于 2020-03-02 14:26:10
分布式锁 如果你觉得我写的不错, 或者想和我多交流, 就扫一扫关注我吧, 本人公众号: stormling 1. 什么是分布式锁 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。在 分布式系统 中,常常需要协调他们的动作。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证 一致性 ,在这种情况下,便需要使用到分布式锁。 2. 为什么要使用分布式锁 为了保证一个方法或属性在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLock或Synchronized)进行互斥控制。在单机环境中,Java中提供了很多并发处理相关的API。但是,随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的Java API并不能提供分布式锁的能力。为了解决这个问题就需要一种跨JVM的互斥机制来控制共享资源的访问,这就是分布式锁要解决的问题! 举个例子: 机器A , 机器B是一个集群, A, B两台机器上的程序都是一样的, 具备高可用性能. A, B机器都有一个定时任务, 每天晚上凌晨2点需要执行一个定时任务,

Zookeeper的功能和工作原理

纵饮孤独 提交于 2020-03-02 08:05:28
1.ZooKeeper是什么? ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户 2.ZooKeeper提供了什么? 1)文件系统 2)通知机制 3.Zookeeper文件系统 每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。 有四种类型的znode: 1、PERSISTENT-持久化目录节点 客户端与zookeeper断开连接后,该节点依旧存在 2、PERSISTENT_SEQUENTIAL-持久化顺序编号目录节点 客户端与zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 3、EPHEMERAL-临时目录节点 客户端与zookeeper断开连接后,该节点被删除 4、EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点 客户端与zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号 4.Zookeeper通知机制 客户端注册监听它关心的目录节点

CentOS 7 安装 Zookeeper + ActiveMQ集群

╄→гoц情女王★ 提交于 2020-03-01 16:30:00
目录 原理 环境准备 zookeeper 集群 ActiveMQ 安装 配置 启动测试 原理 使用ZooKeeper实现的Master-Slave实现方式,是对ActiveMQ进行高可用的一种有效的解决方案。 高可用的原理: 使用ZooKeeper(集群)注册所有的ActiveMQ Broker。 只有其中的一个Broker可以对外提供服务(也就是Master节点),其他的Broker处于待机状态,被视为Slave。 如果Master因故障而不能提供服务,则利用ZooKeeper的内部选举机制会从Slave中选举出一个Broker充当Master节点,继续对外提供服务。 环境准备 主机名 系统 IP地址 zk 端口 MQ 版本 MQ 消息端口 MQ 控制台端口 node01 Centos7.5 172.16.1.11 2181 5.15.6 61616 8161 node02 Centos7.5 172.16.1.12 2181 5.15.6 61616 8161 node03 Centos7.5 172.16.1.13 2181 5.15.6 61616 8161 zookeeper 集群 zookeeper 的集群安装之前文章已经介绍过, CentOS 7 Zookeeper 介绍 及 集群安装 ,本次也同样使用该环境; ActiveMQ 安装 下载地址: 官网下载地址

ZooKeeper 的安装 以及配置说明

拜拜、爱过 提交于 2020-03-01 14:44:35
Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式. 下面将分别进行介绍. 单机模式 下载zookeeper的安装包之后(http://mirror.bit.edu.cn/apache/zookeeper/), 解压到合适目录. 进入zookeeper目录下的conf子目录, 创建zoo.cfg: Bash代码 tickTime= 2000 dataDir=/Users/apple/zookeeper/data dataLogDir=/Users/apple/zookeeper/logs clientPort= 4180 参数说明: tickTime: 基本事件单元,以毫秒为单位,用来控制心跳和超时,默认情况超时的时间为两倍的 tickTime dataDir: 数据目录. 可以是任意目录. dataLogDir: log目录, 同样可以是任意目录. 如果没有设置该参数, 将使用和dataDir相同的设置. clientPort: 监听client连接的端口号. 其他配置项: maxClientCnxns 限制连接到zookeeper的客户端数量,并且限制并发连接数量,它通过ip区分不同的客户端。 minSessionTimeout和maxSessionTimeout 最小会话超时时间和最大的会话超时时间,在默认情况下

Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建

我们两清 提交于 2020-03-01 13:45:14
转载 https://segmentfault.com/a/1190000019153491 java zookeeper 更新于 2019-10-15 约 9 分钟 前言 同道们,好久不见,上一章中,我主要讲了Zookeeper的一些基础的知识点。数据模型 + 原语集 + Watches机制。本章内容主要讲的是集群搭建相关的知识。 本篇的内容主要包含以下几点: Zookeeper 运行模式 Zookeeper 搭建 一、Zookeeper 运行模式 Zookeeper 有两种运行模式,单点模式和集群模式。 单点模式(standalone mode)- Zookeeper 只运行在单个服务器上,常用于开发测试阶段,这种模式比较简单,但是不能保证Zookeeper服务的<font color= 'red'>高可用性</font>和<font color= 'red'>恢复性</font>。 集群模式(replicated mode)- 英文原文这种模式叫做“复制模式”;这个模式下,Zookeeper运行于一个集群上,适合生产环境。 同一个集群下的server节点被称为 quorum ,翻译过来就是“一个正式会议的法定人数”,如果你看完下一章介绍的ZAB协议的两种模式之后,应该会觉得这个比喻实际上很形象。 NOTE: 在集群模式下,最少需要三个server节点

Zookeeper3.4.5 分布式搭建

让人想犯罪 __ 提交于 2020-03-01 05:02:50
Hadoop 分布式集群搭建完成的基础上 一、修改zoo.cfg dataDir=/disk/zookeeper/data dataLogDir=/disk/zookeeper/logs server.1=vm-007:2888:3888 server.2=vm-008:2888:3888 server.3=vm-009:2888:3888 二、创建myid文件 在 dataDir 目录下,创建文件myid,并写入相应的数字 vm-007,写1 vm-008,写2 vm-007,写3 在vm-007执行命令: scp zoo.cfg lwj@vm-008 :/opt/software/zookeeper-3.4.5/conf scp zoo.cfg lwj@vm-009 :/opt/software/zookeeper-3.4.5/conf 三、启动/停止 启动命令:lwj@vm-009:/opt/software/zookeeper-3.4.5$ ./bin/zkServer.sh start JMX enabled by default Using config: /opt/software/zookeeper-3.4.5/bin/../conf/zoo.cfg Usage: ./bin/zkServer.sh {start|start-foreground|stop

阿里云构建Kafka单机集群环境

删除回忆录丶 提交于 2020-02-29 13:19:55
简介 在一台ECS阿里云服务器上构建Kafa单个集群环境需要如下的几个步骤: 服务器环境 JDK的安装 ZooKeeper的安装 Kafka的安装 1. 服务器环境 CPU: 1核 内存: 2048 MB (I/O优化) 1Mbps 操作系统 ubuntu14.04 64位 感觉服务器性能还是很好的,当然不是给阿里打广告,汗。 随便向kafka里面发了点数据,性能图如下所示: 2. 安装JDK 想要跑 Java 程序,就必须安装JDK。JDK版本,本人用的是JDK1.7。 基本操作如下: 从JDK官网获取JDK的tar.gz包; 将tar包上传到服务器上的opt/JDK下面; 解压tar包; 更改etc/profile文件,将下列信息写在后面;(ps mac环境需要sudo su 以root权限进行操作) cd / cd etc vim profile 然后进行修改 添加如下部分: export JAVA_HOME=/opt/JDK/jdk1.7.0_79 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 1 2 3 4 5 6 7 1 2 3 4 5 6 7 改好后的profile文件信息如下: # /etc/profile:

EFK+kafka搭建企业日志管理系统

大兔子大兔子 提交于 2020-02-29 05:39:24
1.环境说明: Test1: 10.253.1.231 Test2:10.253.1.232 Test3:10.253.1.233 三台机器分别搭建es集群,kibana集群,zk集群,安装fluent(td-agent),安装kibana可视化数据 搭建持续性存储es集群 ** 1.安装es包(三台机器操作相同) ** [root@test3 ~]# yum -y install java-1.7.0 [root@test3 ~]# yum -y localinstall elasticsearch-1.7.3.noarch.rpm 2.建议安装以下插件 管理集群插件 # head /usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head # bigdesk /usr/share/elasticsearch/bin/plugin install hlstudio/bigdesk 安装一台,其余可以复制es的plugin下面的相应目录到其他两台的es的plugin目录。 3.查看插件状态 直接访问 http://ip:9200/_glugin/插件名就可查看 下面是head集群管理界面的状态图,五角星表示该节点为master。 搭建zookeeper集群 1.安装 [root[@test1](https:

Kafka原理及Kafka群集部署

五迷三道 提交于 2020-02-29 00:48:27
博文大纲: 一、Kafka概述 1)消息队列 2)为什么要使用消息队列? 3)什么是Kafka? 4)Kafka的特性 5)Kafka架构 6)Topic和Partition的区别 7)kafka流程图 8)Kafka的文件存储机制 9)数据的可靠性和持久性保证 10)leader选举 二、部署单机Kafka 1)部署Kafka 2)测试Kafka 三、部署Kafka群集 1)环境准备 2)部署zookeeper群集 3)部署Kafka群集 一、Kafka概述 1)消息队列 1)点对点模式 (一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息推送到客户端。这个模型的特点是发送到队列的消息被一个且只有一个接收者接收处理,即使有多个消息监听者也是如此; 2)发布/订阅模式 (一对多,数据生产后,推送给所有订阅者) 发布订阅模型则是一个基于推送的消息传送模型。发布订阅模型可以有多种不同的订阅者,临时订阅者只在主动监听主题时才接收消息,而持久订阅者则监听主题的所有消息,即使当前订阅者不可用,处于离线状态。 2)为什么要使用消息队列? 1)解耦 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2)冗余 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险