使用Spring Boot+Dubbo+Zookeeper搭建第一个分布式项目(详细介绍如何搭建分布式项目,上篇)

2022-06-14 09:45:46

一、概述

  • 最近学习了PRC分布式服务框架-Dubbo,然后结合之前所学的Spring Boot和Zookeeper来搭建一个Hello Dubbo 分布式服务项目样例。
  • 我们分上篇和下篇进行讲解,此篇是讲解如何搭建API项目已经服务提供者项目。

二、搭建步骤

步骤一:创建服务接口项目,创建一个名为hello-dubbo-service-user-api 的Maven项目,该项目只负责定义接口,创建好项目后如下图所示。
在这里插入图片描述
步骤二:在pom.xml下添加以下配置。

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
</properties>

步骤三:创建 com.czd.hello.dubbo.service.user.api 包,并且在此包下创建一个UserService类,如下所示。

【1】创建好后如下图所示:
在这里插入图片描述
【2】UserService类代码如下:

package com.czd.hello.dubbo.service.user.api;

/**
 * @author czd
 */
public interface UserService {
    String sayHello();
}

步骤四:创建服务提供者项目,创建一个名为hello-dubbo-service-user-provider 的Spring Boot项目,该项目主要用于实现接口,创建好项目后如下图所示。
在这里插入图片描述
步骤五:在pom.xml下添加以下配置。

<dependencies>
   <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter</artifactId>
     </dependency>

     <!--状态检查的依赖,(健康监控)配置和使用-->
     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-actuator</artifactId>
     </dependency>

     <dependency>
         <groupId>com.alibaba.boot</groupId>
         <artifactId>dubbo-spring-boot-starter</artifactId>
         <version>0.2.0</version>
     </dependency>
     <dependency>
         <groupId>com.alibaba.boot</groupId>
         <artifactId>dubbo-spring-boot-actuator</artifactId>
         <version>0.2.0</version>
     </dependency>

     <!--导入自己接口的依赖-->
     <dependency>
         <groupId>com.czd</groupId>
         <artifactId>hello-dubbo-service-user-api</artifactId>
         <version>1.0.0-SNAPSHOT</version>
     </dependency>

     <dependency>
         <groupId>org.springframework.boot</groupId>
         <artifactId>spring-boot-starter-test</artifactId>
         <scope>test</scope>
     </dependency>
 </dependencies>

步骤六:在resources目录下创建application.yml配置文件,并且添加以下内容。

# Spring boot application
spring:
  application:
    #原则上和项目名称一致
    name: hello-dubbo-service-user-provider
# UserService service version
user:
  service:
    version: 1.0.0

# Dubbo Config properties
dubbo:
  # Base packages to scan Dubbo Component:@com.alibaba.dubbo.config.annotation.Service
  scan:
    basePackages: com.czd.hellodubboserviceuserprovider.impl
  # ApplicationConfig Bean
  application:
    #原则上和项目名称一致,并且一般id和name是一样的
    id: hello-dubbo-service-user-provider
    name: hello-dubbo-service-user-provider
    #qos是dubbo的在线运维命令
    qos-port: 22222
    qos-enable: true
  # ProtocolConfig Bean
  protocol:
    id: dubbo
    name: dubbo
    port: 12345
    status: server
  # RegistryConfig Bean
  registry:
    id: zookeeper
    address: zookeeper://192.168.43.86:2181?backup=192.168.43.86:2182,192.168.43.86:2183

# Enables Dubbo All Endpoints
management:
  endpoint:
    dubbo:
      enabled: true
    dubbo-shutdown:
      enabled: true
    dubbo-configs:
      enabled: true
    dubbo-services:
      enabled: true
    dubbo-references:
      enabled: true
    dubbo-properties:
      enabled: true
  # Dubbo Health
  health:
    dubbo:
      status:
        # StatusChecker Name defaults (default : "memory", "load" )
        # 状态检查器名称默认值(默认值:“内存”、“加载”)
        defaults: memory
        # StatusChecker Name extras (default : empty )
        extras: load,threadpool

步骤七:在com.czd.hellodubboserviceuserprovider包下创建一个impl包,并且在此包下创建UserServiceImpl类。

【1】创建好后如下图所示:
在这里插入图片描述
【2】UserServiceImpl类代码如下:

package com.czd.hellodubboserviceuserprovider.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.czd.hello.dubbo.service.user.api.UserService;

/**
 * @author czd
 */
@Service(version = "${user.service.version}")
public class UserServiceImpl implements UserService {
    @Override
    public String sayHello() {
        return "Hello Dubbo";
    }
}

步骤八:在HelloDubboServiceUserProviderApplication项目驱动类添加以下代码。

// 启动 Provider 容器,注意这里的 Main 是 com.alibaba.dubbo.container 包下的
 Main.main(args);

完整HelloDubboServiceUserProviderApplication类如下所示:

package com.czd.hellodubboserviceuserprovider;
import com.alibaba.dubbo.container.Main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloDubboServiceUserProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloDubboServiceUserProviderApplication.class, args);
        // 启动 Provider 容器,注意这里的 Main 是 com.alibaba.dubbo.container 包下的
        Main.main(args);
    }
}

下篇传送门:https://blog.csdn.net/weixin_42146366/article/details/90268555

  • 作者:住手丶让我来
  • 原文链接:https://blog.csdn.net/weixin_42146366/article/details/90268062
    更新时间:2022-06-14 09:45:46