一、注册中心概述
对于服务提供方,它需要发布服务,而且由于应用系统的复杂性,服务的数量、类型也不断膨胀;对于服务消费方,它最关心如何获取到它所需要的服务,而面对复杂的应用系统,需要管理大量的服务调用。
而且,对于服务提供方和服务消费方来说,他们还有可能兼具这两种角色,即需要提供服务,有需要消费服务。 通过将服务统一管理起来,可以有效地优化内部应用对服务发布/使用的流程和管理。服务注册中心可以通过特定协议来完成服务对外的统一。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是否启动
ps aux| grep zoo
④ 关闭Zookeeper
关闭(切换到安装目录的bin目录下):
./zkServer.sh stop
四、改造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
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. 测试消费者仍然可以访问提供者