转载

springboot+dubbo+zookeeper构建的分布式调用服务框架


整体架构说明:
1.一个父项目 package类型为 pom,依赖的jar:spring-boot-starter-parent/spring-boot-starter-web/spring-boot-starter-dubbo
2.三个子项目,包括:api(接口项目,项目中提供抽象接口) 、
  provider(服务提供项目,基于springboot的)、
  consumer(服务消费项目,基于springboot的,供最上层调用)
3.需要启动本地的zookeeper环境、端口为2181
4.整个项目是在eclipse上面搭建,需要maven插件的支持,需要jdk1.7及其以上的版本

架构图(取的名字有些挫,但就只是为了搭建环境使用的,就随便取个名字吧):

 

1.先创建父级依赖工程:sdz-parent,packaging类型为pom,依赖的jar包pom文件如下:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.4.1.RELEASE</version>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.7</java.version>
    <dubbo-spring-boot>1.0.0</dubbo-spring-boot>
  </properties>
  
  <dependencies>
      <!-- springbootweb启动需要的jar依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!--springboottest需要的jar依赖  -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    <!-- Spring Boot Dubbo 依赖 -->
    <dependency>
        <groupId>io.dubbo.springboot</groupId>
        <artifactId>spring-boot-starter-dubbo</artifactId>
        <version>${dubbo-spring-boot}</version>
    </dependency>
    <!-- Junit -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
</dependencies>

2.再创建sdz-api项目,选择父项目为sdz-parent,api项目中主要存放公共接口以及相关实体(其实可以再构建一个模块,用来存放entity),如下图:

 

3.随后创建sdz-provider项目,也选择父项目为sdz-parent,依赖于sdz-api项目,需要在pom.xml中添加如下代码:

<dependencies>
      <dependency>
          <groupId>com.sushi</groupId>
          <artifactId>sdz-api</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
  </dependencies>

provider项目中主要做的事情就是提供接口的具体实现,如下图:

 

其中@Service是com.alibaba.dubbo.config.annotation.Service包下面的,标识该类为服务提供类。其中该项目的application.properties内容如下:

#应用端口
server.port=7001
#dubbo应用名称
spring.dubbo.application.name=dubbo-provider
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#暴露服务方式
spring.dubbo.protocol.name=dubbo
#暴露服务端口
spring.dubbo.protocol.port=20880
#暴露服务包
spring.dubbo.scan=com.sushi.api.impl

 

4.最后建立sdz-consumer项目,也选择父项目为sdz-parent,该项目为服务消费方。

该项目依赖于sdz-api项目,需要在pom.xml中添加如下代码:

<dependencies>
      <dependency>
          <groupId>com.sushi</groupId>
          <artifactId>sdz-api</artifactId>
          <version>0.0.1-SNAPSHOT</version>
      </dependency>
  </dependencies>

消费代码如下图:

其中@Reference是com.alibaba.dubbo.config.annotation.Reference包下面的,表示依赖的服务。该项目的application.properties内容如下:

server.port=7002
#应用名称
spring.dubbo.application.name=dubbo-consumer
#注册中心地址
spring.dubbo.registry.address=zookeeper://127.0.0.1:2181
#dubbo注解扫描路径
spring.dubbo.scan=com.sushi.controller

 

测试步骤:

1.先启动本地的zookeeper服务,D:\java\zookeeper-3.3.6\bin\zkServer.cmd,保证能够正常运行,如下:

2.再启动sdz-provider项目,最后启动sdz-consumer项目

3.访问http://192.168.3.195:7002/user/findUsersByCount?count=10,得到下面结果:

至此springboot集成dubbo+zookeeper完毕,完整项目下载:

https://download.csdn.net/download/u013315062/10808053

如有任何疑问:请加qq:2281558656,欢迎探讨技术。

正文到此结束
本文目录