3.1、注册中心概述
对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。
而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即需要提供服务,有需要消费服务。 通过将服务统一管理起来,可以有效地优化内部应用对服务发布使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。Dubbo 提供的注册中心有如下几种类型可供选:
1)、Multicast 注册中心: 组播方式
2)、Redis 注册中心: 使用 Redis 作为注册中心
3)、Simple 注册中心: 就是一个 dubbo 服务。作为注册中心。提供查找服务的功能。
4)、Zookeeper 注册中心: 使用 Zookeeper 作为注册中心
5)、推荐使用 Zookeeper 注册中心。
3.2、注册中心工作方式
3.3、Zookeeper 注册中心
Zookeeper 是一个高性能的,分布式的,开放源码的分布式应用程序协调服务。简称 zk。Zookeeper 是翻译管理是动物管理员。可以理解为 windows 中的资源管理器或者注册表。他是一个树形结构。这种树形结构和标准文件系统相似。ZooKeeper 树中的每个节点被称为Znode。和文件系统的目录树一样,ZooKeeper 树中的每个节点可以拥有子节点。每个节点表示一个唯一服务资源。Zookeeper 运行需要 java 环境。
3.3.1、下载安装文件
官网下载地址: http://zookeeper.apache.org/
进入官网地址,首页找到下载地址,最新版本 3.5.4
https://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz
3.3.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
配置内容:
- dataDir : zookeeper 数据的存放目录
- admin.serverPort=8888
原因:zookeeper 3.5.x 占用 8080
B、 Linux 平台 Zookeeper 安装、配置
Zookeeper 的运行需要 jdk。使用前 Linux 系统要安装好 jdk
①:上传 zookeeper-3.5.4-beta.tar.gz.并解压,执行命令:tar -zxvf zookeeper-3.5.4-beta.tar.gz. -C /usr/local/
②:配置文件在 zookeeper 的 conf 目录下,
将 zoo_sample.cfg 改名为 zoo.cfg,cp zoo_sample.cfg zoo.cfg
zookeeper 启动时会读取该文件作为默认配置文件。
进入 zookeeper 目录下的 conf
拷贝样例文件 zoo-sample.cfg 为 zoo.cfg
③:启动 Zookeeper
启动(切换到安装目录的 bin 目录下):./zkServer.sh start
④:关闭 Zookeeper
关闭(切换到安装目录的 bin 目录下):./zkServer.sh stop
3.4、改造 Dubbo项目(使用 Zookeeper方式实现)
1)、dubbo官方推荐使用的一个模式,将实体bean和业务接口存放到接口工程中
- 创建一个maven 普通Java工程
- 创建一个实体bean查询的结果
- 提供一个服务接口:xxxx
2)、服务的提供者
- 创建一个maven web工程:服务的提供者
- 创建一个实体bean查询的结果
- 实现这个服务接口:xxxxImpl
- 配置dubbo服务提供者的核心配置文件
a. 声明dubbo服务提供者的名称:保证唯一
b. 声明dubbo使用的协议和端口号
c. 指定注册中心地址和端口号
d. 暴露服务,使用直连方式 - 添加监听器
- 导入接口工程的jar到工程中
配置dubbo服务提供者的pom文件所需要的依赖如下:
<dependencies>
<!--Spring依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.16.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.16.RELEASE</version>
</dependency>
<!--Dubbo依赖-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.2</version>
</dependency>
<!--接口工程依赖-->
<dependency>