注册中心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集群 ...
随机推荐
- jQuery判断是否选中
1.判断check是否选中 <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- vm虚拟机安装,配置与使用
百度网盘下载地址: 链接: https://pan.baidu.com/s/1cNn458wUyKNOcAxQ8vEPQg密码: 8vrw 创建虚拟机: 1.创建一个虚拟机: 2.选择标准模式: 3. ...
- php数据库编程---mysql扩展库
1, Java有一种方式操作数据库, PHP有三种方式来操作mysql数据库.(1)mysql扩展库:(2)mysqli扩展库:(3)pdo: 2, mysql扩展库和mysql数据库区别 3, my ...
- ubuntu14.04部署kickstart
转自:http://www.mamicode.com/info-detail-1646465.html kickstart用于在内网自动安装系统. 使用pxe安装系统需要安装dhcp,tftp,htt ...
- 可变参数中size_t遇见的问题
在修改php扩展Trie时,出现了一个小bug PHP_FUNCTION(trie_filter_load) { Trie *trie; char *path; int path_len; if (z ...
- P3866 [TJOI2009]战争游戏 最小割
$ \color{#0066ff}{ 题目描述 }$ 小R正在玩一个战争游戏.游戏地图是一个M行N列的矩阵,每个格子可能是障碍物,也可能是空地,在游戏开始时有若干支敌军分散在不同的空地格子中.每支敌军 ...
- 程序设计中的dry原则
DRY:dont repeat yourself 假设一个逻辑(代码块)会重复两次或者以上,应该写成函数被调用 为什么呢,实际上,我们处处可见重复性的代码.这除了增加工作量之外,还会增加维护难度. d ...
- NSInvocation 调用block clang代码转换c++
NSInvocation 调用block cpp 转换 fatal error: 'UIKit/UIKit.h' file not found https://blog.csdn.net/yst199 ...
- java 使用idea将工程打成jar并创建成exe文件类型执行
https://blog.csdn.net/weixin_38310965/article/details/80392767
- Q678 有效的括号字符串
给定一个只包含三种字符的字符串:(,) 和 *,写一个函数来检验这个字符串是否为有效字符串.有效字符串具有如下规则: 任何左括号 ( 必须有相应的右括号 ). 任何右括号 ) 必须有相应的左括号 ( ...