Dubbo+SpringBoot+Zookeeper(注解模式)

Zookeeper环境搭建(Windows)

Demo源码【dubbo-provider/dubbo-consumer】地址:
    https://github.com/duanjunhua/spring-boot
Zookeeper插件地址:
    http://www.massedynamic.org/eclipse/updates/

搭建zookeeper环境:
  • 在Apache(https://zookeeper.apache.org/)网站下载Zookeeper包,此处使用的是zookeeper-3.4.12.tar.gz版本

  • 复制一份zoo_sample.cfg并重命名为zoo.cfg,并修改以下内容:
    Zookeeper配置

  • 配置zookeeper启动环境:

      1. 新建环境变量:ZOO_HOME=F:\MichaelDuan\zookeeper\zookeeper		//zookeeper解压(安装)的目录
      2. 在Path中添加:%ZOO_HOME%\bin;
    
  • 可以启动zookeeper以及查看启动状态:

    • zkZerver.cmd启动: Zookeeper启动
    • 进入客户端查看注册中心信息:
      客户端查看注册中心服务
配置Dubbo服务端
  • 项目依赖

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dubbo.demo</groupId>
    <artifactId>dubbo-provider</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
      <!-- Spring Boot 启动父依赖 -->
      <parent>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-starter-parent</artifactId>
          <version>1.5.1.RELEASE</version>
      </parent>
      
      <properties>
          <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
      </properties>
      
      <dependencies>
      	<!-- Spring Boot Dubbo 依赖 -->
          <dependency>
              <groupId>io.dubbo.springboot</groupId>
              <artifactId>spring-boot-starter-dubbo</artifactId>
              <version>${dubbo-spring-boot}</version>
          </dependency>
    
          <!-- Spring Boot Web 依赖 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-web</artifactId>
          </dependency>
    
          <!-- Spring Boot Test 依赖 -->
          <dependency>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-test</artifactId>
              <scope>test</scope>
          </dependency>
    
          <!-- Junit -->
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
          </dependency>
      	</dependencies>
      </project>
    
  • 项目结构:
    项目结构

  • 配置文件:
    Dubbo服务端配置

  • 服务端的Service实现类必须导入的为Dubbo的Service

      package com.dubbo.demo.service.impl;
      
      import com.alibaba.dubbo.config.annotation.Service;
      import com.dubbo.demo.service.HelloWorldService;
      /**
       *	注册为Dubbo服务,导入的为Dubbo Service注解 
       */
      @Service(version="1.0")
      public class HelloWorldServiceImpl implements HelloWorldService {
      
      	public String hello(String name) {
      		return "Hello World! " + name;
      	}
      }
    
Dubbo客户端
  • 依赖

      <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.dubbo.demo</groupId>
        <artifactId>dubbo-consumer</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
          <!-- Spring Boot 启动父依赖 -->
      	<parent>
      		<groupId>org.springframework.boot</groupId>
      		<artifactId>spring-boot-starter-parent</artifactId>
      		<version>1.5.1.RELEASE</version>
      	</parent>
    
      	<properties>
      		<dubbo-spring-boot>1.0.0</dubbo-spring-boot>
      	</properties>
    
      	<dependencies>
      		<!-- Spring Boot Dubbo 依赖 -->
      		<dependency>
      			<groupId>io.dubbo.springboot</groupId>
      			<artifactId>spring-boot-starter-dubbo</artifactId>
      			<version>${dubbo-spring-boot}</version>
      		</dependency>
    
      		<!-- Spring Boot Web 依赖 -->
      		<dependency>
      			<groupId>org.springframework.boot</groupId>
      			<artifactId>spring-boot-starter-web</artifactId>
      		</dependency>
    
      		<!-- Spring Boot Test 依赖 -->
      		<dependency>
      			<groupId>org.springframework.boot</groupId>
      			<artifactId>spring-boot-starter-test</artifactId>
      			<scope>test</scope>
      		</dependency>
      		
      		<!-- Swagger UI dependency -->
      		<dependency>
      			<groupId>io.springfox</groupId>
      			<artifactId>springfox-swagger2</artifactId>
      			<version>2.6.1</version>
      		</dependency>
    
      		<dependency>
      			<groupId>io.springfox</groupId>
      			<artifactId>springfox-swagger-ui</artifactId>
      			<version>2.6.1</version>
      		</dependency>
    
      		<!-- Junit -->
      		<dependency>
      			<groupId>junit</groupId>
      			<artifactId>junit</artifactId>
      		</dependency>
      	</dependencies>
      </project>
    
  • 项目结构:
    客户端项目结构

  • Reference服务:

      package com.dubbo.demo.service;
      
      import org.springframework.stereotype.Component;
      
      import com.alibaba.dubbo.config.annotation.Reference;
      
      @Component
      public class HelloConsumerService {
      
      	@Reference(version="1.0")
      	HelloWorldService helloWorldService;		//不能在Controller中直接Reference,需要使用Component优先加载Bean,否则会报空指针问题
      	
      	public String rest(String name) {
      		return helloWorldService.hello(name);
      	}
      }
    
Dubbo控制台
  • 下载Dubbo war包 [dubbo-admin-2.5.4.war],并将war包解压到tomcat webapps路径下并修改dubbo-admin/WEB-INF/dubbo.properties如下配置:

      dubbo.registry.address=zookeeper://127.0.0.1:2181		//配置Zookeeper中心地址,集群时填写集群地址
      dubbo.admin.root.password=root									//客户端默认用户名为root
      dubbo.admin.guest.password=root									//客户端密码
    
  • 启动tomcat,并打开控制台,如下:
    控制台界面

  • 启动Dubbo服务端并查看:

    • Zookeeper注册中心服务:
      Eclipse注册服务结果
    • 控制台显示: 服务应用界面
      服务详细图
  • 启动客户端,并查看结果:

    • Swagger 界面:
      Swagger UI
  • Dubbo控制台:
    控制台客户端

  • 测试结果:
    测试结果

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值