zookeeper集群

分布式锁 原理及实现方式

纵饮孤独 提交于 2020-01-27 00:03:47
一、原理 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要通过一些互斥手段来防止彼此之间的干扰,以保证一致性,在这种情况下,就需要使用分布式锁了。 在平时的实际项目开发中,我们往往很少会去在意分布式锁,而是依赖于关系型数据库固有的排他性来实现不同进程之间的互斥,但大型分布式系统的性能瓶颈往往集中在数据库操作上。 在单机环境中,Java中其实提供了很多并发处理相关的API,但是这些API在分布式场景中就无能为力了。也就是说单纯的Java Api并不能提供分布式锁的能力。 其实秒杀类场景最主要的是执行秒杀操作要单线程的,提到单线程,肯定会想到synchronized关键字,但是他有两个致命缺点:1、无法做到细粒度控制,2、只适合单点不适用集群。 所以大多数项目只能采用分布式锁的实现方式。 针对分布式锁的实现,目前比较常用的有以下几种方案:     基于数据库实现分布式锁     基于缓存(redis,memcached,tair)实现分布式锁     基于Zookeeper实现分布式锁 分布式锁主要有基于缓存如redis、基于zookeeper、基于数据库的实现。 在分析这几种实现方案之前我们先来想一下,我们需要的分布式锁应该是怎么样的?(这里以方法锁为例,资源锁同理)     

SpringCloud与Dubbo对比

天涯浪子 提交于 2020-01-26 14:43:48
SpringCloud和Dubbo都是当下流行的RPC框架,各自都集成了服务发现和治理组件。SpringCloud用Eureka做注册中心,Dubbo用Zookeeper注册中心。 注册服务 Dubbo是基于java接口及Hession2序列化的来实现传输的,Provider对外暴露接口,Consumer根据接口的规则调用。也就是Provider向Zookeeper注册的是接口信息,Consumer从Zookeeper发现的是接口的信息,通过接口的name,group,version来匹配调用。Consumer只关注接口是否匹配,而对此接口属于什么应用不关心。当然接口的注册信息里会包含应用的ip,hostname等。 SpringCloud的服务发现是基于Http协议来实现的,Provider对外暴露的是应用信息,比如应用名称,ip地址等等,Consumer发现的是应用的信息,当调用的时候随机选择一个Provider的IP地址,应用名称,然后依据Http协议发送请求。Consumer关注的是应用名称,根据应用名称来决定调用的是哪个服务集群,然后对此名称对应的服务集群做负载均衡。Provider接受到请求后,根据内置的SpringMVC来匹配路由处理请求。 SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka

Zookeeper集群搭建及开机自启动

喜夏-厌秋 提交于 2020-01-26 14:39:11
一、Zookeeper集群配置 1.将zoo_sample.cfg改名为zoo.cfg tickTime=2000 initLimit=10 syncLimit=5 dataLogDir=/opt/zookeeper/logs dataDir=/opt/zookeeper/data clientPort=2181 autopurge.snapRetainCount=500 autopurge.purgeInterval=24 server.1= 192.168.10.135:2888:3888 server.2= 192.168.10.136:2888:3888 server.3= 192.168.10.137:2888:3888 2.创建文件夹 mkdir -p /opt/zookeeper/{logs,data} 3.分别写入不同的myid echo "1" > /opt/zookeeper/data/myid echo "2" > /opt/zookeeper/data/myid echo "3" > /opt/zookeeper/data/myid 4.解压zk,并复制到文件夹 tar -zxvf /home/software/zookeeper-3.4.10.tar.gz mkdir -p /home/opt/zookeeper/ mv /home/software

zookeeper集群搭建

有些话、适合烂在心里 提交于 2020-01-26 03:46:59
准备三台虚拟机 ip192.168.1.120 ip192.168.1.145 ip192.168.1.234 下载zookeeper https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/ 上传安装包到ip为192.168.1.120中 安装依赖环境 安装jdk,参见: jdk-8u91 [root@localhost ~]# yum -y install vim lrzsz 上传zookeeper压缩包 [root@localhost ~]# mkdir -p /data/server [root@localhost ~]# cd /usr/local/src/ [root@localhost src]# rz [root@localhost src]# ls zookeeper-3.4.14.tar.gz 解压缩包 [root@localhost src]# tar zxf zookeeper-3.4.14.tar.gz -C /data/server/ [root@localhost src]# cd /data/server/zookeeper-3.4.14/conf/ 修改配置文件 [root@localhost conf]# cp zoo_sample.cfg zoo.cfg [root@localhost

初识Zookeeper

試著忘記壹切 提交于 2020-01-26 00:46:56
一、基本点   Zookeeper算是现在互联网公司中软件开发中最常接触的“软件”之一了。它的设计目标就是将那些复杂且容易出错的分布式一致性服务封装起来,然后构成一个高效可靠的原语集,然后提供一系列简单易用的接口给用户。其实比如一些RPC框架、Kafka等消息队列机制,内部都是依赖了Zookeeper来进行分布式调度,Hadoop、storm、HBase、Solr等都把Zookeeper作为核心组件。分布式应用可以利用zk提供的诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。 ZK最早起源于雅虎研究院,zookeeper的来源也是因为雅虎众多项目都是以动物来命名,作为他们服务的管理和协调者,zookeeper的名字也就因此而来了。   ZK的几个基本概念: 1、集群角色。zk没有沿用传统的Master/Slave的概念,而是引入了Leader、Follower和Observer角色。Leader服务器为客户端提供读写;Follower和Observer都可以提供读服务器,区别在于,Observer服务器不参与Leader选举过程,也不参与写操作的“过半写成功”策略。 2、会话(Session)。客户端和服务器端的tcp长链接。 3、数据节点(Znode)。Zk的所有数据存在内存中,数据模型是一棵树,由斜杠进行分割路径

集群配置 zookeeper

若如初见. 提交于 2020-01-25 17:55:15
环境:虚拟机,三台centos7,已经配置hadoop ip: 192.168.243.200 master 192.168.243.201 slave1 192.168.243.202 slave2 三台机器均进行以下配置和操作 关闭防火墙 systemctl stop firewalld systemctl disable firewalld 解压 zookeeper 的压缩包 cd /usr/local/src tar xvzf zookeeper-3.4.5.tar.gz cd zookeeper-3.4.5 修改配置文件 cd conf # 复制一份模板 cp zoo_sample.cfg zoo.cfg vim zoo.cfg 修改 dataDir 、dataLogDir 注意:dataDir 、dataLogDir 最好是相同的父目录,都在zookeeper文件里面,如果按照默认,去了/tmp/ 里面创建zookeeper 在进行其他操作是不行的 添加 server.1=master:2881:3881 server.2=slave1:2881:3881 server.3=slave2:2881:3881 去到 dataDir 对应的路径,创建 data 目录和 logs 目录 cd /usr/local/src/zookeeper-3.4.5 mkdir logs

dubbox使用

帅比萌擦擦* 提交于 2020-01-25 10:26:52
1.命令行下 git clone https://github.com/dangdangdotcom/dubbox 2.mvn install -Dmaven.test.skip=true 跳过测试编译 3.安装一个zookeeper,参考zoo.cfg如下: tickTime=2000 initLimit=10 syncLimit=5 dataDir=/home/shilin/zookeeper-3.4.6/data dataLogDir=/home/shilin/zookeeper-3.4.6/log clientPort=2181 server.1=localhost:2287:3387 bin/zkServer.sh 启用zookeeper 4.运行dubbox测试例子(用jdk1.7+运行例子) 生产者和消费者配置文件里 <dubbo:registry address="zookeeper://192.168.118.136:2181"/>改成配置好的zookeeper地址如果zookeeper集群,配置类似 <dubbo:registry address="zookeeper://172.28.*.102:2181?backup=172.28.*.102:2182,172.28.*.102:2183"/> 运行 \dubbox\dubbo-demo\dubbo-demo

四、zookeeper-3.4.5-cdh5.3.6集群搭建

可紊 提交于 2020-01-25 08:08:49
①为什么要搭建zookeeper以及zookeeper是什么? zookeeper是用来做分布式协调的技术框架。我们最后一个模块:实时计算模块,广告流量的实时计算模块,需要用到消息队列,消息队列采取kafka,kafka底层是zookeeper,所以我们必须把zookeeper搭起来。 ②拷贝文件 将zookeeper-3.4.5-cdh5.3.6.tar.gz用软件WinSCP拷贝到虚拟机sparkproject1的/usr/local/目录下面。 ③解压缩tar包文件 对zookeeper-3.4.5-cdh5.3.6.tar.gz文件进行解压缩,在sparkproject1虚拟机的/usr/local/目录下输入: tar -zxvf zookeeper-3.4.5-cdh5.3.6.tar.gz 然后在local目录下输入:ll,发现有zookeeper-3.4.5-cdh5.3.6.tar.gz文件和zookeeper-3.4.5-cdh5.3.6文件夹 删除zookeeper-3.4.5-cdh5.3.6.tar.gz文件,留下zookeeper-3.4.5-cdh5.3.6文件夹, 在local目录下输入:rm -rf zookeeper-3.4.5-cdh5.3.6.tar.gz 然后在输入:ll,发现只有zookeeper-3.4.5-cdh5.3.6文件夹

zookeeper集群搭建

别等时光非礼了梦想. 提交于 2020-01-25 02:32:51
zk集群搭建 简介:介绍如何在linux环境中搭建zookeeper集群 端口的作用 2181 对client端提供服务 2888 集群内及其通讯使用的端口 3888 集群选举leader 修改zk配置 编辑zk的conf目录下的 zoo.cfg dataDir=/usr/local/zookeeper-3.4.12/data server.1=xdclass1:2888:3888 server.2=xdclass2:2888:3888 server.3=xdclass3:2888:3888 在zk的根目录下,新建一个data目录,并在data目录下新增一个myid的文件 将修改好配置的zk,分别放到三台服务器的/usr/local/,并将目录权限改为zookeeper用户 三台服务器,分别新增一个叫做zookeeper的用户 useradd zookeeper 三台服务器,均修改/usr/local/zookeeper-3.4.12/data/目录里的myid文件,文件内容是一个数字,对应 server.1=xdclass1 里的1 三台服务器的zk的权限,都赋给zookeeper用户 chown -R zookeeper:zookeeper zookeeper-3.4.12/ 关闭防火墙 systemctl stop firewalld.service 进入zk的bin目录

zookeeper集群部署

和自甴很熟 提交于 2020-01-24 14:39:38
1.Zookeeper概念简介: Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务 A、zookeeper是为别的分布式程序服务的 B、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务) C、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统一名称服务…… D、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能: 管理(存储,读取)用户程序提交的数据; 并为用户程序提供数据节点监听服务; Zookeeper常用应用场景: 《见图》 Zookeeper集群的角色: Leader 和 follower(Observer) 只要集群中有半数以上节点存活,集群就能提供服务 2.zookeeper集群机制 半数机制:集群中半数以上机器存活,集群可用。 zookeeper适合装在奇数台机器上!!! 3.安装 3.1. 安装 3.1.1.机器部署 安装到3台虚拟机上 安装好JDK 3.1.2.上传 上传用工具。 3.1.3.解压 su – hadoop(切换到hadoop用户) tar -zxvf zookeeper-3.4.5.tar.gz(解压) 3.1.4.重命名 mv zookeeper-3.4.5 zookeeper(重命名文件夹zookeeper-3