ZooKeeper注册中心配置

Dubbo 建议使用 Zookeeper 作为服务的注册中心。

注册中心服务器(192.168.3.71)配置,安装Zookeeper:
1、修改操作系统的/etc/hosts 文件中添加:
# zookeeper servers
192.168.3.71edu-provider-01
2、到 /zookeeper/下载 zookeeper-3.4.6:
$ wget /zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
3、解压 zookeeper 安装包: $ tar -zxvf
zookeeper-3.4.6.tar.gz
4、在/home/wusc/zookeeper-3.4.6 目录下创建以下目
录: $ cd /home/wusc/zookeeper-3.4.6
$ mkdir data
$ mkdir logs
5、将zookeeper-3.4.6/conf目录下的zoo_sample.cfg文件拷贝一份,命名为为
zoo.cfg
$ cp zoo_sample.cfg zoo.cfg
6、修改zoo.cfg配置文件:
$ vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/wusc/zookeeper-3.4.6/data
dataLogDir=/home/wusc/zookeeper-3.4.6/logs
# the port at which the clients will connect
clientPort=2181
#2888,3888 are election port
server.1=edu-provider-01:2888:3888
其中,
2888 端口号是 zookeeper 服务之间通信的端口。

3888 是 zookeeper 与其他应用程序通信的端口。

edu-provider-01 是在hosts中已映射了IP的主机名。

initLimit:这个配置项是用来配置 Zookeeper 接受客户端(这里所说的客户端不是用户连接Zookeeper服务器的客户端,而是Zookeeper服务器集群中连接到Leader 的Follower 服务器)初始化连接时最长能忍受多少个心跳时间间隔数。

当已经超过10个心跳的时间(也就是tickTime)长度后Zookeeper服务器还没
有收到客户端的返回信息,那么表明这个客户端连接失败。

总的时间长度就是5*2000=10 秒。

syncLimit:这个配置项标识 Leader 与 Follower 之间发送消息,请求和应答时间长度,最长不能超过多少个tickTime的时间长度,总的时间长度就是2*2000=4 秒。

server.A=B:C:D:其中 A 是一个数字,表示这个是第几号服务器;B 是这个服务器的IP地址或/etc/hosts文件中映射了IP的主机名;C表示的是这个服务器与集群中的Leader服务器交换信息的端口;D表示的是万一集群中的Leader 服务器挂了,需要一个端口来重新进行选举,选出一个新的Leader,而这个端口就是用来执行选举时服务器相互通信的端口。

如果是伪集群的配置方式,由于B 都是一样,所以不同的Zookeeper实例通信端口号不能一样,所以要给它们分配不同的端口号。

7、在 dataDir=/home/wusc/zookeeper-3.4.6/data 下创建 myid 文件编辑myid文
件,并在对应的IP的机器上输入对应的编号。

如在zookeeper上,myid
文件内容就是1。

如果只在单点上进行安装配置,那么只有一个server.1。

$ vi myid
1
8、 wusc 用户下修改vi /home/wusc/.bash_profile,增加 zookeeper 配置:
# zookeeper env
export ZOOKEEPER_HOME=/home/wusc/zookeeper-
3.4.6 export PATH=$ZOOKEEPER_HOME/bin:$PATH
使配置文件生效
$ source /home/wusc/.bash_profile
9、在防火墙中打开要用到的端口 2181、2888、3888
切换到root用户权限,执行以下命令:
# chkconfig iptables on # service iptables start
编辑/etc/sysconfig/iptables
# vi /etc/sysconfig/iptables
增加以下3行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 2181 -j ACCEPT -A
INPUT -m state --state NEW -m tcp -p tcp --dport 2888 -j ACCEPT -A
INPUT -m state --state NEW -m tcp -p tcp --dport 3888 -j ACCEPT
重启防火墙:
# service iptables restart
查看防火墙端口状态:
# service iptables status
Table: filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
5 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2181
6 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:2888
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3888
8 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
10、启动并测试zookeeper(要用wusc用户启动,不要用root):
(1) 使用wusc用户到/home/wusc/zookeeper-3.4.6/bin目录中执
行:$ zkServer.sh start
(2) 输入jps命令查看进
程:$ jps
1456 QuorumPeerMain
1475 Jps
其中,QuorumPeerMain是zookeeper进程,启动正常
(3) 查看状态:
$ zkServer.sh status
(4) 查看zookeeper服务输出信息:
由于服务信息输出文件在/home/wusc/zookeeper-3.4.6/bin/zookeeper.out $ tail -500f zookeeper.out
11、停止zookeeper进程:
$ zkServer.sh stop
12、配置 zookeeper 开机使用 wusc 用户启动:
编辑/etc/rc.local文件,加入:
su - wusc -c '/home/wusc/zookeeper-3.4.6/bin/zkServer.sh start'。

合集下载

zk注册中心原理

zk注册中心原理

zk注册中心原理一、什么是zk注册中心zk注册中心全称为ZooKeeper注册中心,是一种常用的分布式服务注册与发现的框架,它基于Apache ZooKeeper实现,用于管理和维护各个服务的状态信息。

通过zk注册中心,可以实现服务的注册、发现、监控和负载均衡等功能,为分布式系统提供高效稳定的服务治理能力。

二、zk注册中心的工作原理zk注册中心的工作原理可以概括为以下几个步骤:1. 注册服务提供者在启动时将自己的地址和服务信息注册到zk注册中心,注册信息包括服务名称、版本号、地址等。

2. 发现服务消费者在启动时通过zk注册中心获取所有已注册的服务列表,然后根据自身需求选择需要调用的服务。

3. 监控zk注册中心会实时监控服务的状态信息,当有新的服务注册或注销时,会及时通知所有订阅者,以便及时更新服务列表。

4. 负载均衡zk注册中心还可以根据一定的策略将服务请求分摊到不同的服务提供者上,实现负载均衡,提高系统的整体性能和稳定性。

三、zk注册中心的核心特性zk注册中心具有以下几个核心特性:1. CAP原则zk注册中心遵循CAP原则,即一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。

在分布式系统中,当发生网络分区时,必须选择放弃一致性或可用性。

zk注册中心采用的是放弃可用性保证一致性的策略。

2. 高可用zk注册中心采用集群部署方式,当其中一个节点发生故障时,其他节点可以接替其功能,保证服务的高可用性。

3. Watch机制zk注册中心通过Watch机制实现了实时通知功能,当注册信息发生变化时,会立即通知已订阅的客户端,以便及时更新服务列表。

4. 顺序一致性zk注册中心保证了数据更新的顺序一致性,即所有的更新操作按照顺序执行,每个更新操作都能够看到之前的更新结果。

四、zk注册中心的应用场景zk注册中心广泛应用于各种分布式系统中,特别适用于微服务架构。

Dubbo注册中心的四种配置方式详解

Dubbo注册中心的四种配置方式详解

Dubbo注册中⼼的四种配置⽅式详解Dubbo⽬前⽀持4种注册中⼼,(multicast,zookeeper,redis,simple)推荐使⽤Zookeeper注册中⼼。

⼀、Multicast注册中⼼不需要启动任何中⼼节点,只要⼴播地址⼀样,就可以互相发现。

组播受⽹络结构限制,只适合⼩规模应⽤或开发阶段使⽤。

组播地址段: 224.0.0.0 - 239.255.255.255相关概念解析:提供⽅启动时⼴播⾃⼰的地址。

消费⽅启动时⼴播订阅请求。

提供⽅收到订阅请求时,单播⾃⼰的地址给订阅者,如果设置了unicast=false,则⼴播给订阅者。

消费⽅收到提供⽅地址时,连接该地址进⾏RPC调⽤。

配置multicast 注册中⼼<dubbo:registryaddress="multicast://224.5.6.7:1234"/>Or:<dubbo:registryprotocol="multicast" address="224.5.6.7:1234"/>为了减少⼴播量,Dubbo缺省使⽤单播发送提供者地址信息给消费者,如果⼀个机器上同时启了多个消费者进程,消费者需声明unicast=false,否则只会有⼀个消费者能收到消息:unicast配置⽅法:<dubbo:registryaddress="multicast://224.5.6.7:1234?unicast=false"/>Or:<dubbo:registryprotocol="multicast"address="224.5.6.7:1234"><dubbo:parameterkey="unicast"value="false"/></dubbo:registry>⼆、Zookeeper注册中⼼建议使⽤dubbo-2.3.3以上版本的zookeeper注册中⼼客户端。

zookeeper、ZK安装、ZK配置、ZK使用

zookeeper、ZK安装、ZK配置、ZK使用

zookeeper、ZK安装、ZK配置、ZK使⽤-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介第⼆部分:zookeeper环境搭建 1、单机环境 2、集群环境第三部分:zookeeper基本使⽤ 1、java原⽣zk客户端api操作 2、zkClient客户端操作(推荐) 3、curator客户端操作(推荐)第四部分:zookeeper应⽤场景第五部分:zookeeper深⼊进阶第六部分:zookeeper源码分析-----------------------------⽬录-----------------------------------第⼀部分:zookeeper简介1、 zookeeper基本概念zookeeper是⼀个开源的分布式协调服务,其设计⽬标是将那些复杂并且容易出差错的分布式⼀致性服务封装起来,构成⼀个⾼效可靠的原语集,并提供给⽤户⼀些简单的接⼝,zookeeper是⼀个典型的分布式⼀致性的解决⽅案(CP模式),分布式应⽤程序可以基于它实现数据订阅/发布、负载均衡,命名服务、集群管理、分布式锁和分布式队列等功能。

2、基本概念@1、集群⾓⾊通常在分布式系统中,构成⼀个集群中的每⼀台机器都有⾃⼰的⾓⾊,典型的是master/slave模式(主备模式),这种情况下能够处理写操作的机器成为master机器,把所有通过⼀步复制⽅式获取最新数据并且提供服务的机器为slave机器。

在zookeeper中没有是⽤主备模式,引⼊了Leader、Follower、Observer三种⾓⾊,在zk集群中所有的机器通过Leader选举来选Leader,Leader服务器为客户端提供读写服务,Follower和Observer都能提供读服务,唯⼀的区别是Observer不参与Leader选举,不参与写操作的过半写成功。

zookeeper3.4.9安装和配置

zookeeper3.4.9安装和配置
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
# setenforce 0
# vi /etc/selinux/config
将SELINUX=enforcing改为:SELINUX=disabled
一、下载JDK
scp 10.32.35.100:/data/share/jdk-8u111-linux-x64.tar.gz /opt
cd /opt
解压
tar -xzvf jdk-8u111-linux-x64.tar.gz
二、配置JDK
修改系统环境变量
vi /etc/profile
向文件里面追加以下内容:
JAVA_HOME=/opt/jdk1.8.0_111/
JRE_HOME=/opt/jdk1.8.0_111/jre
cd /usr/local/zk_cluster/zookeeper
scp -r 10.32.35.134:/usr/local/zk_cluster/zookeeper/zookeeper-3.4.9 ./
配置myid唯一编码
cd zookeeper-3.4.9/
cd data/
vi myid
搭建10.32.35.135/slave01和10.32.35.136/slave02服务器的zookeeper
拷贝master服务器的zookeeper至slave01和slave02的/usr/local/zk_cluster/zookeeper目录

springcloud-zookeeper配置

springcloud-zookeeper配置

springcloud-zookeeper配置上⼀个使⽤了Eureka作为注册中⼼,基于Spring Cloud实现服务的发布与调⽤。

⽽在18年7⽉份,Eureka2.0宣布闭源了省略zookeeper安装步骤order模块application.ymlserver:port: 10080spring:application:name: study-edu-order # 名字随便取⼀个profiles:active: devapplication-dev.ymlspring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/2pc?useSSL=falseusername: rootpassword: 123type: com.alibaba.druid.pool.DruidDataSourceapplication:name: study-edu-ordercloud:zookeeper:connect-string: .server:2181 # 本地host⽂件配置的域名mybatis:configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplpom⽂件<!--微服务相关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency>java部分:OrderController:@RestController@RequestMapping("v1/api/order")@Slf4jpublic class OrderController {@Autowiredprivate DiscoveryClient discoveryClient;@Autowiredprivate OrderService orderService;@PostMappingpublic CommonResult saveOrder(@RequestBody OrderVO vo) {boolean flag = orderService.saveOrder(vo);("================================>server port is ");if(flag) {return CommonResult.OK();} else {return CommonResult.NO();}}}StockClient接⼝:public interface StockClient {CommonResult reduceStock(@RequestBody OrderVO vo);}StockClientImpl实现接⼝:@Servicepublic class StockClientImpl implements StockClient {@Autowiredprivate RestTemplate restTemplate;@Overridepublic CommonResult reduceStock(OrderVO vo) {// 构建调⽤api服务的路径,stock yml⽂件取的名字 url为 controller 接⼝ String uri = String.format("http://study-edu-stock/%s","v1/api/stock");return restTemplate.postForObject(uri,vo,CommonResult.class);}}stock模块:application.ymlserver:port: 10090spring:application:name: study-edu-stockprofiles:active: devapplication-dev.ymlspring:datasource:driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/2pc?useSSL=falseusername: rootpassword: 123type: com.alibaba.druid.pool.DruidDataSourcecloud:zookeeper:connect-string: .server:2181mybatis:configuration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImplpom:<!--微服务相关--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-zookeeper-discovery</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency>StockController:@RestController@RequestMapping("v1/api/stock")public class StockController {@Autowiredprivate StockService stockService;@PostMappingpublic CommonResult reduceStock(@RequestBody OrderVO vo) {boolean flag = stockService.reduceStock(vo);if(flag) {return CommonResult.OK();} else {return CommonResult.NO();}}}省略了service ,就是简单的操作数据库来查看负载均衡是否成功启动服务:可以通过 ZooInspector 插件查看zookeeper节点或者直接在⿊窗⼝查看,多次调⽤接⼝查看是否成功。

服务注册中心面试题目(3篇)

服务注册中心面试题目(3篇)

第1篇一、基础知识1. 什么是服务注册中心?它在微服务架构中扮演什么角色?服务注册中心是一种分布式服务发现和配置管理的解决方案。

在微服务架构中,服务注册中心负责管理服务的注册和发现,使得服务消费者能够动态地发现和访问服务提供者。

服务注册中心的主要作用包括:(1)服务注册:服务提供者在启动时将自己的信息注册到注册中心,包括服务名称、IP地址、端口等。

(2)服务发现:服务消费者通过注册中心获取服务提供者的信息,包括服务名称、IP地址、端口等,实现服务的动态发现。

(3)服务配置:服务注册中心可以存储服务的配置信息,如数据库连接、缓存配置等,服务消费者可以根据需要获取相应的配置信息。

2. 服务注册中心有哪些常见的实现方式?服务注册中心常见的实现方式包括:(1)基于数据库:通过数据库存储服务信息,如Consul、Etcd等。

(2)基于内存:通过内存存储服务信息,如Eureka、Zookeeper等。

(3)基于文件系统:通过文件系统存储服务信息,如Nacos等。

3. 服务注册中心的主要功能有哪些?服务注册中心的主要功能包括:(1)服务注册:服务提供者将自身信息注册到注册中心。

(2)服务发现:服务消费者从注册中心获取服务提供者的信息。

(3)服务健康检查:监控服务提供者的状态,如心跳检测、服务降级等。

(4)服务配置:存储和读取服务的配置信息。

(5)服务监控:收集和展示服务的性能数据。

二、Eureka1. 什么是Eureka?它与其他服务注册中心有何区别?Eureka是Netflix开源的、基于Java实现的服务注册中心,它与其他服务注册中心的区别如下:(1)实现语言:Eureka基于Java实现,其他服务注册中心可能基于其他语言实现。

(2)功能:Eureka提供的服务注册、服务发现、服务配置等功能与其他服务注册中心类似。

(3)社区活跃度:Eureka社区活跃,拥有丰富的文档和社区支持。

2. Eureka的主要组件有哪些?Eureka的主要组件包括:(1)Eureka Server:服务注册中心,负责服务注册、服务发现、服务配置等。

dubbo注册中心zookeeper出现异常Openingsocketconnection。。。

dubbo注册中⼼zookeeper出现异常Openingsocketconnection。

linux下,zookeeper安装并启动起来了DEMO时,JAVA控制台出现:[java]1. INFO 2014-03-06 09:48:41,276 (ClientCnxn.java:966) - Opening socket connection to server 10.70.42.99/10.70.42.99:2181. Will not attempt to authenticate using SASL (⽆法定位登录配置)2. WARN 2014-03-06 09:49:02,320 (ClientCnxn.java:1089) - Session 0x0 for server null, unexpected error, closing socket connection and attempting reconnect3. .ConnectException: Connection timed out: no further information4. at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)5. at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574)6. at org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:350)7. at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1068)zookeeper控制台⽇志[java]1. 2014-03-05 17:59:32,173 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1001] - Closed socket connection for client /10.70.41.42:44726 (no session established2. 2014-03-06 09:59:54,754 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxnFactory@197] - Accepted socket connection from /127.0.0.1:391063. 2014-03-06 09:59:54,783 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:ZooKeeperServer@839] - Client attempting to establish new session at /127.0.0.1:391064. 2014-03-06 09:59:54,835 [myid:] - INFO [SyncThread:0:ZooKeeperServer@595] - Established session 0x14491611e2f0002 with negotiated timeout 30000 for client /127.0.0.1:391065. 2014-03-06 10:00:47,193 [myid:] - WARN [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@349] - caught end of stream exception6. EndOfStreamException: Unable to read additional data from client sessionid 0x14491611e2f0002, likely client has closed socket7. at org.apache.zookeeper.server.NIOServerCnxn.doIO(NIOServerCnxn.java:220)8. at org.apache.zookeeper.server.NIOServerCnxnFactory.run(NIOServerCnxnFactory.java:208)9. at ng.Thread.run(Thread.java:736)10. 2014-03-06 10:00:47,195 [myid:] - INFO [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@1001] - Closed socket connection for client /127.0.0.1:39106 which had sessionid11. 2014-03-06 10:01:16,015 [myid:] - INFO [SessionTracker:ZooKeeperServer@325] - Expiring session 0x14491611e2f0002, timeout of 30000ms exceeded12. 2014-03-06 10:01:16,016 [myid:] - INFO [ProcessThread(sid:0 cport:-1)::PrepRequestProcessor@476] - Processed session termination for sessionid: 0x14491611e2f0002JVM采⽤了socket代理,不知道跟代理有没有关系,安装不是以ROOT⽤户的暂时没解决,记录下来先:解决⽅案:1.关闭防⽕墙。

SpringBoot整合Dubbo3.x关于curator和zookeeper版本选型的思考

SpringBoot整合Dubbo3.x关于curator和zookeeper版本选型的思考⼀、Dubbo2 or Dubbo3?我给出的观点是选择Dubbo3,原因有⼆:1. 在 Dubbo 3.0 版本向下兼容⽼版本 Dubbo2.5、2.6、2.7;2. Dubbo3.0 的带来了许多的新特性,⽤户可以按需进⾏升级;参考⾃Apache官⽅⽂档在 SpringBoot 整合 Dubbo 时,如果引⽤依赖dubbo-spring-boot-starter,会⾃动依赖dubbo,且版本号⼀致:<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-spring-boot-starter</artifactId><version>3.0.1</version></dependency>当然,如果选择直接引⽤ Dubbo :<dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.1</version></dependency>⼆、Zookeeper&curator or Zookeeper&zkclientDubbo 常⽤的注册中⼼有 Nacos、ZooKeeper、Multicast、Redis、Simple。

本⽂主要讨论 ZooKeeper 作为 Dubbo 的注册中⼼时,版本的选择。

Dubbo ⽀持 zkclient 和 curator 两种 Zookeeper 客户端实现。

注意:在2.7.x的版本中已经移除了zkclient的实现,如果要使⽤zkclient客户端,需要⾃⾏拓展参考⾃ Apache Dubbo 官⽹curator ⽐ zkclient 更加通⽤,还有许多现成好⽤的API,且 curator 有相对完善的⽂档。

Zookeeper的应用场景

Zookeeper的应用场景Zookeeper是一个高可用的分布式数据管理和协调框架,并且能够很好的保证分布式环境中数据的一致性。

在越来越多的分布式系统(Hadoop、HBase、Kafka)中,Zookeeper都作为核心组件使用。

1.数据发布/订阅数据发布/订阅系统,即配置中心。

需要发布者将数据发布到Zookeeper的节点上,供订阅者进行数据订阅,进而达到动态获取数据的目的,实现配置信息的集中式管理和数据的动态更新。

发布/订阅一般有两种设计模式:推模式和拉模式,服务端主动将数据更新发送给所有订阅的客户端称为推模式;客户端主动请求获取最新数据称为拉模式,Zookeeper采用了推拉相结合的模式,客户端向服务端注册自己需要关注的节点,一旦该节点数据发生变更,那么服务端就会向相应的客户端推送Watcher事件通知,客户端接收到此通知后,主动到服务端获取最新的数据。

若将配置信息存放到Zookeeper上进行集中管理,在通常情况下,应用在启动时会主动到Zookeeper服务端上进行一次配置信息的获取,同时,在指定节点上注册一个Watcher监听,这样在配置信息发生变更,服务端都会实时通知所有订阅的客户端,从而达到实时获取最新配置的目的。

2.负载均衡负载均衡是一种相当常见的计算机网络技术,用来对多个计算机、网络连接、CPU、磁盘驱动或其他资源进行分配负载,以达到优化资源使用、最大化吞吐率、最小化响应时间和避免过载的目的。

使用Zookeeper实现动态DNS服务域名配置:首先在Zookeeper上创建一个节点来进行域名配置,如DDNS/app1/server.app1。

域名解析:应用首先从域名节点中获取IP地址和端口的配置,进行自行解析。

同时,应用程序还会在域名节点上注册一个数据变更Watcher监听,以便及时收到域名变更的通知。

域名变更:若发生IP或端口号变更,此时需要进行域名变更操作,此时,只需要对指定的域名节点进行更新操作,Zookeeper就会向订阅的客户端发送这个事件通知,客户端之后就再次进行域名配置的获取。

zookeeper是什么、做什么用

zookeeper是什么、做什么⽤⼀、什么是zookeeper ZooKeeper是⼀个分布式的,开放源码的分布式应⽤程序协调服务,是Google的Chubby⼀个开源的实现,是Hadoop和Hbase的重要组件。

它是⼀个为分布式应⽤提供⼀致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。

简单来说,zookeeper = ⽂件系统 + 监听通知机制⼆、⽂件系统 zookeeper有着与linux类似的⽂件系统,区别是,linux的⽬录就是⽬录,⽂件就是⽂件。

⽽zookeeper中只有⼀个znode概念,本⾝可以做为“⽂件”存储⼀定的数据,⼜可以做为“⽬录”存在。

/*+---+|/ |+-+-+|| +------++--|config|| +--+---+| | +-----+| +-----|ip || | +-----+| | +-----+| +-----|port || +-----+|| +------++--|apps |+--+---+| +-----++-----|app1 || +-----+| +-----++-----|app2 |+-----+*/ znode共分为四种: 1、PERSISTENT-持久化⽬录节点 此节点在客户端与zookeeper断开连接之后,依然存在,需要主动删除。

2、PERSISTENT_SEQUENTIAL-持久化顺序编号⽬录节点 同样地,此类节点也是需要主动删除,不会随着客户端的断开连接⽽删除。

与PERSISTENT不同的是,zookeeper会给此类节点进⾏编号。

如:app0000003362。

0000003362为zookeeper给的编号,⾃动递增。

由于此编号是⼀个有符号整形(4字节),当它超过2147483647时,将会溢出。

3、EPHEMERAL-临时⽬录节点 与PERSISTENT不同的是,此类节点会在客户端与zookeeper断开连接之后被删除。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档