注册中心-Zookeeper

Posted 书启秋枫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了注册中心-Zookeeper相关的知识,希望对你有一定的参考价值。

一、注册中心概述

对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。

而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即需要提供服务,有需要消费服务。 通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo 提供的注册中心有如下几种类型可供选:

Multicast注册中心:组播方式

Redis注册中心:使用Redis作为注册中心

Simple注册中心:就是一个dubbo服务。作为注册中心。提供查找服务的功能。

Zookeeper注册中心:使用Zookeeper作为注册中心

推荐使用Zookeeper注册中心。

注册中心就是统一管理这些服务,提供服务提供者、消费者能够访问!

二、注册中心工作方式

三、Zookeeper注册中心

Zookeeper是一个高性能的,分布式的,开放源码的分布式应用程序协调服务。简称zk。Zookeeper是翻译过来是动物管理员。可以理解为windows中的资源管理器或者注册表。他是一个树形结构。这种树形结构和标准文件系统相似。ZooKeeper树中的每个节点被称为Znode。和文件系统的目录树一样,ZooKeeper树中的每个节点可以拥有子节点。每个节点表示一个唯一服务资源。Zookeeper运行需要java环境。

1.下载安装文件

官网下载地址: Apache ZooKeeper

进入官网地址,首页找到下载地址

 

2.安装配置Zookeeper

A. Windows平台Zookeeper安装,配置

下载的文件zookeeper-3.5.4-beta.tar.gz. 解压后到目录就可以了,例如d:/servers/ zookeeper-3.5.4

修改zookeeper-3.5.4/conf/ 目录下配置文件

复制zoo-sample.cfg改名为zoo.cfg

 文件内容修改为:

① tickTime: 心跳的时间,单位毫秒. Zookeeper服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime时间就会发送一个心跳。表明存活状态。

② dataDir: 数据目录,可以是任意目录。

     存储zookeeper的快照文件、pid文件,默认为/tmp/zookeeper,

     建议在zookeeper安装目录下创建data目录,

     将dataDir配置改为/usr/local/zookeeper-3.4.10/data

③ clientPort: 客户端连接zookeeper的端口,即zookeeper对外的服务端口,默认为2181

配置内容:

1.dataDir : zookeeper数据的存放目录

2.admin.serverPort=8888

原因:zookeeper 3.5.x 内部默认会启动一个应用服务器,默认占用8080端口

B. Linux平台 Zookeeper安装、配置

Zookeeper的运行需要jdk。使用前Linux系统要安装好jdk.

① 上传:

apache-zookeeper-3.5.5-bin.tar.gz 

解压文件:

tar -zxvf apache-zookeeper-3.5.5-bin.tar.gz 

② 配置文件

启动 ./zkServer.sh start 运行报错

进入zookeeper目录下的conf,拷贝样例文件 zoo-sample.cfg 为 zoo.cfg

cp zoo_sample.cfg zoo.cfg

zookeeper启动时会读取该文件作为默认配置文件。

③ 启动Zookeeper

启动(切换到安装目录的bin目录下):

./zkServer.sh start

④ 关闭Zookeeper

关闭(切换到安装目录的bin目录下):

./zkServer.sh stop

四、改造dubbo—使用Zookeeper

拷贝项目

原项目新项目
node-shop-userservicezk-node-shop-userservice
node-shop-orderservicezk-node-shop-orderservice
node-shop-webzk-node-shop-web

1、新项目加入zookeepeer客户端依赖:

<!-- zookeeper客户端依赖 -->
<dependency>
    <groupId>org.apache.curator</groupId>
    <artifactId>curator-framework</artifactId>
    <version>4.1.0</version>
</dependency>

加入红色方框中的内容,使用zookeeper注册中心

2、zk-node-shop-userservice服务dubbo配置文件

加入红色方框中的内容,使用zookeeper注册中心

3、zk-node-shop-web网站dubbo配置文件

加入红色方框中的内容,使用zookeeper注册中心

4、运行应用

1.先启动注册中心

[root@Suke bin]# ./zkServer.sh start

2.再启动tomcat服务器

java -jar dubbo-admin-0.0.1-SNAPSHOT.jar

 

3.访问zk-node-shop-web的index.jsp

注册中心的高可用

概念:

高可用性(High Availability):通常来描述一个系统经过专门的设计,从而减少不能提供服务的时间,而保持其服务的高度可用性。

Zookeeper是高可用的,健壮的。Zookeeper宕机,正在运行中的dubbo服务仍然可以正常访问。

健壮性

1. 监控中心宕掉不影响使用,只是丢失部分采样数据

2. 注册中心仍能通过缓存提供服务列表查询,但不能注册新服务

3. 服务提供者无状态,任意一台宕掉后,不影响使用

4. 服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复

演示操作:

1. 先启动zookeeper, dubbo服务提供者,dubbo服务消费者。

2. 测试正常访问

3. 停止zookeeper

4. 测试消费者仍然可以访问提供者

以上是关于注册中心-Zookeeper的主要内容,如果未能解决你的问题,请参考以下文章

Zookeeper注册中心概述

基于ZooKeeper的Dubbo注册中心

基于ZooKeeper的Dubbo注册中心

基于ZooKeeper的Dubbo注册中心

基于ZooKeeper的Dubbo注册中心

基于ZooKeeper的Dubbo注册中心