ZK

zookeeper之基础简介

邮差的信 提交于 2020-03-09 00:13:38
文章目录 1 zookeeper简介 1.1 数据发布与订阅(配置中心) 1.2 负载均衡 1.3 命名服务(Naming Service) 1.4 分布式通知/协调 1.5 集群管理与 Master 选举 1.6 分布式锁 1.7 分布式队列 1 zookeeper简介 ZooKeeper 是一个高可用的分布式数据管理不系统协调框架。基于对 Paxos 算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得 ZooKeeper 解决很多分布式问题。 网上对 ZK 的应用场景也有不少介绍,本文将系统地对 ZK 的应用场景迚行一个分门归类的介绍。 值得注意的是, ZK 并非天生就是为这些应用场景设计的,都是后来众多开发者根据其框架的特性,利用其提供的一系列 API 接口,摸索出来的典型使用方法。 1.1 数据发布与订阅(配置中心) 发布不订阅模型,即所谓的 配置中心 ,顾名思义就是发布者将数据发布到 ZK 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。例如全局的配置信息,服务式服务框架的服务地址列表等就非常适合使用。 应用中用到的一些配置信息放到 ZK 上迚行集中管理。这类场景通常是这样:应用在启劢的时候会主动来获取一次配置,同时,在节点上注册一个 Watcher ,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端

zookeeper简介和安装

痞子三分冷 提交于 2020-03-08 20:22:12
Zookeeper简介   zookeeper是致力于提供一个高性能、高可用,且具备严格的循序访问控制能力的分布式协调服务。由雅虎公司创建,是谷歌的Chubby一个开源实现,也是Hadoop和Hbase的重要组件。 特点:   简单数据结构: 共享的树形结构,类似文件系统,数据存储在内存中   顺序访问: 对于每个读请求,zk会分配一个全局唯一的递增编号,利用这个特性可以实现高级协调服务   可构建集群: 避免单点故障,3-5台机子便可组成集群,过半机制 保证只要超过半数机子正常工作就能对外提供服务   高性能: 基于内存操作,服务于非事务请求,适用于读操作为主的业务场景。3台zk集群能达到13w QPS 适用场景:   发布订阅 集群管理 负载均衡 配置管理 命名服务 分布式队列 分布式锁 (后面会详细学习) 下载地址 : http://mirror.bit.edu.cn/apache/zookeeper/   我在这里使用的是 zookeeper-3.5.7 版本              这里我直接下载使用编译好的二进制文件压缩包。 安装:      将下载好的压缩包上传到服务器,使用命令: tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz 解压    修改zk的配置文件   我这里使用的是伪集群模式      

zk 05之:ZooKeeper的配置

帅比萌擦擦* 提交于 2020-03-06 16:51:11
ZooKeeper 的功能特性通过 ZooKeeper 配置文件来进行控制管理( zoo.cfg 配置文件)。 ZooKeeper 这样的设计其实是有它自身的原因的。通过前面对 ZooKeeper 的配置可以看出,对 ZooKeeper 集群进行配置的时候,它的配置文档是完全相同的(对于集群伪分布模式来说,只有很少的部分是不同的)。这样的配置方使得在部署ZooKeeper 服务的时候非常地方便。另外,如果 服务器 使用不同的配置文件,必须要确保不同配置文件中的服务器列表相匹配。 在设置 ZooKeeper 配置文档的时候,某些参数是可选的,但是某些参数是必须的。这些必须的参数就构成了ZooKeeper 配置文档的最低配置要求。 下面是在最低配置要求中必须配置的参数: 1 )最低配置 clientPort 监听客户端连接的端口; dataDir 存储内存中 数据库 快照的位置; 注意 应该谨慎地选择日志存放的位置,使用专用的日志 存储设备 能够大大地提高系统的性能,如果将日志 存储 在比较繁忙的存储设备上,那么将会在很大程度上影响系统的性能。 tickTime 基本事件单元,以毫秒为单位。它用来控制心跳和超时,默认情况下最小的会话超时时间为两倍的 tickTime 。 2 )高级配置 下面是高级配置要求中可选的配置参数,用户可以使用下面的参数来更好地规定 ZooKeeper 的行为:

ZooKeeper学习第八期——ZooKeeper伸缩性

久未见 提交于 2020-03-06 16:50:04
ZooKeeper学习第一期---Zookeeper简单介绍 ZooKeeper学习第二期--ZooKeeper安装配置 ZooKeeper学习第三期---Zookeeper命令操作 ZooKeeper学习第四期---构建ZooKeeper应用 ZooKeeper学习第五期--ZooKeeper管理分布式环境中的数据 ZooKeeper学习第六期---ZooKeeper机制架构 ZooKeeper学习第七期--ZooKeeper一致性原理 ZooKeeper学习第八期——ZooKeeper伸缩性 一、Zookeeper的搭建方式 Zookeeper安装方式有三种, 单机模式 和 集群模式 以及 伪集群模式 。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现高可用性,只要集合体中半数以上的机器处于可用状态,它就能够保证服务继续。 为什么一定要超过半数呢 ?这跟Zookeeper的复制策略有关:zookeeper确保对znode 树的每一个修改都会被复制到集合体中超过半数的机器上。 1.1 Zookeeper的单机模式搭建 下载

JAVA最清晰的学习过程,适合正在努力的你

左心房为你撑大大i 提交于 2020-03-06 15:32:41
本文会从一个完整的电商系统作为切入点,带着大家看看,我们需要学些啥,我甚至还收集配套资料基本上算是麻雀虽小五脏俱全,我今天就用它开刀,一步步剖析,我会讲一下我们可能会接触的技术栈可能不全,但是够用,最后给个学习路线。 Tip:请多欣赏一会,每个点看一下,看看什么地方是你接触过的,什么技术栈是你不太熟悉的,我觉得还算是比较全的,有什么建议也可以留言给我。 不知道大家都看了一下没,现在我们就要庖丁解牛了,我从上到下依次分析。 前端 你可能会会好奇,你不是讲后端学习路线嘛,为啥还有前端的部分,我只能告诉你,傻瓜,肤浅。 我们可不能闭门造车,谁告诉你后端就不学点前端了? 前端现在很多也了解后端的技术栈的,你想我们去一个网站,最先接触的,最先看到的是啥? 没错就是前端,在大学你要是找不到专门的前端同学,去做系统肯定也要自己顶一下前端的,那我觉得最基本的技术栈得熟悉和了解吧,毕竟前端和后端相互忽悠的也不少,我现在也是偶尔会开发一下我们的管理系统主要是 VUE 和 React 。 在这里我列举了我目前觉得比较简单和我们后端可以了解的技术栈,都是比较基础的。 作为一名后端了解部分前端知识还是很有必要的,在以后开发的时候,公司有前端那能帮助你前后端联调更顺畅,如果没前端你自己也能顶一下简单的页面。 HTML、CSS、JS、Ajax 我觉得是必须掌握的点,看着简单其实深究或者去操作的话还是有很多东西的

hadoop高可用安装与配置

感情迁移 提交于 2020-03-05 11:23:06
集群的规划 host | 基本的软件 | 运行的进程 data1 | jdk、zk、hadoop | NameNode、zkfc、zk、journalNode、ResourceManager data2 | jdk、zk、hadoop | NameNode、zkfc、zk、journalNode、ResourceManager、datanode、NodeManager data3 | jdk、zk、hadoop | zk、journalNode、datanode、NodeManager 一.SSH免密登录 1.data1: ssh-keygen -t rsa , 然后一直按回车 ssh-copy-id data1 ssh-copy-id data2 ssh-copy-id data3 2.在data2和data3上重复执行1的操作 二.安装jdk 省略 三.安装zookeeper 省略 四.安装hadoop 1.下载到/data/tools: wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.10.0/hadoop-2.10.0.tar.gz 2. 添加环境变量:sudo vi /etc/profile export HADOOP_HOME=/data/tools/hadoop-2.10.0 export

zk Acl权限:只有一个账号有crdwa权限,匿名用户只有r权限

帅比萌擦擦* 提交于 2020-03-04 23:35:36
起因 最近在做多租户改造,租户使用的配置项都要放到zk上(如数据库配置、redis配置、阿里oss配置、每个租户的域名配置等),每个子系统去zk读取配置。当配置信息改变时,通过zk的watch机制,给子系统发消息,子系统接收到消息之后,再去做相应的处理(如:租户1的数据库配置变了,就重新创建数据库连接池)。 图1:系统关系逻辑及问题描述 问题描述: 主要是只读的那些zkClient,不用账号密码,就能读(r)到zk上的数据。而不是给子系统分配账号密码。 子系统访问zk的时候,是不能带账号密码的。 如果用digest 给子系统分配统一的一个账号密码,在代码的层面是可以实现的。 但是老大要求,子系统访问zk的时候,不能带着密码。而且,只能有读(r)权限。 思路 注:这5种权限中,delete是指对子节点的删除权限,其它4种权限指对自身节点的操作权限 使用命令看一下world的权限是cdrwa(也就是anyone拥有所有权限) 所以,突然想到,能不能把world身份认证方式的默认权限设置成r,而admin的账号分配给crdwa权限。 于是使用代码: public void set(String path, String data) { createPathIfNotExists(path); zkClient.writeData(path, data); } /** *

window 10 下安装 Python3

你离开我真会死。 提交于 2020-03-03 10:21:34
[ global ] index - url = https : // mirrors . aliyun . com / pypi / simple 豆瓣源: https://pypi.douban.com/simple/ 阿里源: https://mirrors.aliyun.com/pypi/simple 来源: CSDN 作者: Adley_zk 链接: https://blog.csdn.net/Adley_zk/article/details/104625420

大数据教程(3.7):zookeeper集群自动化启动、关闭、重启脚本

老子叫甜甜 提交于 2020-03-02 06:48:08
上一章节博主介绍了zookeeper的命令行客户端的基本使用、数据结构以及监听等等功能,本节博主将继续为大家分享zookeeper的启动、关闭、重启。在我们现在的大型项目里面,除了zookeeper外,还有很多的中间件都是集群式部署工作的(如:kafka,storm等等)。如果我们此时一台一台服务器的去启动相应的机器上安装的集群服务,那相当的耗时。那有没有一种简单的方式来实现一次操作就将整个集群启动呢?答案当然是可以的,我们可通过编写shell脚本来远程执行集群上每个节点对于的机器上的服务,从而实现整个集群的一键启动。 可能用到的命令: 关闭防火墙和selinux: Redhat使用了SELinux来增强安全,关闭的办法为: 1. 永久有效 修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启。 2. 即时生效 setenforce 0 关闭防火墙的方法为: 1. 永久性生效 开启:chkconfig iptables on 关闭:chkconfig iptables off 2. 即时生效,重启后失效 开启:service iptables start 关闭:service iptables stop 需要说明的是对于 Linux 下的其它服务都可以用以上命令执行开启和关闭操作 补充: a.

分布式调度Elastic-Job攻略

丶灬走出姿态 提交于 2020-03-02 04:08:03
昨天虽然试用了一下唯品会的“土星”,但是我实在没想明白他的Job该怎么用Spring来托管,所以没有使用。今天来说一下当当的Elastic-Job. 安装管理平台 先说一下Elastic-Job的管理平台跟Java的Job开发没有半毛钱关系,他只是把注册进Zookeeper的信息读取出来,进行控制。 先下载Elastic-Job的源代码git clone https://github.com/elasticjob/elastic-job-lite.git,编译之后找到elastic-job-lite-console-3.0.0.M1-SNAPSHOT.tar.gz上传到服务器,解压之后进入/bin目录。 先不要急着执行start.sh,因为这个文件里面有Windows字符,linux无法识别。 所以先执行 sed -i 's/\r$//' start.sh 改掉Windows字符。 然后执行nohup ./start.sh & 在浏览器打开服务器的8899端口(用户名root,密码root) 先配置好zookeeper的注册中心地址,命名空间,基本上这个就装好了。 编写Java Job pom <dependency> <groupId>com.github.kuhn-he</groupId> <artifactId>elastic-job-lite-spring-boot