zookeeper集群

7.zookeeper集群搭建(windows环境下)

蓝咒 提交于 2020-01-10 10:15:51
转自:https://www.cnblogs.com/xuxiuxiu/p/5868481.html 本次zk测试部署版本为3.4.6版本,下载地址http://mirrors.cnnic.cn/apache/zookeeper/ 限于服务器个数有限本次测试了两种情况 1、单节点方式:部署在一台服务器上 2、单IP多节点(伪集群):部署在同一IP,但是有多个节点,各有自己的端口 3、多IP多节点:部署在不同IP,各有自己的端口(未测试) 一、单节点方式: 1、解压zk包,进入zookeeper-3.4.6\conf目录,修改zoo_sample.cfg文件为zoo.cfg.如果没有特殊需求,不需要修改配置文件,直接使用默认配置文件即可. 各个参数的意义: tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。 dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里。 clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。 initLimit:集群中的follower服务器(F)与leader服务器(L

分布式SpringBoot + Dubbo + Zookeeper伪集群

假装没事ソ 提交于 2020-01-10 04:31:24
zk伪集群指的是一台主机配置多个zk 先安装一个zk,然后把zk文件夹复制粘贴多份,这样就可以配置多个zk了,然后在每个zk配置指定参数 这里我配置了4个zk,点击进入,打开conf下的zoo.cfg(zoo_sample.cfg复制一份去掉sample就是了) 另外三个zk配置文件只要dataDir、dataLogDir和clientPort不一样即可,其他都一样 然后建立dataDir和dataLogDir对应的文件夹 然后再dataDir下的每个文件夹下建立一个myid,其内容为对应的上面所说的1、2、3、4 其他的类似,内容为2、3、4 到此zk伪集群的配置就完成了,点击zk文件夹对应的bin下的zkServer.cmd就可以启动zk了 SpringBoot和Dubbo在idea中的依赖搭建什么的我就不多说了,看我的github=》ecs项目(当然只能我自己看得到,本来就是写个自己的,记个笔记而已) 这里我出一个application.yml配置dubbo的内容 另外3个除了dubbo.application.name和protocol.port不一样,其他一样 然后提供者暴露的接口使用的注解是dubbo中的@Service,消费者需要使用dubbo中的@Reference注解自动注入,提供者的启动类要再加上个@EnableDubbo,还有用到的实体类啊

大数据框架开发基础之Zookeeper入门

夙愿已清 提交于 2020-01-09 11:22:08
Zookeeper是Hadoop分布式调度服务,用来构建分布式应用系统。构建一个分布式应用是一个很复杂的事情,主要的原因是我们需要合理有效的处理分布式集群中的部分失败的问题。例如,集群中的节点在相互通信时,A节点向B节点发送消息。A节点如果想知道消息是否发送成功,只能由B节点告诉A节点。那么如果B节点关机或者由于其他的原因脱离集群网络,问题就出现了。A节点不断的向B发送消息,并且无法获得B的响应。B也没有办法通知A节点已经离线或者关机。集群中其他的节点完全不知道B发生了什么情况,还在不断的向B发送消息。这时,你的整个集群就发生了部分失败的故障。 Zookeeper不能让部分失败的问题彻底消失,但是它提供了一些工具能够让你的分布式应用安全合理的处理部分失败的问题。 Zookeeper基本 是什么 是一个基于观察者模式设计的分布式服务管理框架,他负责存储和管理大家都关心的数据,然后接受管擦者的注册,一旦这些数据的状态发生了变化,Zookeeper就将负责通知已经在Zookeeper上注册的观察者做出相应的反应。 特点是什么 集群中半数以上的机器存活,Zookeeper集群就可以正常服务。 集群数据保持一致,每一个Server保存一分相同的数据副本,Client无论连接那个Server,数据都是一致的。 Zookeeper的工作机制 Zookeeper 特点 Zookeeper:

关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

百般思念 提交于 2020-01-09 05:48:43
关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁 首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在jdk java.util 并发包中已经为我们提供了这些方法去加锁, 比如synchronized 关键字 或者Lock 锁,都可以处理。 但是我们现在的应用程序如果只部署一台服务器,那并发量是很差的,如果同时有上万的请求那么很有可能造成服务器压力过大,而瘫痪。 想想双十一 和 三十晚上十点分支付宝红包等业务场景,自然需要用到多台服务器去同时处理这些业务,那么这些服务可能会有上百台同时处理, 但是请我们大家想一想,如果有100台服务器 要处理分红包的业务,现在假设有1亿的红包,1千万个人分,金额随机,那么这个业务场景下是不是必须确保这1千万个人最后分的红包金额总和等于1亿。 如果处理不好~~每人分到100万,那马云爸爸估计大年初一,就得宣布破产了~~ 1,常规锁会造成什么情况? 首先说一下我们为什么要搞集群,简单理解就是,需求量(请求并发量)变大了,一个工人处理能力有限,那就多招一些工人来一起处理。 假设1千万个请求平均分配到100台服务器上,每个服务器 接收10w的请求(这10w个请求并不是在同一秒中来的

关于分布式锁原理的一些学习与思考-redis分布式锁,zookeeper分布式锁

纵然是瞬间 提交于 2020-01-09 02:12:50
首先分布式锁和我们平常讲到的锁原理基本一样,目的就是确保,在多个线程并发时,只有一个线程在同一刻操作这个业务或者说方法、变量。 在一个进程中,也就是一个jvm 或者说应用中,我们很容易去处理控制,在jdk java.util 并发包中已经为我们提供了这些方法去加锁, 比如synchronized 关键字 或者Lock 锁,都可以处理。 但是我们现在的应用程序如果只部署一台服务器,那并发量是很差的,如果同时有上万的请求那么很有可能造成服务器压力过大,而瘫痪。 想想双十一 和 三十晚上十点分支付宝红包等业务场景,自然需要用到多台服务器去同时处理这些业务,那么这些服务可能会有上百台同时处理, 但是请我们大家想一想,如果有100台服务器 要处理分红包的业务,现在假设有1亿的红包,1千万个人分,金额随机,那么这个业务场景下是不是必须确保这1千万个人最后分的红包金额总和等于1亿。 如果处理不好~~每人分到100万,那马云爸爸估计大年初一,就得宣布破产了~~ 1,常规锁会造成什么情况? 首先说一下我们为什么要搞集群,简单理解就是,需求量(请求并发量)变大了,一个工人处理能力有限,那就多招一些工人来一起处理。 假设1千万个请求平均分配到100台服务器上,每个服务器 接收10w的请求(这10w个请求并不是在同一秒中来的,可能是在1,2个小时内,可以联想下我们三十晚上开红包,等到10.20开始

分布式架构之Zookeeper

♀尐吖头ヾ 提交于 2020-01-08 13:51:19
zookeeper分布式锁原理: https://my.oschina.net/u/3492343/blog/2992492 zookeeper的树形结构 zookeeper节点特性 1.同级节点唯一性 2.临时节点和持久化节点 3.有序节点和无序节点 4.临时节点下不能存在子节点 集群搭建 server.id = ip:port:port 在zoo.cfg里面加入以下 server.1=192.168.182.128:2888:3888 server.2=192.168.182.129:2888:3888 server.3=192.168.182.130:2888:3888 192.168.182.128:2888是完成数据同步的节点 192.168.182.128:3888是选举leader的节点 自己练习的话关闭防火墙service iptables stop,生产就开放相关端口, 在data目录下创建myid(id一定要和上面id对应的ip对应) vim /tmp/zookeeper/myid 里面加入:1或2或3 zoo.cfg里面的参数 1.tickTime=2000 心跳时间 2.initLimit=10 初始化同步数据的时候10个心跳时间 3.syncLimit=5 心跳检测的最大延迟 4.dataDir = /x 同步数据存储的位置 5.clientPort

zookeeper单机和集群环境的搭建

 ̄綄美尐妖づ 提交于 2020-01-07 17:32:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. 前言 19年过的还蛮快,这篇博客作为20年的第一篇,我想在这里为前一年做一个简单的总结:说真的,19年过的蛮凄惨的。😄没错,总结就是这一句话,毕竟仪式感必须还是要有的。 好了,不说这些了,希望20年过的好吧,多存点钱,少点烦恼。 2. 简单说一下zookeeper是什么,可以解决什么问题 ZooKeeper 是Hadoop下的一个子项目,它是一个针对大型分布式系统的可靠协调系统;它提供的功能包括:配置维护、名字服务、分布式同步、组服务等; 它的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。 统一命名 在分布式环境中统一命名服务就像域名与ip一样,IP不容易记住,域名比较容易记住,统一命名服务,可以直接来通过服务名称获取服务的地址等关键信息。 配置管理 这个比较好理解,在分布式项目中,每个项目的配置提取出来,统一管理。目前市面上用的多的是apollo,nacos,spring cloud conifg等 集群管理 担任服务生产者和服务消费者的注册中心,服务生产者将自己提供的服务注册到Zookeeper中心,服务的消费者在进行服务调用的时候先到Zookeeper中查找服务,获取到服务生产者的详细信息之后,再去调用服务生产者的内容与数据。 分布式通知与协调 心跳机制

Zookeeper实现分布式锁

社会主义新天地 提交于 2020-01-07 17:06:39
几天分析了一下三种分布式锁的实现,但是没有利用zookeeper实现一个分布式锁,因为感觉基于Zookeeper实现分布式锁还是稍微复杂的,同时也需要使用Watcher机制,所以就单独搞一篇Zookeeper实现的分布式锁。 首先,第一种实现。我们可以利用Zookeeper不能重复创建一个节点的特性来实现一个分布式锁,这看起来和redis实现分布式锁很像。但是也是有差异的,后面会详细分析。 主要流程图如下: 上面的流程很简单: 查看目标Node是否已经创建,已经创建,那么等待锁。 如果未创建,创建一个瞬时Node,表示已经占有锁。 如果创建失败,那么证明锁已经被其他线程占有了,那么同样等待锁。 当释放锁,或者当前Session超时的时候,节点被删除,唤醒之前等待锁的线程去争抢锁。 上面是一个完整的流程,简单的代码实现如下: package com.codertom.params.engine; import com.google.common.base.Strings; import org.apache.zookeeper.*; import java.io.IOException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java

基于zookeeper搭建dubbo可用环境--实战篇

穿精又带淫゛_ 提交于 2020-01-07 12:47:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原文地址 1、搭建zookeeper集群环境 这个在上上上个文章中已经详细描述了 点击查看 2、通过dubbo-admin(dubbo后台管理系统) 查看dubbo 提供者和消费者等 dubbo-admin-2.5.3.war 点击下载就好 下载完毕之后找一个tomcat 将该war包解压缩,然后修改里面的 \tomcat7-dubbo\webapps\ROOT\WEB-INF\dubbo.properties 修改 dubbo.registry.address=zookeeper://192.168.1.211:2181?backup=192.168.1.212:2181,192.168.1.213:2181 其他的不用修改,然后直接启动tomcat就好了。由于我tomcat设定的端口是80 并且我讲dubbo-admin 放到了ROOT下,所以我直接在浏览器中录入localhost就可以访问了。 用户名root 密码root(刚才在那个配置文件夹中的password 就是这个root 用户的密码) 进入之后可以在里面各种点点看一下。 3、咱们直接上源码来解释: 点击查看下载 下载完毕之后,主要说一下provider 和consumer 关于dubbo.xml的配置文件 provider: <!--

【docker系列】三台阿里云服务器搭建zookeeper集群+kafka集群,并且测试

风流意气都作罢 提交于 2020-01-06 21:28:00
因为存在docker容器 跨主机网络通信,所以可以先看这一篇: 【docker系列】解决阿里云多主机服务器,docker overlay 跨主机网络通信环境 环境: 三台为:11.11.11.11 、11.11.11.22 、11.11.11.33 每台主机部署一个zookeeper节点,一个kafka节点,共三个zookeeper节点,三个kafka节点, 容器之间的网络采用overlay模式 一、创建 overlay 网络 # 创建 overlay 网卡,用于 集群服务的网卡设置(只需要在 master 节点上创建,从节点自然会获取) docker network create --driver overlay --subnet=15.0.0.0/24 --gateway=15.0.0.254 --attachable ccluster-overlay-elk 二、创建并运行容器 1、创建容器 [root@master conf]# sudo docker run -dit \ --net cluster-overlay-elk \ --ip 15.0.0.250 \ --restart=always \ --privileged=true \ --hostname=hadoop_zookeeper \ --name=hadoop-zookeeper-one \ -p