一、注册中心概述

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

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

Multicast注册中心:组播方式

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

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

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

推荐使用Zookeeper注册中心。

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

二、注册中心工作方式

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper 注册信息位置

三、Zookeeper注册中心

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

1.下载安装文件

官网下载地址: Apache ZooKeeper

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

zookeeper 注册信息位置 zookeeper如何实现注册中心_java_02

 

zookeeper 注册信息位置 zookeeper如何实现注册中心_分布式_03

zookeeper 注册信息位置 zookeeper如何实现注册中心_java_04

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper 注册信息位置_05

zookeeper 注册信息位置 zookeeper如何实现注册中心_分布式_06

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

zookeeper 注册信息位置 zookeeper如何实现注册中心_分布式_07

文件内容修改为:

zookeeper 注册信息位置 zookeeper如何实现注册中心_java_08

① 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 

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper 注册信息位置_09

解压文件:

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

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper 注册信息位置_10

② 配置文件

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

zookeeper 注册信息位置 zookeeper如何实现注册中心_分布式_11

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

cp zoo_sample.cfg zoo.cfg

zookeeper 注册信息位置 zookeeper如何实现注册中心_java_12

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

③ 启动Zookeeper

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

./zkServer.sh start

zookeeper 注册信息位置 zookeeper如何实现注册中心_java_13

查看Zookeeper是否启动

ps aux| grep zoo

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper 注册信息位置_14

④ 关闭Zookeeper

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

./zkServer.sh stop

zookeeper 注册信息位置 zookeeper如何实现注册中心_配置文件_15

四、改造dubbo—使用Zookeeper

拷贝项目

原项目

新项目

node-shop-userservice

zk-node-shop-userservice

node-shop-orderservice

zk-node-shop-orderservice

node-shop-web

zk-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

zookeeper 注册信息位置 zookeeper如何实现注册中心_zookeeper_16

2.再启动tomcat服务器

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

zookeeper 注册信息位置 zookeeper如何实现注册中心_分布式_17


zookeeper 注册信息位置 zookeeper如何实现注册中心_配置文件_18


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

注册中心的高可用

概念:

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

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

健壮性

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

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

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

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

演示操作:

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

2. 测试正常访问

3. 停止zookeeper

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