当前位置:   article > 正文

zookeeper 连接慢_ZooKeeper和Dubbo

zookeeper连接慢

ZooKeeper 简介

  • 顾名思义 zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper;
  • Zookeeper:是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功能包括:配置管理、名字服务、分布式锁、集群管理。

ZooKeeper 的作用

1 配置管理

  • 在我们的应用中除了代码外,还有一些就是各种配置。比如数据库连接等。一般我们都是使用配置文件的方式,在代码中引入这些配置文件。
  • 当我们只有一种配置,只有一台服务器,并且不经常修改的时候,使用配置文件是一个很好的做法,但是如果我们配置非常多,有很多服务器都需要这个配置,这时使用配置文件就不是个好主意了。
  • 这个时候往往需要寻找一种集中管理配置的方法,我们在这个集中的地方修改了配置,所有对这个配置感兴趣的都可以获得变更。
  • Zookeeper 就是这种服务,它使用 Zab 这种一致性协议来提供一致性。
  • 现在有很多开源项目使用 Zookeeper 来维护配置,比如在 HBase 中,客户端就是连接一个Zookeeper,获得必要的 HBase 集群的配置信息,然后才可以进一步操作。
  • 还有在开源的消息队列 Kafka 中,也使用 Zookeeper来维护 broker 的信息。
  • 在 Alibaba 开源的 SOA 框架 Dubbo中也广泛的使用 Zookeeper 管理一些配置来实现服务治理。

2 名字服务

  • 名字服务这个就很好理解了。比如为了通过网络访问一个系统,我们得知道对方的 IP地址,但是 IP 地址对人非常不友好,这个时候我们就需要使用域名来访问。但是计算机是不能是域名的。怎么办呢?如果我们每台机器里都备有一份域名到 IP 地址的映射,这个倒是能解决一部分问题,但是如果域名对应的 IP 发生变化了又该怎么办呢?于是我们有了DNS 这个东西。
  • 我们只需要访问一个大家熟知的(known)的点,它就会告诉你这个域名对应的 IP 是什么。
  • 在我们的应用中也会存在很多这类问题,特别是在我们的服务特别多的时候,如果我们在本地保存服务的地址的时候将非常不方便,但是如果我们只需要访问一个大家都熟知的访问点,这里提供统一的入口,那么维护起来将方便得多了。

3 分布式锁

  • 其实在第一篇文章中已经介绍了 Zookeeper 是一个分布式协调服务,这样我们就可以利用 Zookeeper 来协调多个分布式进程之间的活动。比如在一个分布式环境中,为了提高可靠性,我们的集群的每台服务器上都部署着同样的服务。
  • 但是,一件事情如果集群中的每个服务器都进行的话,那相互之间就要协调,编程起来将非常复杂。而如果我们只让一个服务进行操作,那又存在单点。
  • 通常还有一种做法就是使用分布式锁,在某个时刻只让一个服务去干活,当这台服务出问题的时候锁释放,立即 fail over 到另外的服务。这在很多分布式系统中都是这么做,这种设计有一个更好听的名字叫 Leader Election(leader 选举)。比如 HBase的 Master 就是采用这种机制。但要注意的是分布式锁跟同一个进程的锁还是有区别的,所以使用的时候要比同一个进程里的锁更谨慎的使用。

4 集群管理

  • 在分布式的集群中,经常会由于各种原因,比如硬件故障,软件故障,网络问题,有些节点会进进出出。有新的节点加入进来,也有老的节点退出集群。这个时候,集群中其他机器需要感知到这种变化,然后根据这种变化做出对应的决策。比如我们是一个分布式存储系统,有一个中央控制节点负责存储的分配,当有新的存储进来的时候我们要根据现在集群目前的状态来分配存储节点。这个时候我们就需要动态感知到集群目前的状态。
  • 还有,比如一个分布式的 SOA 架构中,服务是一个集群提供的,当消费者访问某个服务时,就需要采用某种机制发现现在有哪些节点可以提供该服务(这也称之为服务发现,比如 Alibaba 开源的SOA 框架 Dubbo 就采用了 Zookeeper 作为服务发现的底层机制)。还有开源的 Kafka 队列就采用了 Zookeeper 作为 Cosnumer 的上下线管理。

Zookeeper 的存储结构

124a270f36505d2c4d2f7932f43a1155.png

Znode

  • 在 Zookeeper 中,znode 是一个跟 Unix 文件系统路径相似的节点,可以往这个节点存储或获取数据。
  • Zookeeper 底层是一套数据结构。这个存储结构是一个树形结构,其上的每一个节点,我们称之为“znode”。
  • zookeeper 中的数据是按照“树”结构进行存储的。而且 znode 节点还分为 4 种不同的类型。
  • 每一个 znode 默认能够存储 1MB 的数据(对于记录状态性质的数据来说,够了)
  • 可以使用 zkCli 命令,登录到 zookeeper 上,并通过 ls、create、delete、get、set 等命令操作这些 znode 节点。

Znode 节点类型

1.PERSISTENT 持久化节点

  • 所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。
  • 不会因为创建该节点的客户端会话失效而消失。

2.PERSISTENT_SEQUENTIAL 持久顺序节点

  • 这类节点的基本特性和上面的节点类型是一致的。
  • 额外的特性是,在 ZK 中,每个父节点会为他的第一级子节点维护一份时序,会记录每个子节点创建的先后顺序。
  • 基于这个特性,在创建子节点的时候,可以设置这个属性,那么在创建节点过程中,ZK 会自动为给定节点名加上一个数字后缀,作为新的节点名。
  • 这个数字后缀的范围是整型的最大值。 在创建节点的时候只需要传入节点 “/test_”,这样之后,zookeeper 自动会给”test_”后面补充数字。

3.EPHEMERAL 临时节点

  • 和持久节点不同的是,临时节点的生命周期和客户端会话绑定。
  • 如果客户端会话失效,那么这个节点就会自动被清除掉。
  • 注意,这里提到的是会话失效,而非连接断开。
  • 在临时节点下面不能创建子节点。
  • 你客户端会话失效后,所产生的节点也不是一下子就消失了,也要过一段时间,大概是 10 秒以内,可以试一下,本机操作生成节点,在服务器端用命令来查看当前的节点数目,你会发现客户端已经 stop,但是产生的节点还在。

4.EPHEMERAL_SEQUENTIAL 临时自动编号节点

  • 此节点是属于临时节点,不过带有顺序,客户端会话结束节点就消失。

Zookeeper安装-单机版

  • 1 安装 Linux
  • 2 安装 JDK配置环境变量
  • 3 上传 Zookeeper到Linux系统
  • 4 解压 Zookeeper 压缩包 /usr/local/下
  1. [root@localhost temp]# tar -zxf zookeeper-3.4.6.tar.gz
  2. [root@localhost temp]# cp zookeeper-3.4.6 /usr/local/zookeeper -r
  • 5 配置 Zookeeper,将conf子目录下的zoo_sample.cfg修改为zoo.cfg并编辑,设置dataDir的值得数据缓存路径.

170b43250519e842ea604efd3ef4bc7b.png

Zookeeper 目录结构

  • bin:放置运行脚本和工具脚本,如果是 Linux 环境还会有有 zookeeper 的运行日志 zookeeper.out
  • conf:zookeeper 默认读取配置的目录,里面会有默认的配置文件
  • contrib:zookeeper 的拓展功能
  • dist-maven:zookeeper 的 maven 打包目录
  • docs:zookeeper 相关的文档
  • lib:zookeeper 核心的 jar
  • recipes:zookeeper 分布式相关的 jar 包
  • src:zookeeper 源码

Zookeeper集群中的角色主

  • 领导者(leader)
  • 学习者(learner),其中包含跟随者(Follower)和观察者(ObServer)
  • 客户端(Client)

2c1352e9b568023d7a911d48509d8a17.png

cf236e585a6bdc0a9e30ac4cb39bbfed.png

设计目的

  • 1.最终一致性:client 不论连接到哪个 Server,展示给它都是同一个视图,这是 zookeeper
  • 最重要的性能。
  • 将被所有的服务器接受。
  • 3 .实时性:Zookeeper 保证客户端将在一个时间间隔范围内获得服务器的更新信息,或
  • 者服务器失效的信息。但由于网络延时等原因,Zookeeper 不能保证两个客户端能同时得到
  • 刚更新的数据,如果需要最新数据,应该在读数据之前调用 sync()接口。
  • 4 .等待无关(wait-free):慢的或者失效的 client 不得干预快速的 client 的请求,使得每
  • 个 client 都能有效的等待。
  • 5.原子性:更新只能成功或者失败,没有中间状态。
  • 6 .顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息 a 在消息
  • b 前发布,则在所有 Server 上消息 a 都将在消息 b 前被发布;偏序是指如果一个消息 b 在消
  • 5 配置 Zookeeper,将conf子目录下的zoo_sample.cfg修改为zoo.cfg并编辑,设置dataDir的值得数据缓存路径.

集群安装

  • 使用 3 个 Zookeeper 应用搭建一个伪集群。应用部署位置是:192.168.70.143。服务监听
  • 端口分别为:2181、2182、2183。投票选举端口分别为 2881/3881、2882/3882、2883/3883。
  • 解压:tar -zxf zookeeper-3.4.6.tar.gz
  • 将解压后的 Zookeeper 应用目录重命名,便于管理 mv zookeeper-3.4.12 zookeeper01

提供数据缓存目录

  • 在 zookeeper01 应用目录中,创建 data 目录,用于缓存应用运行数据
  • cd zookeeper01
  • mkdir data

复制应用

  • 复制两份 Zookeeper 应用。用于模拟集群中的 3 个节点。
  • cp -r zookeeper01 zookeeper02
  • cp -r zookeeper01 zookeeper03

提供配置文件

  • 在 zookeeper 应用目录中有子目录 conf。
  • 其中有配置文件模板:zoo_sample.cfg
  • 重命名cp zoo_sample.cfg zoo.cfg
  • zookeeper 应用中的配置文件为 conf/zoo.cfg。

修改配置文件 zoo.cfg - 设置数据缓存路径

  • dataDir 参数值为应用运行缓存数据保存目录。是 3.2.3 步骤中创建的目录。使用绝对路径赋值。不同的应用路径不同。

提供应用唯一标识

  • 在 Zookeeper 集群中,每个节点需要一个唯一标识。
  • 这个唯一标识要求是自然数。
  • 且唯一标识保存位置是:$dataDir/myid。其中 dataDir 为配置文件 zoo.cfg 中的配置参数
  • 在 data 目录中创建文件 myid : touch myid
  • 为应用提供唯一标识。本环境中使用 1、2、3 作为每个节点的唯一标识。
  • vi myid/vim myid

简化方式为:

  • echo [唯一标识] >> myid。
  • echo 命令为回声命令,系统会将命令发送的数据返回。 '>>'为定位,代表系统回声数据指定发送到什么位置。 此命令代表系统回声数据发送到 myid 文件中。 如果没有文件则创建文件。

修改配置文件 zoo.cfg - 设置服务、投票、选举端口

  • clientPort=2181 #服务端口根据应用做对应修改,zk01-2181,zk02-2182,zk03-2183
  • server.1=192.168.70.143:2881:3881
  • server.2=192.168.70.143:2882:3882
  • server.3=192.168.70.143:2883:3883

启动 ZooKeeper 应用

  • bin/zkServer.sh start
  • ZooKeeper 集群搭建后,至少需要启动两个应用才能提供服务。因需要选举出主服务节点。
  • 启动所有 ZooKeeper 节点后,可使用命令 bin/zkServer.sh status 来查看节点状态。如下:
  • Mode: leader - 主机
  • Mode: follower - 备份机

7729234b7ff63fa54c6343616c4d6df3.png

Zookeeper常见命令

Zookeeper常见命令:

  • 启动Zookeeper: bin/zkServer.sh start
  • 关闭Zookeeper: bin/zkServer.sh stop
  • 查看Zookeeper状态: bin/zkServer.sh status
  • 使用Zookeeper连接其他的 ZooKeeper 应用: connect host:port
  • 显示列表路径下的资源: ls path
  • 创建节点: create [-e] [-s] path data 创建节点-e表示临时节点-s表示顺序节点
  • 查看指定节点的数据: get path

Dubbo介绍

Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。

单体架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。其优点为:项目易于管理、部署简单。缺点:测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队协作难

SOA架构

面向服务的架构(SOA)是一个组件模型,它将应用程序拆分成不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

RPC远程过程调用

远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发包括网络分布式多程序在内的应用程序更加容易。

Dubbo架构图

36aaeba4697937379a01bda2d81b5096.png
  • Registry注册中心. 是用于发布和订阅服务的一个平台.用于替代SOA结构体系框架中的ESB服务总线的。
  • 发布:开发服务端代码完毕后, 将服务信息发布出去. 实现一个服务的公开.
  • 订阅客户端程序,从注册中心下载服务内容 这个过程是订阅.订阅服务的时候, 会将发布的服务所有信息,一次性下载到客户端.客户端也可以自定义, 修改部分服务配置信息. 如: 超时的时长, 调用的重试次数等.

Consumer

服务的消费者, 就是服务的客户端.

Provider

  • 服务的提供者, 就是服务端
  • 消费者必须使用 Dubbo 技术开发部分代码. 基本上都是配置文件定义.

Container

  • 表示容器. Dubbo 技术的服务端(Provider), 在启动执行的时候, 必须依赖容器才能正常启动.默认依赖的就是 spring 容器. 且 Dubbo 技术不能脱离 spring 框架.
  • 服务端必须使用 Dubbo 技术开发部分代码. 以配置文件为主.

monitor

  • 监控中心. 是 Dubbo 提供的一个 jar 工程.
  • 主要功能是监控服务端(Provider)和消费端(Consumer)的使用数据的. 如: 服务端是什么,有多少接口,多少方法, 调用次数, 压力信息等. 客户端有多少, 调用过哪些服务端, 调用了多少次等.

Dubbo 执行流程

0 start: 启动 Spring 容器时,自动启动 Dubbo 的 Provider

1 register: Dubbo 的 Provider 在启动后自动会去注册中心注册内容.注册的内容包括:

  • Provider 的 IP
  • Provider 的端口.
  • Provider 对外提供的接口列表.哪些方法.哪些接口类
  • Dubbo 的版本.
  • 访问 Provider 的协议.

2 subscribe: 订阅.当 Consumer 启动时,自动去 Registry 获取到所已注册的服务的信息.

3 notify: 通知.当 Provider 的信息发生变化时, 自动由 Registry 向 Consumer 推送通知.

4 invoke: 调用. Consumer 调用 Provider 中方法

  • 同步请求.消耗一定性能.但是必须是同步请求,因为需要接收调用方法后的结果.

5 count:次数. 每隔 2 分钟,provoider 和 consumer 自动向 Monitor 发送访问数.Monitor进行统计.

Dubbo 支持的协议Dubbo 协议:( 官方推荐协议)

  • 优点:采用 NIO 复用单一长连接,并使用线程池并发处理请求,减少握手和加大并发效率,性能较好(推荐使用)
  • 缺点:大文件上传时,可能出现问题(不使用 Dubbo 文件上传)。

RMI协议:

  • 优点:JDK 自带的能力。可与原生 RMI 互操作,基于 TCP 协议。
  • 缺点:偶尔连接失败.

Hessian 协议:

  • 优点:可与原生 Hessian 互操作,基于 HTTP 协议
  • 缺点:需 hessian.jar 支持,http 短连接的开销大

Dubbo支持的注册中心

Zookeeper:

  • 优点:支持分布式.很多周边产品.
  • 缺点:受限于 Zookeeper 软件的稳定性.Zookeeper 专门分布式辅助软件,稳定较优。

Multicast:

  • 优点: 去中心化,不需要单独安装软件.
  • 缺点: Provider 和 Consumer 和 Registry 不能跨机房(路由)

Redis:

  • 优点: 支持集群,性能高
  • 缺点: 要求服务器时间同步.否则可能出现集群失败问题.

Simple:

  • 优点: 标准 RPC 服务.没有兼容问题
  • 缺点: 不支持集群.

Dubbo 入门案例

创建工程

f9ba87a5a7758e2841b2247a40e49991.png

修改 pom.xml文件添加 Dubbo 的坐标

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
  4. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>com.sxt</groupId>
  7. <artifactId>01-dubbo-provider-demo</artifactId>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <dependencies>
  10. <!-- https://mvnrepository.com/artifact/com.alibaba/dubbo -->
  11. <dependency>
  12. <groupId>com.alibaba</groupId>
  13. <artifactId>dubbo</artifactId>
  14. <version>2.5.4</version>
  15. </dependency>
  16. <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
  17. <dependency>
  18. <groupId>com.101tec</groupId>
  19. <artifactId>zkclient</artifactId>
  20. <version>0.10</version>
  21. </dependency>
  22. </dependencies>
  23. </project>

关于版本的问题。在 Dubbo 的 的 2.5.3 版本中对于 spring的支持是 2.5.x 。替换低版本的 spring

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instan
  3. ce"
  4. xsi:schemaLocation="http://maven.apache.org/P
  5. OM/4.0.0
  6. http://maven.apache.org/xsd/maven-4.0.0.xsd">
  7. <modelVersion>4.0.0</modelVersion>
  8. <groupId>com.bjsxt</groupId>
  9. <artifactId>01-dubbo-provier-demo</artifactId>
  10. <version>0.0.1-SNAPSHOT</version>
  11. <dependencies>
  12. <!-- https://mvnrepository.com/artifact/com.alibaba/dub bo -->
  13. <dependency>
  14. <groupId>com.alibaba</groupId>
  15. <artifactId>dubbo</artifactId>
  16. <version>2.5.3</version>
  17. <!-- 去除依赖 -->
  18. <exclusions>
  19. <exclusion>
  20. <groupId>org.springframework</groupId>
  21. <artifactId>spring</artifactId>
  22. </exclusion>
  23. </exclusions>
  24. </dependency>
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-context</artifactId>
  28. <version>4.1.6.RELEASE</version>
  29. </dependency>
  30. </dependencies>
  31. </project>

创建服务

  • 服务:项目中对外界所提供的能力
  • 服务标准:接口+ 接口实现类
  • 接口:对外界描述当前服务的信息,如 协议类型,服务提供者的地址,发布的服务名称,服务中方法名称等信息。
  • 接口实现类:对发布的接口中的标准的具体实现

69e7187811c318d49c057066aed5dd39.png

842701ce00a67a294c93f01bd8a86ba9.png

配置applocation-dubbo.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:aop="http://www.springframework.org/schema/aop"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  8. xsi:schemaLocation="http://www.springframework.org/schema/beans
  9. http://www.springframework.org/schema/beans/spring-beans.xsd
  10. http://www.springframework.org/schema/aop
  11. http://www.springframework.org/schema/aop/spring-aop.xsd
  12. http://www.springframework.org/schema/tx
  13. http://www.springframework.org/schema/tx/spring-tx.xsd
  14. http://www.springframework.org/schema/context
  15. http://www.springframework.org/schema/context/spring-context.xsd
  16. http://code.alibabatech.com/schema/dubbo
  17. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  18. <dubbo:application name="myprovider"/>
  19. <!--配置注册中心 -->
  20. <!-- address:注册中心的IP和端口-->
  21. <!--protocol:注册中心的类型 -->
  22. <!--如果zookeeper是一个集群,需要将集群中的所有IP和端口号添加在该属性中-->
  23. <dubbo:registry address="192.168.176.128:2181,192.168.176.128:2182,192.168.176.128:2183" protocol="zookeeper">
  24. </dubbo:registry>
  25. <!--配置协议与端口 -->
  26. <dubbo:protocol name="dubbo" port="20880"></dubbo:protocol>
  27. <!--配置注册接口 -->
  28. <dubbo:service interface="com.sxt.service.DubboService" ref="dubboServiceImpl"></dubbo:service>
  29. <bean id="dubboServiceImpl" class="com.sxt.service.impl.DubboServiceImpl"></bean>
  30. </beans>

测试类Start

使用 DubboAPI 启动 Provider

Main.main(args);

特点:

  • 1,自带线程阻塞
  • 2,支持优雅关系

6950f76fecc9f4bd29b7ca4fa55a907d.png

启动 Zookeeper 注册中心

61e0ebf6e2c5cc0c5c92bea2d9cbd913.png

通过 SpringAPI 启动容器

在 ApplicationContext 接口中未定义 start()方法,需要时用接口实现类

启动时异常信息JDK 版本不符合要求。注意 dubbo2.5.4 要求 jdk 必须是 1.8 或者以上的版本

8f749805fc13d855436e9ff58830c8c2.png

Dubbo 启动时需要依赖 zookeeper 基于 java 语言的客户单工具

34a78c7f5971b92a7ccba1afe8942866.png

修改 POM 文件添加 zkclient 坐标

  1. <!-- com.101tec " zkclient -->
  2. <dependency>
  3. <groupId>com.101tec</groupId>
  4. <artifactId>zkclient</artifactId>
  5. <version>0.10</version>
  6. </dependency>

注册中心中的服务发布信息

  • 1.使用 zkCli.sh 连接 ZooKeeper 服务
  • 2.查看dubbo节点下的信息,ls /dubbo/服务接口名称/providers

显示结果如下:

  1. dubbo%3A%2F%2F192.168.2.108%3A20880%2Fcom.bjsxt.service.DubboService%3Fanyh
  2. ost%3Dtrue%26application%3Dmyprovider%26dubbo%3D2.5.4%26generic%3Dfalse%26interfa
  3. ce%3Dcom.bjsxt.service.DubboService%26methods%3DshowMsg%26pid%3D3936%26side%3
  4. Dprovider%26timestamp%3D1536807891514

转换结果如下:

  1. dubbo://192.168.2.108:20880/com.bjsxt.service.DubboService?anyhost=true&application=m
  2. yprovider&dubbo=2.5.4&generic=false&interface=com.bjsxt.service.DubboService&methods=sh
  3. owMsg&pid=3936&side=provider×tamp=1536807891514

Dubbo Admin 管理平台搭建

安装 Admin 管理

  • Admin 管理平台是一个 war 项目
  • 在 Linux 系统中安装 JDK 以及 tomcat。
  • 使用 unzip 命令解压 zip 压缩包。
  • 删除 tomcat/webapps 目录下的 ROOT 目录
  • 将解压出来的 ROOT 目录拷贝到 tomcat/webapps 目录下

配置 Admin 管理平台

vim编辑 ROOT/dubbo.properties

672915d47c8051bd4f7fa690e32b525a.png

9b6df3a2cdcf08926a14d582bb370231.png
  • Address:zookeeper 的链接地址。如果是集群给一个就可以了
  • Root.password 设置默认 root 用户的密码
  • Guest.password 设置默认 guest 用户的密码

访问 Admin 管理平台

http://192.168.176.128:8080/

7368741418604ee00f55461f2189c1db.png

创建 Consumer

创建工程

1f28048510a5fd0bb4d9a1a7426d3939.png

修改pom.xml文件

31c17c9501f81cacbd39cc6de7a459de.png

编写 Consumer接口+实体类

466f3902226985ec71d7b6420717c39a.png

43dc4e167953091516ce027095665970.png

配置 applicationContext.xml

663842fba836aa982d13b64a26fd065e.png

测试 类ConsumerTest

74740bb7ed717b483f5c72f0a8fba468.png

运行结果:

d26bf43f47334e6dd5f0986fbc10db86.png
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/54065
推荐阅读
相关标签
  

闽ICP备14008679号