zookeeper是什么

百度定义:

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。

它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等。通俗一点理解可以认为他可以服务管理集群、管理集群服务器中配置信息,这两点是我们在项目中最常用的两个特点,其中对每个服务实例中的配置文件维护非常繁琐,因此会引入配置服务器来维护配置除此之外还有日志服务器等,免去了我们为了解决一个小bug而去查找好几G的日志文件。

主要作用

在分布式SOA开发中我们要有种这样的认识:对于某一个服务是集群提供给消费者的,而不是一个特定的机器。

因此必须有一种机制来发现判断哪些节点可以提供服务,换句话说就是当消费者访问时一个服务时,判断出哪些服务可以使用,如果两个或者两个以上服务可以使用,还必须根据调用算法,合理的调用服务接口。

既然每个服务都不是简单的部署在一台电脑上面,可能部署了多个节点多个机器,为的就是避免某一个服务压力过大或其他原因宕机时,仍然保证7*24小时不间断服务;

如果公司业务扩展非常快访问数量在急剧增长,可以支持动态增加后台服务节点来适用压力的增长,也就是可伸缩性要好,zookeeper可以完美的解决这些问题,这也是很多公司倾向于使用它来作为服务注册发现调度框架。

它的名字服务就比如JNDI为我们提供的命名目录服务,为我们访问某一个特定的资源指定了一个别人,在以后适用起来通过这个别人就可以拿到我们所需资源。

开发项目的我们都知道每个项目里都会有很多的配置文件,例如大家最熟悉的连接数据库信息、日志打印格式方式、属性文件等等,在非分布式环境中常常一个项目部署一台机器即可,修改配置文件只需要在一台机器上面改一下;如果到了分布式项目一个服务就需要配置好几台机器多的话可能十几台、数百台、上千台、如果到了上万台服务,这项工作量可想而知,光改一个小小的配置文件就需要改好几天而且非常容易改错,这种事情zookeeper可以帮我们管理配置文件,并且可以做到改了zookeeper配置其它服务节点自动更新的热部署能力,在分布式中它发挥的作用还是很大的。

我们公司在管理配置文件时并没有使用zookeeper的配置管理,不知道为啥?可能单独引入一个框架会好用一些,使用的百度的disconf来统一管理配置信息,从资料和使用的效果来看还是比较简单的容易上手。

安装实例

由于机器有限这里我安装了一下伪分布式集群,公司在开发以及测试环境搭建的也是伪分布式模式,感觉和真正分布式集群其实是一样的没有多少区别,安装方式步骤几乎也一模一样,下面是安装的基本步骤。

1.安装jdk 1.6以上,我们公司安装的1.7,如

2. 下载zookeeper-3.4.6.tar.gz , 输入命令 tar -zxvf 解压,创建如下目录结构:

3. 进入conf目录,将example.zoo.cfg复制并改名为zoo.cfg,zoo.cfg内容如下图

说明:上图红框框起来的表示需要修改的地方,第一处为数据、日志目录;

第二处为客户端连接此zookeeper服务的端口,由于三个实例在一个机器所以需要修改;

第三处为zookeeper服务之间需要相互访问的IP、Port、选举Port,如果只有一个实例不需要互相通信就不需要配置这个信息。关于各个参数含义网上很多。

4. 在zookeeper-01/下面创建data、logs两个目录,并在data文件夹中建一个文件名为myid,内容为数字的文件,(数字与server.*)中*一致,可以使用命令:echo 1 > myid。意思是先将1输出到屏幕,然后读入到myid文件,不存在文件则创建。

5. 将zookeeper-01复制三份,分别改名为02 、03,对应端口改为2181、2183,然后,分别进入bin目录启动,即可完成安装。

注意在部署的时候一般部署奇数台,因为部署2n与2n-1台宕机之后他们的集群稳定性是一样的,就没有必要多部署一台了。

部署架构

安装完之后的部署架构如下图:

zookeeper是作为一个小的集群对外面提供服务,主要用来协调右下角的消费者与左下角的服务之间的调用关系,通过dubboe-admin控制台可以实时监测server-01/02是否工作正常,

总结

注册中心组成分布式框架的一部分,起着承上起来的连接协调作用,虽然不是服务的真正实现者但也不容忽视,感觉在分布式框架中已经不再仅仅关心服务的实现层面,除了服务实现还有服务管理、性能、事务等都是我们需要考虑的问题,分布式服务开发可以说对一个开发人员的素质要求也是高的,然后,大部分人习惯了实现代码忽略了整体架构,关心的东西多了慢慢就会了解架构就是架构师,有时一个人关心的决定了他将要成为什么样的角色、什么样的人。

注册中心zookeeper-3.4.6集群以及高可用的更多相关文章

  1. Nginx+Zuul集群实现高可用网关

    代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...

  2. hadoop 集群HA高可用搭建以及问题解决方案

    hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...

  3. 11.Redis 哨兵集群实现高可用

    作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...

  4. K8S集群Master高可用实践

    K8S集群Master高可用实践    https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...

  5. Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试

    文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...

  6. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  7. 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...

  8. 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程

    * { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...

  9. Rabbitmq安装、集群与高可用配置

    历史: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多 ...

  10. Quartz学习笔记:集群部署&高可用

    Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...

随机推荐

  1. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  2. hdfs shell的基本操作以及hdfsWeb查看文件

    在安装好hadoop集群并成功的启动了hdfs之后,我们就可以利用hdfs对文件进行操作了,一下是对文件的一些基本操作 hdfs基本操作 1.查询命令 hadoop dfs -ls /   查询/目录 ...

  3. 容器化VS微服务

    1 微服务 1.1 思想 开发人员自己测试.部署和运维自己编写的代码,即自己负责构建生命周期的全部. 1.2 Spring Boot 提供服务化的能力,即把容器.服务所需依赖和服务一起打包成一个jar ...

  4. 关于云主机Thinkphp框架Session跨页失效的问题

    在网站部署到云主机之后,前台一直能够正常显示,后台确登录不上去,验证码也无法显示,研究半天,才确定是Session跨页传递失效的问题.找网上各种解决方法,都是关于Php.ini文件的设置,可又解决不了 ...

  5. BZOJ - 2741 分块维护最大连续异或和

    题意:给定\(a[l...r]\),多次询问区间\([l,r]\)中的最大连续异或和\(a_i⊕a_{i+1}⊕...⊕a_{j},l≤i≤j≤r\) 一眼过去认为是不可做的,但题目给出\(n=1.2 ...

  6. Flask基础应用

    一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 Django: 优点: 大而全,组件非常全面. 缺点: 太大,加载太大,浪费资源. Flask: 优点: ...

  7. python 元类以及练习

    ''' # 知识储备exec() # 参数1:字符串形式的命令 # 参数2:全局作用域(字典形式),如果不指定默认就使用globals() # 参数3:局部作用域(字典形式),如果不指定默认就使用lo ...

  8. form表单提交到Controller之后空值变成逗号

    首先这个错误不是我遇到的,是别人遇到来找我给帮忙调试的(我不会犯这种错误!!!) 错误非常神奇,前端页面的form表单是空的啥都没填,提交到后台之后(后台用@ModelAttribute实体类接受的) ...

  9. linux忘记root密码怎么办

    如何找回root密码,如果我们不小心,忘记root密码,怎么找回? 思路:进入到单用户模式,然后修改root密码.因为进入单用户模式,root不需要密码就可以登录. 详细过程: 1.打开虚拟机 2.开 ...

  10. Java - 冒泡排序的优化算法(尚学堂第七章数组)

    import java.util.Arrays; public class TestBubbleSort2 { public static void main(String[] args) { int ...