注册中心zookeeper-3.4.6集群以及高可用
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集群以及高可用的更多相关文章
- Nginx+Zuul集群实现高可用网关
代码参考:https://github.com/HCJ-shadow/Zuul-Gateway-Cluster-Nginx Zuul的路由转发功能 前期准备 搭建Eureka服务注册中心 服务提供者m ...
- hadoop 集群HA高可用搭建以及问题解决方案
hadoop 集群HA高可用搭建 目录大纲 1. hadoop HA原理 2. hadoop HA特点 3. Zookeeper 配置 4. 安装Hadoop集群 5. Hadoop HA配置 搭建环 ...
- 11.Redis 哨兵集群实现高可用
作者:中华石杉 Redis 哨兵集群实现高可用 哨兵的介绍 sentinel,中文名是哨兵.哨兵是 redis 集群机构中非常重要的一个组件,主要有以下功能: 集群监控:负责监控 redis mast ...
- K8S集群Master高可用实践
K8S集群Master高可用实践 https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...
- Dubbo入门到精通学习笔记(十五):Redis集群的安装(Redis3+CentOS)、Redis集群的高可用测试(含Jedis客户端的使用)、Redis集群的扩展测试
文章目录 Redis集群的安装(Redis3+CentOS) 参考文档 Redis 集群介绍.特性.规范等(可看提供的参考文档+视频解说) Redis 集群的安装(Redis3.0.3 + CentO ...
- 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)
1.熟悉几个组件 1.1.apache —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- 15套java架构师、集群、高可用、高可扩 展、高性能、高并发、性能优化Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩 展 ...
- Rabbitmq安装、集群与高可用配置
历史: RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息通讯的世界里有很多 ...
- Quartz学习笔记:集群部署&高可用
Quartz学习笔记:集群部署&高可用 集群部署 一个Quartz集群中的每个节点是一个独立的Quartz应用,它又管理着其他的节点.这就意味着你必须对每个节点分别启动或停止.Quartz集群 ...
随机推荐
- 集合的addAll方法--list.addAll(null)会报错--java.lang.NullPointerException
Exception in thread "main" java.lang.NullPointerException at java.util.ArrayList.addAll(Ar ...
- [Swift]扩展String类:extension String
请参考本博客另一篇技术博文: <[Swift]字符串(String类.NSString类)常用操作> extension String { //获取字符串首字符 var first: St ...
- html的<a>标签,表单,内嵌框架
一. <a>标签 0. 用图片当链接,就是把图片当成链接文字即可 <a href="http://www.baidu.com/" title="跳 ...
- 利用腾讯云为你的域名申请并配置免费SSL一年
我想,点进来的朋友,应该都知道SSL的重要性吧.这里就简单提一下,大型网站域名只有配置了SSL后,才会更加安全. 现在,微信小程序也开始要求后台必须是SSL配置后的域名了.说了这么多,估计有些人还是有 ...
- css属性详解和浮动
一.CSS属性组成和作用 属性:属性值 1)每个css样式都必须由两部分组成:选择符和声明 注:声明又包括属性和属性值 2)css属性:属性是指定选择符具有的属性,他是css的核心,css2共有150 ...
- 移动端尺寸新写法-rem
rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...
- bzoj3280: 小R的烦恼(最小费用最大流)
Description 小R最近遇上了大麻烦,他的程序设计挂科了.于是他只好找程设老师求情.善良的程设老师答应不挂他,但是要 求小R帮助他一起解决一个难题.问题是这样的,程设老师最近要进行一项邪恶的实 ...
- ZOJ - 3946-Highway Project(最短路变形+优先队列优化)
Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can ...
- Linux下安装渗透测试框架Metasploit
我们先来说一种方法,直接从github来下载: git clone --depth=1 git://github.com/rapid7/metasploit-framework metasploit ...
- js对函数参数的封装
对函数参数的封装 一个原始函数有n个参数,用wrap对函数进行封装,生成一个新的函数,当给它传入参数数量为n的时候,将执行原始函数,否则不执行 //函数封装 function wrap(func){ ...