Dubbo 的环境搭建和基本使用方法

环境搭建

在生产环境下,Dubbo 依赖的环境非常少,只依赖一个注册中心和一个管理后台。其中,Dubbo 只强制依赖注册中心,管理后台是一个非强制依赖的管理工具。

接下来,我们就以 Zookeeper 为注册中心,搭建 Dubbo 环境,包括安装注册中心和管理后台。

温馨提示

本文搭建的是有注册中心的生产环境,不是无注册中心的Demo环境。

安装注册中心

  1. 从 Zookeeper 官网下载一个最新最稳定版本的安装包。

zookeeper.apache.org/releases.ht…

  1. 将下载好的安装包解压至本地,并进入conf目录。
 

shell

复制代码

cd apache-zookeeper-3.7.1-bin/conf/

  1. conf目录下,创建zoo.cfg文件,并填入以下配置信息。
 

properties

复制代码

tickTime=2000 initLimit=10 syncLimit=5 dataDir=//这里替换自己的目录 clientPort=2181

注意,上面的dataDir是存储 Zookeeper 数据的目录,要替换成自己的本地目录。

  1. 进入bin目录。
 

shell

复制代码

cd ../bin/

  1. 执行以下命令,启动 Zookeeper 服务。
 

shell

复制代码

./zkServer.sh start

执行完此命令后,如果出现以下信息,就表示启动成功。

 

shell

复制代码

ZooKeeper JMX enabled by default Using config: /Users/majunwei/Downloads/apache-zookeeper-3.7.1-bin/bin/../conf/zoo.cfg Starting zookeeper ... STARTED

至此,注册中心就安装完成并启动了。

安装管理后台

  1. 从 GitHub 上下载 dubbo-admin 的发布包。

github.com/apache/dubb…

  1. 修改 dubbo-admin-server/src/main/resources/application.properties 文件,指定注册中心地址、服务端口以及管理员用户名密码。
 

properties

复制代码

admin.registry.address=zookeeper://127.0.0.1:2181 admin.config-center=zookeeper://127.0.0.1:2181 admin.metadata-report.address=zookeeper://127.0.0.1:2181 server.port=9090 admin.root.user.name=root admin.root.user.password=root

  1. 构建。
 

shell

复制代码

mvn clean package -Dmaven.test.skip=true

  1. 启动管理后台。
 

shell

复制代码

mvn --projects dubbo-admin-server spring-boot:run 或 cd dubbo-admin-distribution/target; java -jar dubbo-admin-0.1.jar

访问 http://localhost:9090 ,能正常打开,即安装成功了。

温馨提示

如果操作管理后台时出现以下异常提示信息:

image.png

在dubbo-admin-server的pom.xml中添加以下依赖,重新打包启动即可。

 

xml

复制代码

<dependency> <groupId>javax.xml.bind</groupId> <artifactId>jaxb-api</artifactId> <version>2.2.7</version> </dependency>

基本使用方法

环境搭建完成之后,下面看 Dubbo 的基本使用方法。在使用 Dubbo 时,通常情况下需要三个项目,服务接口、服务提供者和服务消费者:

  • 服务接口用于定义抽象接口;
  • 服务提供者引用服务接口,并实现服务接口里的抽象接口;
  • 服务消费者引用服务接口,并通过服务接口调用服务提供者中的实现。

服务接口

下面开始创建服务接口项目,并定义抽象接口。

  1. 新建服务接口项目,dubbo_demo_api。

  2. 定义抽象接口,DemoService

 

java

复制代码

package com.yuqiao.deeplearningdubbo.demo.api; public interface DemoService { public String sayHello(String name); }

3,将dubbo_demo_api/pom.xml中的打包方式设置为jar

 

xml

复制代码

<packaging>jar</packaging>

至此,服务接口项目就创建完了,它只包括抽象接口的定义,非常简单。

服务提供者

下面创建服务提供者项目,并引用服务接口项目,实现抽象接口。

  1. 新建服务提供者项目,dubbo_demo_provider。

  2. 在 dubbo_demo_provider/pom.xml 中,添加以下配置(核心是添加了接口项目、Dubbo、Zookeeper、Spring 的依赖)。

 

xml

复制代码

<properties> <spring.version>4.1.9.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>com.yuqiao.deeplearningdubbo</groupId> <artifactId>dubbo_demo_api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.59.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.4.1</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.4</version> </dependency> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!--spring web mvc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.2.0</version> </dependency> </dependencies>

  1. 新建DemoServiceImpl类,并实现抽象接口DemoService
 

java

复制代码

package com.yuqiao.deeplearningdubbo.demo.provider; import com.yuqiao.deeplearningdubbo.demo.api.DemoService; public class DemoServiceImpl implements DemoService { @Override public String sayHello(String name) { return "Hello " + name; } }

  1. 在 dubbo_demo_provider/src/main/resources 下新建 dubbo_provider.xml,并填入以下内容(注意要填入自己的 Zookeeper 地址)。
 

xml

复制代码

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!-- 服务提供方应用名 --> <dubbo:application name="provider-app" /> <!-- 使用zookeeper注册中心暴露服务地址 --> <dubbo:registry protocol="zookeeper" address="zookeeper://127.0.0.1:2181" /> <!-- 使用随机端口暴露服务,防止和本地其他服务冲突,可以不填,默认20880 --> <dubbo:protocol name="dubbo" port="-1" /> <!-- 配置DemoService的实现类Bean --> <bean id="demoService" class="com.yuqiao.deeplearningdubbo.demo.provider.DemoServiceImpl" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service interface="com.yuqiao.deeplearningdubbo.demo.api.DemoService" ref="demoService" /> </beans>

  1. 新建服务提供者的启动类 Provider
 

java

复制代码

package com.yuqiao.deeplearningdubbo.demo.provider; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"dubbo_provider.xml"}); context.start(); System.in.read(); } }

  1. 运行 Provider,成功启动后就能在管理后台看到服务提供者的信息了。

image.png

至此,服务提供者项目就完成了。

服务消费者

下面创建服务消费者项目,并引用抽象接口,调用服务提供者。

  1. 创建服务消费者项目,dubbo_demo_consumer。

  2. 在 dubbo_demo_consumer/pom.xml 中添加如下配置(核心是添加了接口项目、Dubbo、Zookeeper、Spring 的依赖)。

 

xml

复制代码

<properties> <spring.version>4.1.9.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>com.yuqiao.deeplearningdubbo</groupId> <artifactId>dubbo_demo_api</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId> <version>4.1.59.Final</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.dubbo/dubbo --> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo</artifactId> <version>2.7.4.1</version> </dependency> <dependency> <groupId>com.101tec</groupId> <artifactId>zkclient</artifactId> <version>0.4</version> </dependency> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <!--spring web mvc--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.9</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.2.0</version> </dependency> </dependencies>

  1. 在 dubbo_demo_consumer/src/main/resources 下新建 dubbo_consumer.xml,并填入以下内容(注意要填入自己的 Zookeeper 地址)。
 

xml

复制代码

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> <!-- 消费方应用名 --> <dubbo:application name="consumer-app" /> <!-- 使用zookeeper注册中心发现服务 --> <dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 生成远程服务代理,可以和本地bean一样使用demoService --> <dubbo:reference id="demoService" interface="com.yuqiao.deeplearningdubbo.demo.api.DemoService" timeout="1000" retries="0" /> </beans>

  1. 新建服务消费者的启动类 Consumer
 

java

复制代码

package com.yuqiao.deeplearningdubbo.demo.consumer; import com.yuqiao.deeplearningdubbo.demo.api.DemoService; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Consumer { static ClassPathXmlApplicationContext context; public static void main(String[] args) throws Exception { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"dubbo_consumer.xml"}); context.start(); DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理 String result = demoService.sayHello("world"); // 调用远程方法 System.out.println( result ); //打印调用结果 Thread.sleep(10000000l); } }

  1. 运行 Consumer,即可成功调用服务消费者,并输出以下结果。
 

复制代码

Hello world

至此,Dubbo 的环境搭建和基本使用方法,就全部介绍完了。

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值